2017-09-18 35 views
1

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

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

回答

0

找到答案使用AssetImporter,因为我首先打算。出于某种原因,我想我必须实例化对象才能捆绑它。这是一个错误的假设,只需添加项目路径就可以将一个包名分配给一个资产。

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); 
}