Asset Bundle 集成
资产包Asset Bundles是一项新功能,在Atavism 2.7 RC1中展示。使用它们可以显着提高你的表现,特别是对于产生怪物,NPC和建筑物,所以主要用于网格,动画,纹理等方面的重物。
资产包Asset Bundles暂时是推荐用于实例化的唯一方法,通常在Unity中动态加载。资源Resources有很多限制,例如最大4GB文件大小,当你突破这个限制时,你将体验到随机不加载模型,纹理等。
Unity不建议使用Resources,我们知道它很有用,所以它也在Atavism中得到支持,特别是在原型设计阶段,以便更快地迭代你的游戏。另一个限制是您无法拆分该文件。
在最后也非常重要的是内存管理,一般在你使用资源的时候,你无法处理,因为资源是使用LZMA算法打包的,它必须在加载到内存期间解压缩并且必须全部加载或者没有,所以0或1.这是什么意思?例如,你有20种不同的怪物类型,你想只生成一种特定的,这是一个非常常见的用例,但Unity必须将所有20只怪物加载到内存中,这就是为什么在之前的Atavism版本中你可能会遇到打嗝。在目前的版本中,我们仍在支持资源,因为它们在开发过程中处于快速状态,但很容易从资源使用转换为资产包并从中受益。
因此资产包可以有3种压缩类型(与资源文件LZMA相同,然后我们有LZ4,这在某种程度上是精细的LZMA压缩,因此Unity只能解压缩资产包的必要部分,最后有一种方式使它们无压缩,这将使你能够直接从网络或磁盘流式传输,在这种情况下使用的CPU资源更少),这一点很重要,可以通过网络流式传输,这对移动设备至关重要,可以是根据要求随时间下载。例如,如果播放器是新的,则他不必拥有所有文件,他只能获得专用于特定级别的资产包甚至是。这是使用它们的另一个好处,您可以根据您想要的任何参数拆分您的内容,这完全取决于您。
因此,您可能认为设置起来很困难并且您可能会出现更多错误,这要归功于我们的附加脚本,因此1,2,3 …设置非常简单。基本上,我们不希望强制我们的客户使用新的东西而不是旧的已知资源,因为也许你已经习惯了这样做,而对于你的小型项目,它的表现足够好,所以你也可以自由地做。以前新的怪物或NPC必须在项目的Resources文件夹中定义,你在其中有网格,骨架,动画,纹理设置的材料以及使用Atavism所需的内容,你可以查看公主预制的例子。
正如您所看到的,很少有标准的Atavism组件。在这样的预制设置之后,您可以使用Atavims编辑器将其放入Mobs模板中
完成mob模板配置。资产包配置之间的区别首先是您必须拥有两个模型:1。第一个模型将主要包含Atavism脚本和一些额外脚本,这些脚本将负责从资产包包中加载其余资产。 2.第二个模型包含网格,骨架,动画,材料等模型。您可以在项目中名为Knight的相同Resource文件夹中找到此类配置的示例。
正如您所看到的,预制件上有相同的脚本,另外还有一个:Atavism Get Model。在该脚本中您必须设置模型名称,该名称将对应于我们将在此情况下为Asset Bundle设置的预制件的名称:Knight并且您可以为该模型设置比例,默认为1,1,1。 此时,我们可以移动到可以在项目中的任何位置的实际模型位置,但在我们的示例中我们使用:Assets / AssetsBuildBundles文件夹,其中您将在下面找到Knight预制件。
正如您可以看到它是正常模型并且没有任何特殊之处,只有一个额外的Atavism脚本被称为:Atavism Mob Sockets,它负责角色的骨骼和Sockets之间的引用。因此,在这种情况下,如果您想使用它们,您应该在那里设置Sockets,但没有必要这样做,您可以保持原样。
现在,您必须标记目录或特定对象,以便让团结知道您要将它们构建到资产包中。为了做到这一点,你必须按照这一步一步的点击,因为Unity在那部分有点棘手。
在Unity项目选项卡中您有两列,首先您可以只浏览目录(左侧面板),然后可以浏览目录和文件(右侧面板)。将目录标记为资产包例如Assets / AssetsBuildBundles目录您必须在左侧面板中选择父目录,因此它将是Assets,然后是您要在bundle中构建的目录,以便右侧面板中的AssetsBuildBundles然后在右下角你必须点击名为AssetBundle的下拉列表并输入你想要的名字,在本教程中我们使用名为:test的资产包。
所以在我们的案例目录中,Assets / AssetsBuildBundles已被标记为Asset Bundle,名为:test。现在我们需要构建该资产包。要执行此操作,请转到“资产”菜单,然后选择“Atavism Build AssetBundles”选项。
构建资产包将开始,值得注意的是,如果自上次资产包构建以来没有任何改变,那么Unity将不会重建,因此它还将通过使构建更快来加速您的开发过程。现在您必须移动到您的项目目录并找到AssetBundles文件夹,您可以通过在资产目录上按RMB并选择在资源管理器中显示选项来实现。
然后在新打开的窗口中,您应该看到名为:AssetBundles的目录,输入它并找到您的资产包文件名。应该有2个具有相同名称的文件,一个没有扩展名,第二个是清单一个。您必须将没有扩展名的文件复制到项目中的Assets / StreamingAssets目录。
在这个阶段,我们差不多完成了。只留下一件事。你必须让Atavism知道什么是你的资产包名称并且要做到这一点你必须打开默认位于Assets / Scenes目录中的Login场景并找到名为:Scripts的对象。在Inspector的最底部您应该看到名为:Atavism Asset Bundles Manager(脚本)的脚本组件,其中有一组要定义的元素。在元素0 …(n)字段中你必须放置你选择的资产包的名称,在我们的例子中它是“测试”。这就是它,现在你应该可以从资产包中加载你的怪物或者npcs。
下面您将找到有关如何使用资产包的更多信息以及为何不使用专门用于发布的资源(我们强烈建议您阅读该文档):
此外,还有一个官方Unity Asset Bundle管理器的链接,用于构建它们,您可以在这里选择您想要的压缩方法,或者将构建的资产包自动复制到您的流媒体资产,这样它非常有用: