unity的assetbundle的自动命名,以我的命名lua为例

Posted 三页菌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity的assetbundle的自动命名,以我的命名lua为例相关的知识,希望对你有一定的参考价值。

    static string testDir = "Assets/LuaScripts/";
    [MenuItem("测试/lua命名")]
    public static void MakeLuaBundleNames()
    {
        //获取testDir路径下的所有文件
        foreach (var filepath in Directory.GetFiles(testDir, "*.*", SearchOption.AllDirectories))
        {
            //排除.meta文件
            if (filepath.EndsWith(".meta")) continue;
            //获得文件
            var importer = AssetImporter.GetAtPath(filepath);
            //排除一些空文件比如文件夹之类
            if (importer == null)
            {
                //Log.Error("Not found: {0}", filepath);
                continue;
            }
            //获取文件在此testdir中的具体路径
            var bundleName = filepath.Substring(testDir.Length, filepath.Length - testDir.Length);
            //Debug.Log(bundleName);
            /************************************我的lua的命名规则**************************************/
            //1.最外层的不会被命名(最外层会有些其他文件)[一个"\"不会被命名]
            //2.命名的则ablua/lua_第一层目录_第二层目录,        例: ablua/lua_ablua_battle
            //3.目前就2层目录
            char b = \\;
            //c# linq语言查询某个字符的个数
            //int num = (from q in bundleName where q.Contains(b) select q).Count();
            //使用lamda表达式
            int count = bundleName.Count(ch => ch == b);
            if (count == 2)
            {
                string[] str = bundleName.Split(\\);
                string luaName = "ablua/lua_" + str[0] + "_" + str[1];
                //对ab名进行赋值
                importer.assetBundleName = luaName;
            }
            /*********************************************************************************************/

        }
        Debug.Log("完毕");
    }

 

以上是关于unity的assetbundle的自动命名,以我的命名lua为例的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D中实现按资源名称自动化命名打包AssetBundle

unity实现按文件夹自动打包assetbundle

unity热更新AssetBundle框架设计_框架篇

Unity3d 5.x AssetBundle打包与加载

Unity资源导入自动生成AssetBundle Name

Unity 5.3 Assetbundle热更资源