Unity的AssetDatabase路径格式

开发环境

windows 7

Unity 5.3 及更高版本

前言

使用AssetDatabase.LoadAnimatorController.CreateAnimatorControllerAtPath等Unity内置Editor API进行文件操作时,经常碰到加载资源为null,或报路径不存在!

经过断点调试,发现绝大部分错误都是因为路径的分隔符存在两种:"/"和"\"。

我们使用 System.IO.Path 这个API得到的路径,其实也是以"\"分隔路径的。

我们在windows下打开资源管理器,某个目录或文件的路径为:e:\Code\GameFramework\ 或 \\192.168.80.100\XXX\

但是使用Unity的API,打印Application.dataPath 时,打印出:E:/xxx/client/trunk/Project/Assets,所以可知,它的路径和windows是反的,所以当我们使用的路径不符合Unity的规范时,经常会报资源加载失败。

比如某个FBX的路径为:Assets/Art/Characters/Wing/fbx_3005/[email protected] ,而如果你的输入的路径或拼接的路径不符合规范,那么极有可能会加载文件失败。

规范化路径

提供一个方法,把路径格式成Unity可读取的路径格式:

/// <summary>
    /// 格式化路径成Asset的标准格式
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static string FormatAssetPath(string filePath)
    {
        var newFilePath1 = filePath.Replace("\\", "/");
        var newFilePath2 = newFilePath1.Replace("//", "/").Trim();
        newFilePath2 = newFilePath2.Replace("///", "/").Trim();
        newFilePath2 = newFilePath2.Replace("\\\\", "/").Trim();
        return newFilePath2;
    }
时间: 2024-12-22 23:37:02

Unity的AssetDatabase路径格式的相关文章

Unity各平台路径总结

路径是Unity开发中令人头疼的一个问题,根据我的开发经验,现将开发中遇到的路径问题总结如下: 1. 如何读取Application.streamingAssetsPath下的文件? Edit.iOS平台可以使用File类来读取.Android平台无法使用File类读取. 通用的方式为使用WWW进行加载,并且除了Android平台以外,其他平台路径之前需要加"file://". 2. 权限问题  Application.persistentDataPath路径下的文件可读可写,Appl

MyBatis Java不同方式加载文件时的路径格式问题、Mybatis中加载.properties文件

public class LoadPropTest { public static void main(String[] args) throws IOException { //一.Properties的load方法加载文件输入流 Properties props=new Properties(); File file1=new File("F:/Program Files/Java/IdeaProjects/MyBatisDemo/src/db.properties"); File

unity文件操作路径

Unity3D中的资源路径: Application.dataPath:此属性用于返回程序的数据文件所在文件夹的路径.例如在Editor中就是Assets了. Application.streamingAssetsPath:此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径. Application.persistentDataPath:此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件. android平台 Application

Unity四种路径总结

四种路径的权限:                                            Application.dataPath 包含游戏数据文件夹的路径(只读) Application.persistentDataPath 包含一个持久数据目录的路径(可读可写) Application.streamingAssetsPath  包含一个到StreamingAssets文件夹的路径.(读) Application.temporaryCachePath 包含一个临时数据/缓存目录的

Qt之OpenSSL(有pro文件的路径格式)

简述 OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. 简述 下载安装 使用 更多参考 下载安装 进入Win32 OpenSSL下载页面,选择适合自己的版本进行下载. 下载完成之后进行安装,我选择的目录为D:\Program Files\OpenSSL-Win32.进入安装目录,可以看到主要包含以下文件夹: lib:包含了所有的库文件(例如:libeay32.lib.ssleay32.lib).

unity插件开发——AssetDatabase

AssetDatebase也是一个静态类,他的作用是管理整个工程的所有文件(一般成为“资产”).直观地说就是管理整个project窗口中的所有内容,比如,你可以增加.删除.修改文件等等. 这里有几个常常用到: CreateAsset:创建文件 CreateFolder:创建文件夹 DeleteAsset:删除文件 GetAssetPath:获取文件相对于Assets所在目录的相对位置,如“Assets/Images/test.png” LoadAssetAtPath:加载文件 Refresh:刷

Unity 安卓+sqlite路径

Path ="URI=file:"+ Application.streamingAssetsPath+"/DB/mydb.db";Path ="Data Source="+ Application.streamingAssetsPath+"/DB/mydb.db";Path ="Data Source="+ Application.persistentDataPath+"/DB/mydb.db&q

unity 打开指定路径文件夹

public static void OpenDirectory(string path){ if (string.IsNullOrEmpty(path)) return; path=path.Replace("/", "\\"); if (!Directory.Exists(path)){ Debug.LogError("No Directory: " + path); return; } //可能360不信任 System.Diagnosti

[C#]关于路径的几则笔记

测试环境 本文基于windows下的操作 windows 7 x64 unity 5.3.7p4 获取文件的路径 比如一个文件的路径为:e:\3d\client\trunk\Product\Apps\Windows\v0007_1452\qxz_x86_dev.exe 我们想要获取它的路径,可以通过以下方式: 使用Path var filePath = @"e:\3d\client\trunk\Product\Apps\Windows\v0007_1452\qxz_x86_dev.exe&quo