zoukankan      html  css  js  c++  java
  • Unity的AssetDatabase路径格式

    开发环境

    windows 7

    Unity 5.3 及更高版本

    前言

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

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

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

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

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

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

    规范化路径

    提供一个方法,把路径格式成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;
        }
  • 相关阅读:
    C# 测试 modbusTCP 经验积累
    C#制作透明色GIF动画的类
    C# esc退出窗体
    让PPT演示文稿循环播放
    C# hex 转 float
    C# PowerPoint操作的基本用法。
    将listview的checkbox改成单选。
    google搜索栏设置
    如何在C++中实现Deprecated API Anthony
    只能用new生成的对象 Anthony
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/6780212.html
Copyright © 2011-2022 走看看