Unity - 是否有必要从游戏构建中排除 AssetBundle 中使用的资产?
Unity - Is it necessary to exclude assets being used in AssetBundles from game build?
很难找到有关 AssetBundle 实际工作原理的大量信息。找不到关于如何使用游戏构建管理资产包的任何解释。
基本上我的项目 window 中有一个名为 AssetBundles
的文件夹。我放入此文件夹中的所有资产都作为 AssetBundle 构建在我的构建目录(如 GameName/Data/AssetBundles)中的文件夹中,然后在需要时加载。
但是当我自己构建游戏时,它是否知道在游戏构建中不包括在 AssetBundle 中使用的这些资产?或者我需要以某种方式排除它们吗?
编辑:我取得了一些进步。
据我了解,只有位于构建设置中的场景中的资产才会与游戏构建一起构建。脚本总是内置在游戏构建中(我不确定是否有办法解决这个问题,但这对我来说不是问题)。
所以我在游戏构建中有一个场景作为游戏的启动对象。这个场景有一个 Asset Manager 脚本,在 Awake
中指定了 DontDestroyOnLoad
。
我的资产管理器脚本基本上只处理 loading/unloading 的捆绑包、资产和实例。
我目前不太确定如何为场景构建资源包。我使用 LoadAllAssets
然后执行 LoadLevel
,但如果多个场景共享一些资产怎么办?场景构建是否最终会因拥有可共享的资产副本而变得臃肿?我读到在 Unity 5 中会自动处理依赖项,但我不确定这是否与此有关。
当你构建游戏时,它应该只使用构建中的资产,就像你使用的任何东西一样,或者是构建中使用的任何东西的依赖项。
我发现下面的 post 有一个示例项目,其中包含在 Unity 5 中使用 AssetBundle 的不同方式。
http://forum.unity3d.com/threads/new-assetbundle-build-system-in-unity-5-0.293975/
它包含一个 building/loading 场景的示例,它似乎可以正常工作(它会自动确定依赖关系..所以你所要做的就是确保你在共享中 build 共享资产资产包(或他们自己的包)以提高效率)。
我在 build 上做的唯一不同的事情是定义 AssetBundleBuild
(基本上我组织了我的项目文件夹,以便资产存储在与其资产包名称相关的子文件夹中,并且然后在 build 上检查这些文件夹并添加它们)。
出于某种原因,我这样做的方法似乎打破了依赖关系,而在编辑器中使用资产包功能 ui 似乎可行(手动为每个资产命名包......如果你在几个不同的包中有数百个资产)然后使用 BuildAssetBundles
没有 builds 参数。
我仍然没有真正回答我原来的问题Is it necessary to exclude assets being used in AssetBundles from game build?
但为了安全起见,我在游戏 build 中只有 1 个场景实际上是 built,而且那个场景只有一个资产管理器脚本,用于处理资产包和它不会在负载时破坏。如果您将它们全部作为资产包,则无需将其他场景设置为 built。
很难找到有关 AssetBundle 实际工作原理的大量信息。找不到关于如何使用游戏构建管理资产包的任何解释。
基本上我的项目 window 中有一个名为 AssetBundles
的文件夹。我放入此文件夹中的所有资产都作为 AssetBundle 构建在我的构建目录(如 GameName/Data/AssetBundles)中的文件夹中,然后在需要时加载。
但是当我自己构建游戏时,它是否知道在游戏构建中不包括在 AssetBundle 中使用的这些资产?或者我需要以某种方式排除它们吗?
编辑:我取得了一些进步。
据我了解,只有位于构建设置中的场景中的资产才会与游戏构建一起构建。脚本总是内置在游戏构建中(我不确定是否有办法解决这个问题,但这对我来说不是问题)。
所以我在游戏构建中有一个场景作为游戏的启动对象。这个场景有一个 Asset Manager 脚本,在 Awake
中指定了 DontDestroyOnLoad
。
我的资产管理器脚本基本上只处理 loading/unloading 的捆绑包、资产和实例。
我目前不太确定如何为场景构建资源包。我使用 LoadAllAssets
然后执行 LoadLevel
,但如果多个场景共享一些资产怎么办?场景构建是否最终会因拥有可共享的资产副本而变得臃肿?我读到在 Unity 5 中会自动处理依赖项,但我不确定这是否与此有关。
当你构建游戏时,它应该只使用构建中的资产,就像你使用的任何东西一样,或者是构建中使用的任何东西的依赖项。
我发现下面的 post 有一个示例项目,其中包含在 Unity 5 中使用 AssetBundle 的不同方式。
http://forum.unity3d.com/threads/new-assetbundle-build-system-in-unity-5-0.293975/
它包含一个 building/loading 场景的示例,它似乎可以正常工作(它会自动确定依赖关系..所以你所要做的就是确保你在共享中 build 共享资产资产包(或他们自己的包)以提高效率)。
我在 build 上做的唯一不同的事情是定义 AssetBundleBuild
(基本上我组织了我的项目文件夹,以便资产存储在与其资产包名称相关的子文件夹中,并且然后在 build 上检查这些文件夹并添加它们)。
出于某种原因,我这样做的方法似乎打破了依赖关系,而在编辑器中使用资产包功能 ui 似乎可行(手动为每个资产命名包......如果你在几个不同的包中有数百个资产)然后使用 BuildAssetBundles
没有 builds 参数。
我仍然没有真正回答我原来的问题Is it necessary to exclude assets being used in AssetBundles from game build?
但为了安全起见,我在游戏 build 中只有 1 个场景实际上是 built,而且那个场景只有一个资产管理器脚本,用于处理资产包和它不会在负载时破坏。如果您将它们全部作为资产包,则无需将其他场景设置为 built。