Unity3d 统一-是否有必要从游戏构建中排除资产绑定中使用的资产?

Unity3d 统一-是否有必要从游戏构建中排除资产绑定中使用的资产?,unity3d,build,assets,assetbundle,Unity3d,Build,Assets,Assetbundle,很难找到有关资产组合实际工作方式的大量信息。找不到关于如何使用游戏构建管理资产捆绑包的任何解释 基本上,我的项目窗口中有一个名为AssetBundles的文件夹。我放在这个文件夹中的所有资产都作为AssetBundles构建在我构建目录中的一个文件夹中(如GameName/Data/AssetBundles),然后在需要时加载 但是,当我构建游戏本身时,它是否知道不在游戏构建中包括这些资产绑定中使用的资产?还是我需要以某种方式排除它们 编辑:我取得了一些进展 据我所知,只有位于构建设置中的场景中

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

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

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

编辑:我取得了一些进展

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

所以我在游戏构建中有一个场景,作为游戏的启动对象。此场景中有一个资产管理器脚本,其中
DontDestroyOnLoad
Awake
中指定

我的AssetManager脚本基本上只处理捆绑包、资产和实例的加载/卸载


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

当你构建游戏时,它应该只使用构建中的资产作为你使用的任何东西,或者是构建中使用的任何东西的依赖项。

我找到了下面的帖子,其中有一个在Unity 5中使用资产绑定的不同方式的示例项目

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

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

出于某种原因,我这样做的方法似乎打破了依赖关系,而在编辑器ui中使用asset bundle功能似乎有效(手动为每个资产命名捆绑..如果在几个不同的捆绑包中有数百个资产,这有点繁琐),然后使用
BuildAssetBundles
而不使用builds参数

对于我最初的问题,我仍然没有真正的答案
是否有必要从游戏构建中排除资产绑定中使用的资产?


但为了安全起见,我在游戏构建中只构建了一个场景,而这个场景只有一个资产管理器脚本,在这个脚本上处理资产包,并且不会在加载时销毁。如果所有场景都作为资产包,则无需构建其他场景。

但这不包括场景中的对象和场景本身吗?即使我将这些构建为资产包?我想你的意思是,如果场景在构建设置中,那么场景中使用的任何东西都将在游戏构建中构建,因此在游戏构建期间,构建为资产包的资产不能出现在这些场景中?所以,如果我想在场景中对检查器中的内容进行更改,我必须:从场景中移除资源,并将它们放置在捆绑文件夹>构建需要更新的捆绑包>构建游戏>将资源重新添加到场景中。我想我需要为它编写一个脚本?不,它不应该复制任何东西,它将确定使用的是什么。我通过从assetbundle加载一个场景进行了测试,该场景包含一个来自另一个assetbundle的立方体预制。我构建了两个assetbundle。很抱歉,我在完成之前无意中发布了这一消息,无法编辑:我做了一个测试,使用了一个从assetbundle加载的场景,该场景包含一个来自另一个assetbundle的立方体预制。在场景组件与多维数据集绑定的构建1中,大小为70kb。在这个场景的build#2中,我在构建之前移除了立方体,它的大小降到了40kb左右。多维数据集资产绑定本身为32kb。这让我相信scene assetbundle将多维数据集存储在自己的包中,而不是引用它。你能发一个工作的例子让我知道我可能做错了什么吗?