unity5代码设置AssetBundleName的方法

 

最近用上了unity5。但是要给美术策划编辑模型或者配置。所以同时也需要在他们编辑好后。他们直接打包。但是他们给我反应。打包命名太麻烦。所以我写了个工具

自动明年AssetBundle的name和后缀名。如下图

1

 

但是我找。并没有找到unity有这个功能api。所以查了下资料。发现这个那么是保存在meta文件里。所以。我们用io来修改meta即可。

代码如下

/// <summary>
    /// 给Asset命名
    /// </summary>
    /// <param name="houName"></param>
    static void SetAssetBundleName(string houName)
    {
        //命名assetBundle名字
        string pathsss = Application.dataPath + "/Asset/";
        Debug.LogError(pathsss);
        var files = Directory.GetFiles(pathsss, "*."+houName+".meta");
        foreach (var file in files)
        {
            string name = file;
            name = name.Replace(pathsss, "");
            name = name.Replace("." + houName + ".meta", "");
            DoSetAssetBundleName(name, file);
        }
    }

    /// <summary>
    /// 修改bundle名字
    /// </summary>
    /// <param name="path"></param>
    static void DoSetAssetBundleName(string name,string path)
    {
        path = path.Replace("\\", "/");

        StreamReader fs = new StreamReader(path);
        List<string> ret = new List<string>();
        string line;
        while ((line = fs.ReadLine()) != null)
        {
            line = line.Replace("\n", "");
            if (line.IndexOf("assetBundleName:") != -1)
            {
                line = "  assetBundleName: Data/" + name.ToLower();

            }
            if (line.IndexOf("assetBundleVariant:") != -1)
            {
                line = "  assetBundleVariant: " + "bundle".ToLower();

            }
            ret.Add(line);
        }
        fs.Close();

        File.Delete(path);

        StreamWriter writer = new StreamWriter(path + ".tmp");
        foreach (var each in ret)
        {
            writer.WriteLine(each);
        }
        writer.Close();

        File.Copy(path + ".tmp", path);
        File.Delete(path + ".tmp");
    }

 

如上代码。传入资源后缀名。如xml或者.prefab .asset等后最。 string pathsss = Application.dataPath + "/Asset/";为所在目录。

好了。就写到这了。有问题可以给我留言

本文链接:

https://bobsong.cn/1046.html
1 + 1 =
4 评论
    隨心所欲
    2015年06月27日 回复

    一直在关注

      2015年06月28日 回复

      @隨心所欲 感谢关注~~~

    2015年11月28日 回复

    AssetImporter.assetBundleName = assetName;

      2015年11月28日 回复

      @阿举 另一个帖子有写这个的。两种方法咯