很难找到有关AssetBundles实际工作方式的大量信息.无法找到有关如何使用游戏构建管理资产包的任何说明.
基本上我在Project窗口中有一个名为AssetBundles的文件夹.我放在此文件夹中的所有资产都构建为我的构建目录(如GameName / Data / AssetBundles)中的文件夹中的AssetBundles,然后在需要时加载.
但是当我自己构建游戏时,它是否知道不包含游戏构建中AssetBundles中使用的这些资产?或者我是否需要以某种方式排除它们?
编辑:我已经取得了一些进展.
根据我的理解,只有位于构建设置中的场景中的资源才会使用游戏构建构建.脚本总是建立在游戏构建中(我不确定是否有办法解决这个问题,但对我来说这不是问题).
所以我在游戏构建中有一个场景作为游戏的启动对象.此场景上有一个Asset Manager脚本,其中包含在Awake中指定的DontDestroyOnLoad.
我的资产管理器脚本基本上只处理捆绑包,资产和实例的加载/卸载.
我目前还不太确定如何为场景工作构建资产包.我让它使用LoadAllAssets,然后使用LoadLevel,但如果多个场景共享一些资产怎么办?场景构建最终是否具有可以共享的资产副本?我读到在Unity 5中自动处理依赖关系,但我不确定这是否与此有关.
最佳答案 我找到了以下帖子,其中有一个示例项目,其中包含在Unity 5中使用AssetBundle的不同方法.
http://forum.unity3d.com/threads/new-assetbundle-build-system-in-unity-5-0.293975/
它包含一个构建/加载场景的示例,它似乎正常工作(它自动确定依赖关系..所以你要做的就是确保你在共享资产包(或他们自己的包)中构建共享资产以提高效率).
我在构建中唯一不同的做法是定义AssetBundleBuild(基本上我组织了我的项目文件夹,以便将资产存储在与其assetsbundle名称相关的子文件夹中,然后在构建时检查这些文件夹并添加它们).
出于某种原因,我这样做的方法似乎打破了依赖关系,而在编辑器中使用资产包功能ui似乎有效(为每个资产手动命名捆绑包…如果你在几个不同的捆绑包中有数百个资产,这有点单调乏味)然后使用BuildAssetBundles而不使用builds参数.
我仍然没有真正回答我的原始问题是否有必要从游戏构建中排除AssetBundles中使用的资产?
但为了安全起见,我实际上只在游戏构建中构建了一个场景,并且该场景只有一个资产管理器脚本来处理资产包,并且它不会在加载时销毁.如果将它们全部作为资产包,则无需构建其他场景.