6

很难找到有关 AssetBundles 实际工作方式的大量信息。找不到有关如何使用游戏构建管理资产包的任何解释。

AssetBundles基本上我的项目窗口中有一个文件夹。我放在这个文件夹中的所有资产都作为 AssetBundles 构建在我的构建目录中的一个文件夹中(如 GameName/Data/AssetBundles),然后在需要时加载。

但是当我自己构建游戏时,它是否知道在游戏构建中不包含 AssetBundles 中使用的这些资产?还是我需要以某种方式排除它们?

编辑:我已经取得了一些进展。

据我了解,只有存在于构建设置中的场景中的资产才会与游戏构建一起构建。脚本总是在游戏构建中构建的(我不确定是否有办法解决这个问题,但这对我来说不是问题)。

所以我在游戏构建中有一个场景,它充当游戏的启动对象。此场景上有一个 Asset Manager 脚本,其中DontDestroyOnLoad指定了Awake.

我的资产管理器脚本基本上只处理包、资产和实例的加载/卸载。

我目前不太确定如何为场景构建资产包。我让它使用LoadAllAssets然后做LoadLevel,但是如果多个场景共享一些资产怎么办?场景构建最终是否会因拥有可共享的资产副本而变得臃肿?我读到 Unity 5 会自动处理依赖项,但我不确定这是否与此有关。

4

2 回答 2

2

我发现下面的帖子有一个示例项目,其中包含在 Unity 5 中使用 AssetBundles 的不同方式。

http://forum.unity3d.com/threads/new-assetbundle-build-system-in-unity-5-0.293975/

它包括一个构建/加载场景的示例,并且它似乎可以正常工作(它会自动确定依赖关系......所以您所要做的就是确保在共享资产包(或它们自己的包)中构建共享资产以提高效率)。

我在构建中唯一不同的是定义AssetBundleBuild(基本上我组织了我的项目文件夹,以便资产存储在与其资产包名称相关的子文件夹中,然后在构建时检查这些文件夹并添加它们)。

出于某种原因,我这样做的方法似乎打破了依赖关系,而在编辑器 ui 中使用资产包功能似乎有效(手动命名每个资产的包。如果您在几个不同的包中有数百个资产,这有点乏味) 然后BuildAssetBundles在没有 builds 参数的情况下使用。

我仍然没有真正回答我原来的问题Is it necessary to exclude assets being used in AssetBundles from game build?

但是为了安全起见,我在游戏构建中实际上只有一个场景正在构建,并且该场景只有一个资产管理器脚本,用于处理资产包并且它不会在加载时破坏。如果您将它们全部作为资产包,则无需构建其他场景。

于 2015-09-20T01:54:29.313 回答
0

当您构建游戏时,它应该只使用构建中的资产,就像您使用的任何东西一样,或者是构建中使用的任何东西的依赖项。

于 2015-09-19T00:52:59.277 回答