我正在使用Unity开发一个应用程序,用户可以上传自己的3D模型。我一直在寻找实现此功能的方法,最好的方法似乎是使用资源包从所有类型中加载模型。为了在服务器上创建这些包,我想以批处理模式运行Unity,并从静态方法中创建这些包。
我遇到的问题是,似乎不可能从脚本中将对象包含在资源包中。在编辑器中,您只需选择资源包名称,但自动化这个过程则不可能。
我遇到的问题是,似乎不可能从脚本中将对象包含在资源包中。在编辑器中,您只需选择资源包名称,但自动化这个过程则不可能。
使用AssetImporter,我找到了答案,正如我最初想要的那样。出于某种原因,我认为必须实例化对象才能打包它。这是一个错误的假设,只需添加项目路径即可将bundle名称分配给资产。
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);
}