Unity 资产包服务器自动化

Unity asset bundle server automation

我正在 Unity 中开发一个应用程序,用户可以在其中上传自己的 3d 模型。我一直在寻找实现这一点的方法,从所有类型加载模型的最佳方法似乎是资产包。要在服务器上创建这些包,我想 运行 Unity 以批处理模式并从静态方法创建包。

我面临的问题是似乎无法通过脚本将对象包含在资产包中。在编辑器中,您只需 select 资产包名称,但要自动执行此操作,这是不可能的。

首先按照我的预期使用 AssetImporter 找到了答案。出于某种原因,我认为我必须实例化该对象才能将其捆绑。这是一个错误的假设,只需添加项目路径,您就可以为资产分配一个 bundlename。

    foreach (string file in filesInFolder)
    {
        if (!file.Contains(".meta"))
        {
            AssetImporter importer = AssetImporter.GetAtPath("Assets/models/" + file);
            if (importer != null)
            {
                importer.assetBundleName = BundleName;
                Debug.Log("assetBundlesAssigned");

            }
            else
            {
                Debug.Log("No asset selected");
                complete = false;
            }
        }
    }

分配完所有资产后,您就可以像往常一样建造它们了。

public static void ExecBuildAssetBundles()
{
    Debug.Log("Building bundle");
    BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.Android);
}