第五课 Unity资源导入工作流效率优化(AssetGraph工具)

上期我们学习了简单的animation动画的优化,接下来我们继续资源导入效率的优化

工程目录

首先我们来学习一下工程目录结构及用途

Asset文件夹:用来储存和重用的项目资产

Library文件夹:用来储存项目内部资产数据信息的目录

Packages文件夹:用来存储项目的包文件信息

Project Settings文件夹:用来存储项目设置的信息

UserSettings文件夹:用来存储用户设置信息

Temp文件夹:用来存储使用unity编辑器打开项目时的临时数据,一旦关闭unity编辑器也会被删除

Logs文件夹:用来存储项目的日志信息(不包括编辑器日志信息)

Assets目录

首先我们来学习一下Assets目录结构及用途

Editor文件夹:编辑器下使用的脚本及资源,用来扩展编辑器使用,可以有多个

Editor Default Resources文件夹:用于存储编辑器下的默认资源,这些资源只能通过EditorGUIUtility.load函数按需进行加载,并且在根目录只能存在一个

Gizmos文件夹(根目录唯一):用于存储根目录中的特殊对象图标,用来标记特殊对象或位置,Gizmos允许将图形添加到scenes视图中,以帮助可视化不可见的设计细节,一个项目中只能存在一个,也必须放在根目录中,也不会发布到运行时

Plugins文件夹(2019后已删除):扩展unity功能的插件

Resources文件夹:用于存储原型设计时可以从脚本中按需加载的资源,通过resources.load接口加载此类资源,通常是unity项目中性能的主要来源,resources使用不当很容易造成unity项目的构建出现膨胀,导致内存消耗过高,应用程序启动时间显著增加,应用程序包体过大等问题,在正式项目中尽量不要使用resources目录,应尽量使用asset buddle方式构建和加载资源,切记切记!!

Standard Assets 文件夹:用于存放导入的标准资源包,这个文件夹内的脚本优先级最高,只能有一个并放在assets 根目录中,一般情况下很难使用此文件夹

StreamingAssets文件夹:用来存放不随unity应用程序构建,而希望独立于原始文件资源,如单独的视频等,此文件夹内的文件可原样复制到目标计算机中,然后单独访问

Assets目录的结构设计

一级目录设计原则:

  • 目录尽可能少
  • 区分编辑器模式和运行模式
  • 区分工程大版本
  • 访问场景文件,全局配置,文件便捷
  • 不在一级目录做资源类别的区分,只有video类视频建议直接放在StreamingAssets下

二级目录设计原则:

  • 只区分资源类型
  • 资源类型大类划分要齐全
  • 不做子类型区分
  • 不做功能区分
  • 不做生命周期区分

三级目录设计原则:

  • Audio/Textures/Models三级目录做子类区分
  • 其他类型资源做功能模块/生命周期区分

资源导入工作流

主要的作用就是将外部的资源导入进来进行分类,根据游戏内的用途做资源优化设置,并把这些工作做成流水线化,以规范资源导入设置问题带来的性能问题,之前我给大家讲述了主要资源的导入设置优化问题,上述也给大家介绍了unity目录下该如何合理的做目录划分,这些都是为了做资源导入工作流做准备,下面我们具体介绍

AssetGraph工具

优点:功能全,覆盖unity资源工作流全流程,节点化编辑,直观

缺点:有一定上手成本,一些自定义生成节点也需要开发,不是unity标准包,unity新功能慢

适合类型:任何规模项目和中大型团队

AssetGraph是一种减少资源导入构建工作流所需的工作量的工具,构建AssetBundle和构建可运行应用。使用这个工具,您可以构建工作流,以图形化的方式创建、修改和更改资源设置,甚至使它们自动设置,从而使设计师和艺术家在游戏开发过程中从重复的任务中解脱出来。

之前在做资源导入管理的时候,一直都是使用各种各样AssetImporter来分别处理,这其实也挺好的,但是我之前遇到的问题其中有一个就是假如我想修改某个资源的属性,这个属性和Importer中约束的不同的话,又会被改回去,后来就变成不停的细分更多的文件夹。

另外Asset Graph不单单能用作导入的处理,还可以用作资源的批量处理,通过使用它来实现自己的资源工作流,虽然这些功能不用他也都能做到,但是他的节点可视化的操作方式,带来了很多可复用性和便利性。下面来先简单介绍一下基本的使用方法.

编辑器界面介绍

  1. 当前打开的图表。单击以显示下拉菜单。
  2. 重新加载资产。
  3. 在图表中显示所有错误。
  4. 显示图形描述。
  5. 导出有关图形何时重新加载以及何时构建的详细消息。
  6. 启用该选项可以将图形用作资源后处理器。
  7. 启用此选项的图形将在每次更新此项目中的资产时运行。
  8. 当前平台。您可以从下拉菜单中更改平台。
  9. 运行图表。
  10. 显示图形资源的路径。

编辑器菜单

  1. 选择要在曲线图编辑器中打开的曲线图。
  2. 创建新的图形资源。
  3. 您可以导出/导入JSON格式的图形。

日志窗口

“资产日志”窗口显示在“资产图”节点中完成的资产修改列表。它还向您显示图表中出现的任何错误。

  1. 清除资产日志。
  2. 在图形编辑器中显式构建图形时,清除资源日志。
  3. 资产预览
  4. 记录该日志时的资产名称和时间戳。
  5. 日志事件类型、图形名称和节点名称。
  6. 打开图形并选择发出此日志事件的节点。
  7. 资产日志事件列表。
错误显示

当资产图中出现错误时,资产日志中会出现通知。资产日志中的错误显示显示了错误描述以及如何修复错误。

批量生成窗口

“批量构建”窗口允许您一次在多个平台上运行多个图形列表。

编辑选项卡

在编辑选项卡中,您可以编辑同时运行的图形集合。

  1. 在编辑和构建选项卡之间切换。
  2. 单击“添加”按钮将创建一个新的空集合。也可以通过拖放资源图资源来创建它们。
  3. 图表收藏列表。
  4. 显示当前选定图形集合中包含的图形。集合中的图形将按从上到下的顺序运行。可以通过在列表中拖动图形来更改顺序。
“构建”选项卡

从构建选项卡在指定平台上运行选定的图形集合。

  1. 选择一个图形集合。
  2. 构建选定的图形集合。
  3. 更换指定平台。右键单击可添加或删除平台。
  4. 将图形集合构建结果显示为“成功”或“失败”。
  5. 显示详细的构建结果,并在失败时提供报告。

项目窗口

AssetGraph在项目级别共享设置。这些设置是在项目窗口中的资产图项目中实现的。

要更改项目设置,请选择Menuー>Window>Asset Graph>打开项目窗口,然后打开项目设置窗口。

Asset包”标签

在“资产捆绑”标签中更改与构建资产捆绑相关的设置。

  1. 指示在“构建资产包”节点选择“在缓存目录中构建”时要使用的资产包缓存目录。
  2. 当与资产捆绑浏览器集成时,这是默认的资产捆绑图。
执行顺序选项卡

在“执行顺序”选项卡中,您可以更改AssetPostprocessor图的实现顺序。

  1. 图形名称
  2. 图形执行顺序。上面,先执行值较小的图形。没有任何特殊设置的图形将使用此默认执行顺序。
  3. 在执行顺序列表中添加/删除图形。

基础

AssetGraph在图形中完成所有工作。创建图表后,从图表编辑窗口添加节点。通过连接节点,您可以创建用于处理资产的管道。资产将从左到右进行处理,在每个阶段进行修改和分组,最后作为资产包的一个附加物构建或复制到一个特定的目录。使用该工具的基本方法是通过使用内置节点或自定义节点来构建管道,然后一次性处理许多资产。

创建图表

要创建资产图,请在项目视图中选择“创建”菜单,或者右键单击并选择“资产捆绑图”。您也可以选择菜单>窗口>资产图形>打开图形编辑器,并单击资产捆绑窗口中的“创建…”按钮。

创建资产捆绑图形资产后,双击打开图形编辑窗口开始编辑。您可以通过右键单击窗口来选择和添加新节点。

加载Asset

您必须加载资产以向它们添加流程。要加载资源,请右键单击图形并从“加载资源”菜单中选择以创建节点。在这里,让我们选择从目录加载并从特定目录加载资产。也可以通过将“从目录加载”节点从项目窗口拖动到目录的图形编辑器来创建该节点。

创建节点后,选择该节点并打开检查器。您可以通过单击从目录加载下的选择按钮来选择目录。尝试从“资产”下的目录中选择。

现在您已经加载了您的资产,创建另一个节点并连接它们。当您连接节点时,您可以看到资产将被传递到连接的节点。通过点击这个连接,您可以在检查器中看到被传递的资产列表。

对于加载节点,一个图中可以有多少节点没有限制。然而,当它们成为资产包时,如果一个资产被指定为多个资产包中的一个,那么在构建时将会发生错误。

加载多个资产太重?资产图中的资产加载

AssetGraph能够处理成千上万的资产。在AssetGraph中加载资产时,实际上只是读取资产文件路径和资产类型信息。实际的资产数据只有在使用之前才会被加载,一旦不再被使用,就会被释放。

Asset分组

您可以使用AssetGraph对资产进行分组。当你想添加多个资产到你的资产包或者当你想从一组资产中创建一个预置时,我们推荐你使用这个功能。默认情况下,第一次加载资产时,它们都在一个名为“0”的组中。您可以按照自己喜欢的任何方式对资产进行分组。尝试通过右键单击图形并选择“组资源”菜单下的“按文件路径分组”来创建节点。

“按文件路径分组”是一个按文件路径名对资产进行分组的节点。例如,如果你在“资产/敌人”目录下拥有名为“海盗”和“吸血鬼”的敌人角色资产,它们将被分成“海盗”和“吸血鬼”两组。

角色的资产是基于目录的,所以你要基于目录对他们进行分组

“按文件路径分组”模式匹配文件路径并将它们分组。如上所述,在这个特定示例中使用通配符(*)模式匹配非常方便。选择“通配符”作为模式类型,选择“敌人”作为分组关键字

按文件路径分组的检查器设置

创建另一个节点,尝试将其与“按文件路径分组”导出连接,并选择一个连接。在检查器中,您可以看到海盗目录和吸血鬼目录下的资产分别被分组为“海盗”组和“吸血鬼”组。

通过匹配资源文件路径中的模式“敌人/*/”来完成分组

要构建资产捆绑包设置,请右键单击图形,并从“配置捆绑包”下的组中选择“配置捆绑包”。当您从组节点创建了配置包后,将它与按文件路径分组导出器连接。

构造Asset Bundles设置

当你把你的资产分组后,试着把它们变成一个资产包。您必须创建资产捆绑设置,以便将一个组转换为资产捆绑。创建资产包设置包括命名资产包、指定变量等。在构建资产包之前,您必须连接一个创建资产包设置的节点,以便将这些设置反映到组中。

要创建资产捆绑设置,右键单击图形并选择从组配置捆绑包,从菜单下方配置捆绑包。创建“从组配置包”节点时,将Group By文件路径的输出连接到该节点。

创建Asset Bundles

您已经成功设置了捆绑包设置!我们现在将开始准备构建资产捆绑包。要根据包设置构建资产包,请右键单击图形,选择“构建/构建资产包”,然后创建一个新节点。将配置捆绑包从组节点导出连接到构建资产捆绑包节点。如果您想要更改资产包的构建设置,例如压缩方法,请选择构建资产包节点并勾选检查器中的复选框。您现在已经准备好构建您的资产包了!

构建 graph

您已经设置了从加载资产到构建资产包的整个过程,所以让我们构建图表并看看它是如何工作的。要构建图表,请单击“资产捆绑包”窗口工具栏右侧的“构建”。

当进度条对话框消失时,构建已经完成。打开您在Build Asset Bundles中选择的目录,检查文件是否已经导出。如果您已经将它设置为在缓存目录中构建,那么资产包将位于资产的AssetGraph安装目录的缓存目录下。

一次构建多个graph

当随着项目的进展创建多个图表时,您可能希望一次构建多个图表。在这种情况下,转到菜单>窗口>资产图>打开批量构建窗口。“批量构建”窗口允许您一次为多个平台构建多个图形。要了解有关批量构建窗口的更多信息,请参考接口部分.

更改项目设置

AssetGraph项目中有共享设置。此时,资产包缓存的保存位置目录包含在项目设置中。要更改项目设置,请转到“菜单”>“窗口”>“资源图”>“打开项目窗口”。

高级

在上一节中,我们介绍了如何加载资产以及如何创建和复制资产包的基础知识。在本节中,我们将了解图表工具的高级用途。

Asset分类

当加载带有目录和标签的资产时,给定的资产类型并不总是相同的。在将资产传递到下一个节点时,如果希望按名称或类型对资产进行分类,可以使用“拆分资产/按过滤器拆分”。按过滤器拆分允许您根据名称和类型对资产进行分类,您还可以添加自己的过滤器。(高级主题:参见添加自定义过滤器)当资产与多个过滤器匹配时,资产将被导出到它通过的第一个过滤器。这意味着按过滤器拆分的过滤器的顺序很重要,所以请小心。

创建Asset

您还可以使用AssetGraph创建新资产。例如,您可能希望从艺术家添加的纹理和模型中自动创建游戏中使用的预设。右键单击该图形,并选择“创建资源/从组创建预设”,以创建从组创建预设的节点。要使用“从组创建预设”来创建预设,您必须将一个预设生成器脚本添加到您的项目中。请参阅高级主题>从组创建预设如何制作预制建筑?当你通过需要用来创建预设的组来从组中创建预设时,它会自动生成预设并添加它们以供导出。

编辑Asset

在添加资产包时,或者作为批处理的一部分,您可能想要批量编辑资产。通过使用AssetGraph,可以一次性编辑所有导入设置,并直接编辑不通过导入器的资源(如材质和渲染纹理)。如果要更改纹理和模型的导入设置,请右键单击图形并选择“修改资源/覆盖导入设置”。

您可以使用更改模型、纹理、音频和视频的导入设置覆盖导入设置节点。有关如何使用它的更多信息,请参见内置节点>覆盖导入设置。当资产被传递到节点时,资产的设置将在构建时被更改。

当您想要直接编辑没有导入者的资产时,请使用“直接修改资产”节点。要了解如何使用它,请参考直接修改资产在内置节点部分。

检查Asset bundles设置

创建资产包时,您可能会错误地包含不需要的资产。为了确保您的资产包中没有任何不需要的数据,您可以使用断言节点。通过使用内置节点在捆绑中声明不需要的资产,您可以指定是否可以包含某些目录中的资产。当检测到不需要的资产时,节点会将其报告为错误,您可以检查其中包含了哪个特定的不需要的文件。有关详细的操作方法,请参见在捆绑中声明不需要的资产在内置节点部分。

内置节点

让我们来看看AssetGraph中的内置节点。

Load From Directory (从目录加载):该节点从指定目录加载资源。

特性

  1. 当用作AssetPostprocessor时,决定节点是否将响应加载的资源中的更改。如果未选中此选项,则使用此加载程序加载的资产将不会触发AssetPostprocessor事件。
  2. 目录路径
  3. 目录选择器对话框
  4. 在项目视图中突出显示目录

Load By Search Filter(按搜索过滤器加载):

此节点从指定的搜索过滤器加载资产。搜索过滤器的格式与项目窗口中的搜索格式相同。有关更多信息,请参考项目窗口文档.

特性

  1. 当用作AssetPostprocessor时,决定节点是否将响应加载的资源中的更改。如果未选中此选项,则使用此加载程序加载的资产将不会触发AssetPostprocessor事件。
  2. 搜索过滤器

Last Imported Items(上次导入的项目):“最后导入的项目”节点加载最近导入的资源。该节点用于将图形用作后处理器。

Split By Filter(按过滤器拆分):

“按过滤器拆分”节点根据过滤器对资源进行分类。您可以使用的默认过滤器是文件路径和资产类型。通过添加自定义筛选器,可以扩展“按筛选器拆分”的分类。

“按筛选器拆分”节点中的资产分类是以自上而下的方式完成的。如果针对第一个条件过滤了资产,则不会针对后面的条件过滤该资产。通过在左侧的过滤器列表中上下拖动,可以上下移动其他过滤器。

特性

  1. 过滤条件。您可以使用正则表达式来指定文件路径。
  2. 添加新的过滤条件。如果您安装了自定义过滤器,此+按钮将显示一个下拉菜单,用于选择过滤器。

Group By File Path(按文件路径分组):该节点使用文件路径创建组

特性

  1. 设定您是否想要在群组名称中包含目录分隔符
  2. 设置分组关键字的格式(3)。设置为通配符时,如果文件路径的一部分与*匹配,该部分将成为组名。当设置为正则表达式时,Grouping关键字使用正则表达式(),被分组的部分成为组名。
  3. 设置从文件路径中选择组名的条件。匹配方法由模式类型(2)决定。
  4. 设置组名格式。与该节点上的分组关键字匹配的关键字被指定为{NewGroup},但是当文件被传递到该节点时已经被使用的组名也可以通过指定{OldGroup}来使用。如果此处未输入任何内容,它将使用与{NewGroup}相同的值。

Group By Size(按大小分组):

“按大小分组”节点按大小对引入的资源进行分组。例如,如果您将其设置为“每个文件大小1MB”,它将检查文件大小并将资产添加到组中。当一个组达到1MB时,下一个资产将被添加到一个新组中。当一个资产大于指定的大小时,该资产将成为一个单独的组。组的大小不会总是低于指定的文件大小。

维护组

“按大小分组”节点基于大小创建分组,因此资源所属的组经常会发生变化。例如,从管理的角度来看,在AssetBundle上使用这个节点可能是低效的,因为它可能需要对AssetBundle文件进行大量更新。为了解决这类问题,“按大小分组”节点具有在构建时记住和维护组设置的功能。

特性

  1. 指定分组方法。按文件大小根据文件大小对资源进行分组,按运行时内存大小根据加载后的内存大小对资源进行分组。并非所有资产都可以使用运行时内存大小,因此请小心。
  2. 要用于分组的大小(KB)。
  3. 设置组名格式。与该节点上的分组关键字匹配的关键字被指定为{NewGroup},但是当文件被传递到该节点时已经被使用的组名也可以通过指定{OldGroup}来使用。如果此处未输入任何内容,它将使用与{NewGroup}相同的值。
  4. 确定在构建时是否保存组设置。
  5. 以JSON格式导入或导出当前分组。单击重置将重置当前保存的组设置。
  6. 将(7)中显示的资产过滤为特定资产。这不会影响分组。
  7. 显示当前组的文件名、资产数量和近似文件大小。
  8. 显示在(7)中选择的组中包含的资产的摘要。
  9. 显示在(8)中选择的资产的项目路径。

Group By File(按文件分组):

“按文件分组”节点将通过它传递的每个资源拆分为一个单独的组。例如,如果有3个资产经过该节点,那么将根据组名格式设置创建3个组,每个资产将被记录在自己的组中。

特性

  1. 设置组名格式。与该节点上的分组关键字匹配的关键字被指定为{NewGroup},但是当文件被传递到该节点时已经被使用的组名也可以通过指定{OldGroup}来使用。如果此处未输入任何内容,它将使用与{NewGroup}相同的值。在“按文件分组”节点中,也可以使用文件名{FileName}和文件扩展名{FileExtension}。

Create Prefab From Group(从组创建预制体):

“从组创建预设”节点从资源组创建新预设。指定PrefabBuilder来创建预设。要制作适合你的项目的预置,添加必要的预置生成器到你的项目中。

请参考高级主题:自动创建预设有关如何实现预置生成器的更多信息。

特性

  1. 此节点上使用的PrefabBuilder。
  2. 预设替换选项。有关详细信息,请参见API文档。
  3. 预设输出选项。选择是输出到缓存目录还是另一个目录。
  4. 选择缓存目录以外的输出目录时要使用的保存目标目录。
  5. 所选预制构件的检查器。
  6. 在脚本编辑器中打开PrefabBuilder脚本。

Built-in Prefab Builder(内置预制体构建):AssetGraph中有两个内置的预制构建器。

Replace GameObject by Name (Experimental)(用名字替换游戏对象(实验)):

传入的游戏对象的预设中具有指定名称的子游戏对象来创建新的预设,并用指定的预设替换那些子游戏对象。

  1. 要替换的游戏对象的名称
  2. 替换预设的名称
  3. 添加替换名称和游戏对象

Replace With Incoming GameObject by Name (Experimental)(替换为引入的游戏对象名称(实验)):

“用名字替换进来的游戏对象”通过检查传入的游戏对象的预置来创建新的预置,检查子游戏对象的名字是否匹配给定的游戏对象。

  1. 将被指定的游戏对象替换的基本游戏对象。

Generate Asset(生成资产):

GenerateAsset节点通过使用AssetGenerator从给定的资产中产生新的资产。将资产生成器添加到您的项目中,以生成您需要的资产。

请参考高级主题:自动创建衍生资产有关如何实现资产生成器的信息。

特性

  1. 已创建资产的输出选项。选择是输出到缓存目录、另一个指定目录,还是输出到与原始资源相关的路径。
  2. 创建资源时的输出目录(选择“在选定目录中创建”时)
  3. 已创建资产的标签。
  4. 用于创建资产的资产生成器。
  5. 所选资产生成器的检查器。
  6. 拆下资产生成器。
  7. 添加新的AssetGenerator。

内置资产生成器

资产图包括一个内置的资产生成器

Texture Scaler(纹理缩放器):

TextureScaler接收纹理资源并生成调整大小的资源。

  1. 选择生成的纹理的输出格式。您可以从JPG、巴布亚新几内亚或EXR (Unity 5.6及更高版本)中选择。
  2. 调整大小的缩放处理方法。您可以选择点(最近邻)或双线性。
  3. 相对于原始资产的大小。指定1~100%之间的值。
  4. 如果您选择了JPG,请在1到100之间指定JPG质量。
  5. 如果您选择了EXR,请设置EXR保存选项。有关更多详情,请参阅API文档.

重复资产

复制资产生成资产的副本。检查器中没有要设置的属性。

Overwrite Import Setting(覆盖导入设置):

“覆盖导入设置”节点覆盖给定资产的导入设置。您只能更改具有导入程序的模型、纹理、音频和视频剪辑(Unity 5.6及更高版本)的导入设置。“覆盖导入设置”节点可以显式指定导入程序类型,也可以根据给定的资产类型自动设置导入程序类型。

使用自定义设置资源

“覆盖导入设置”节点在内部创建一个小资产来存储所有导入配置,但有时您可能希望使用自己的资产。例如,如果在同一个布局中有多个精灵,使用其中一个精灵纹理资源作为基础资源会更容易。对于这种情况,您可以从检查器中选择“自定设置资源”。

特性

设置导入程序类型前的属性

  1. 选择进口商类型

  1. (仅当纹理类型为“精灵”时出现)如果选中,则覆盖精灵模式。
  2. (仅当纹理类型为“精灵”时出现)如果选中,则覆盖精灵包装标签。
  3. (仅当纹理类型为“精灵”时出现)精灵包装的标签名称。(*)将被组名替换。
  4. 如果选中,则使用自定义设置资源。
  5. 用作基本设置的自定义资源。
  6. 在项目窗口中高亮显示自定义资源。
  7. 导入程序类型的属性。
  8. 清除所有设置并初始化此节点。

Modify Asset Directly(直接修改资产):“直接修改资源”节点直接编辑传递给它的资源的属性。本节点用于编辑没有导入者的资产。与“覆盖导入设置”节点一样,可以在“直接修改资产”节点指定要编辑的资产类型。

特性

  1. 选择要使用的修饰符。
  2. 修改器的指定属性。
  3. 在脚本编辑器中打开选定的修改器。
  4. 清除“直接修改资产”设置,允许您重新选择资产类型。

Label Assets(标记资产):“标记资源”节点为给定资源设置标签。

特性

  1. 启用覆盖时,资源的原始标签将被删除,并由该节点设置的标签替换
  2. 资产的标签集。通过用逗号分隔标签来设置多个标签。

Configure Bundle From Group(从组配置捆绑包):“从组配置捆绑包”节点创建资产捆绑包设置,这些设置将用于从给定的资产集合中构建资产捆绑包。

特性

  1. 启用后,组名将被视为变体。
  2. 设置变量名称。您不能将它与(1)一起使用。
  3. 添加变体设置。
  4. 平台设置选项卡。
  5. 为资产包的名称设置模板。(*)将被组名替换。启用(1)时,组名将被视为变体,因此您将不能包含星号。

Extract Shared Assets(提取共享资产):

打开具有隐式依赖关系的资产,并创建显式资产捆绑设置。当给定多个资产包时,它将为每组共享资产创建新的资产包设置。

特性

  1. 用于资产捆绑设置中共享资产的名称。数字(0,1,2..)将替换(*)。
  2. 平台设置选项卡。
  3. 启用后,共享资产将按大小划分。
  4. 设置分组方法,按文件大小按文件大小分组资产,按运行时内存大小按加载后的内存大小分组资产,这并不适用于所有资产,因此请小心。
  5. 分组的标准大小(KB)

Assert Unwanted Assets In Bundle(在捆绑中声明不需要的资产):“断言捆绑包中不需要的资产”节点检查AssetBundle中是否有任何不需要的资产。

特性

  1. 选择断言方法。如果您选择“仅允许断言路径下的资产”,则资产包设置在(3)的断言路径下的资产将导致错误。如果选择“禁止断言路径下的资产”,则断言路径下具有资产包设置的资产将导致错误。
  2. 平台设置选项卡。
  3. 指定用于断言的目录路径。

Error(错误):

当资产传递给Error节点时,该节点会创建一个错误。当与“按过滤器拆分”节点配对时,该节点对于查找不正确的资源非常有用。

特性

  1. 错误摘要。
  2. 如何解决错误的说明。

Build Asset Bundles(构建资产包):该节点根据给定的资产捆绑设置构建资产捆绑。

特性

  1. 启用时,此图表指定的资产捆绑名称或变量设置将保留在资产捆绑中资产的AssetImporter中。
  2. 输出选项。指定是输出到缓存目录还是选择另一个输出目录。
  3. 在(2)中选择“在缓存目录中构建”以外的选项时,设置输出目录的名称。
  4. 设置全局清单名称。如果留空,将使用目录名。
  5. 资产捆绑构建选项。有关更多详细信息,请参见API文档

Build Player(构建播放器):这个节点为这个项目构建播放器。通过传递构建资产包的输出,您可以构建考虑了资产包中的资产的播放器。如果没有为Build Player节点提供asset bundle,可能会出现意想不到的副作用,例如,由于优化,只在asset bundle中使用的脚本会被删除。

特性

  1. 平台选择选项卡。
  2. 设置构建播放器的目录。
  3. 玩家姓名。
  4. 玩家建造选项。请参考API文档详情请见。
  5. 构建播放器时将包含的场景。

Export To Directory(导出到目录):“导出到目录”节点将给定的资产复制到指定的目录。

特性

  1. 平台设置选项卡。
  2. 导出选项。选择是在没有目录可供导出时报告错误、自动创建目录,还是删除输出目标并每次重新创建。
  3. 目标目录。
  4. 启用后,在复制前压缩目录结构。

Mirror Directory(镜像目录):

镜像目录节点根据指定的属性镜像目录。它不使用给予它的资产。资产提供的存在只是为了在与其他节点一起使用时以期望的顺序进行镜像。该节点便于处理与Unity构建相关的特殊目录中的文件,例如StreamingAssets。

特性

  1. 平台设置选项卡。
  2. 指定镜像设置。当设置为“保留已复制的文件”时,它将只复制镜像位置中不存在的文件或更新的文件。镜像位置中不存在的文件将被删除,但目录不会被删除。通过选择“总是重新创建目标”,每次都会删除并重新创建镜像目标。
  3. 源镜像路径。当它不是完整路径时,它将被视为项目相对路径。
  4. 目标镜像路径。当它不是完整路径时,它将被视为项目相对路径。

Copy or Move Files(复制和移动文件):复制或移动文件将给定资产复制或移动到指定属性的目标。

特性

  1. 复制或移动资产。
  2. 要从源资产路径中删除的目录路径数。例如,如果您正在复制" Assets/Characters/hero 001/Textures/body . png ""/Foo/Var "并将“删除目录深度”设置为2,则资产将被复制到"/Foo/Var/hero 001/Textures/body . png ".
  3. 复制或移动文件的目标路径。

Import Unity Packages(导入unity包):

导入Unity包导入。给定目录中的unity包。该节点没有输入或输出。

特性

  1. 导入的目录路径。找到unitypackage文件。
  2. 在导入时打开对话框。
  3. 全部导入。子文件夹中的unitypackage文件。

Export As UnityPackage(作为单位包导出):

导出为单位包导出指定属性的给定资产。“导出为单位包”中的大多数选项都基于ExportPackageOptions.

特性

  1. 要导出的包名。
  2. 导出操作将异步运行,并在导出完成后在文件浏览器窗口中显示导出的包文件。
  3. 将递归遍历列出的所有子目录,并包含其中的所有资源。
  4. 除了列出的资产路径之外,还将包括所有依赖资产。
  5. 导出的包将包括所有库资源,即。项目设置位于项目的“资源库”文件夹中。

可寻址节点

AssetGraph为可寻址对象提供节点。如果您安装了,它们将可用地址1.6或更高版本在您的项目中。Addresables可以像AssetGraph一样从Unity Package Manager安装。

Set Asset Address(设置资产地址):设置资产地址为接收资产设置地址。

特性

  1. 是否为此资产设置地址。
  2. 匹配资产路径的正则表达式路径,以便按模式配置地址。
  3. 与②一起使用的中继模式,用于配置资产地址。\例如,如果您有“./Prefabs/(。)/.预制"作为匹配模式和"块数/$1 "作为替换模式,然后有"资产/预置/积木/桔子2x2 .预置"作为接收资产,配置资产的地址将是"积木/桔子2x2 ".
  4. 是否将资产设置为全部小写。

Set Asset Group(设置资产组):设置资产组配置传入资产的可寻址组。

特性

  1. 要添加新资产的组。

Set Asset Label(设置资产标签):设置资产标签为传入资产配置可寻址标签。

特性

  1. 是否覆盖标签。如果设置为false,节点将追加标签。
  2. 要设置的标签。*可用于将组名设置为标签。“,”可用于设置多个标签。

Build Addressable Assets(构建可寻址资产):构建可寻址资产执行可寻址资产的构建。

特性

  1. 用于此生成的可寻址配置文件。
  2. 用于此生成的生成脚本。
  3. 是否执行上次版本的更新。
  4. 指定要更新的内容状态文件。

高级主题

使用资产图配置资产包

Unity包含了AssetBundle设置的标准功能,但是理解这些功能和AssetGraph中的功能之间的关系是很重要的。使用Unity的标准功能,可以从资产检查器中设置要包含的每个资产的资产包名称,并且可以根据构建管道来构建资产包。从编辑器脚本中调用的BuildAssetBundles函数。另一方面,对于AssetGraph,记住不要使用这种方法是很重要的。与标准方法不同,使用AssetGraph构建资产包有更灵活的选择,例如指定属于每个资产包的资产,按AssetGraph中的Build按钮,或者从脚本调用该函数。

Adding Custom Nodes(添加自定义节点):

内置节点有许多用途,但是您可能还想创建一个执行特定类型处理的节点。在这些情况下,您可以添加运行自己的流程的自定义节点。转到菜单>窗口>资源图>创建节点脚本>自定义节点脚本。将在生成的目录下创建自定义节点脚本,但是您可以移动或重命名脚本。默认情况下,在自定义项下创建自定义节点。

若要实现自定义节点,请创建一个从Node继承的类。自定义节点还需要具有CustomNode属性。CustomNode属性指定显示位置(菜单层次结构、排序顺序)。例如,从菜单生成的自定义节点脚本的设置如下所示:

\ [CustomNode("Custom/MyNode ",1000)]

有关节点类的更多信息,请参考API文档.

Adding Custom Filters(添加自定义过滤器):

您可以使用以下工具根据类型或文件路径对资产进行分类按过滤器拆分,但您可能也想使用其他过滤器。例如,您可能只想获得带有alpha通道的纹理。在这些情况下,您可以添加自定义过滤器。转到菜单>窗口>资源图>创建节点脚本>过滤脚本。将在UnityEngine下创建一个自定义过滤器脚本。AssetBundleGraph /生成的目录。您可以重命名和移动衍生的脚本。添加自定义过滤器后,单击“按过滤器拆分”中的+号,将出现一个下拉菜单,用于添加过滤器选项。

若要自行添加自定义筛选器,请创建一个实现IFilter界面。自定义筛选器还需要CustomFilter属性。可以在过滤器设置下拉菜单中的GUI显示名称处设置自定义过滤器属性。在上面的示例中,它将显示如下:

[自定义过滤器(“我的过滤器”)]

\有关的更多信息IFilter接口,请参考API文档。

支持自定义资产

当您需要支持自定义资产类型时,Unity的脚本导入器可以实现以便导入它们。创建一个配备了IImporterSettingsConfigurator接口的类,以便在AssetGraph中使用ScriptedImporter支持的导入程序。配备了IImporterSettingsConfigurator的类控制如何管理受支持的自定义ScriptedImporter属性。此外,需要设置类的“CustomAssetImporterConfigurator”属性。CustomAssetImporterConfigurator属性指定模板文件名,用于支持自定义数据类型、GUI显示名称和保存默认设置。例如,XYZImporter的属性如下所示:

\[CustomAssetImporterConfigurator(type of(XYZImporter)," XYZ "," setting . XYZ ")]\ public class xyzimportsettings configurator:IAssetImporterConfigurator

模板文件必须放在项目的SettingTemplate目录中。您可以在项目中任意多个位置创建任意多个设置模板目录。

编辑资产

像材料这样的资产没有导入器,所以很难在每个平台上编辑它们,但是在实际生产中,有时您会希望这样做。您可以使用直接编辑资产直接修改资产。如果您想以自己的方式编辑资源,可以添加自定义修改器来完成。转到菜单>窗口>资源图>创建节点脚本>修改器脚本。将在UnityEngine下创建一个自定义修改器脚本。AssetBundleGraph /已生成。您可以随意重命名和移动新脚本。添加自定义修改器后,可以从修改器的下拉菜单中选择自定义修改器。

自定义修饰符是一个实现IModifier接口,并具有CustomModifier属性。指定修改器将更改的类型以及将在GUI中显示的修改器名称。

\ [CustomModifier("MyModifier ",typeof(RenderTexture))]

\有关的更多详细信息IModifier接口,请参考API文档。

自动创建预设

有时,你可能会有很多典型的游戏对象,它们带有添加到你的项目中的脚本和组件。通过使用从组创建预置节点,您可以从组中创建这些典型的预设。如果你想为你的项目创建预置,你可以在你的项目中添加自定义的预置生成器。

转到“菜单”>“窗口”>“资源图”>“创建节点脚本”>“预置构建器脚本”,添加自定义预置构建器。将在UnityEngine下创建一个PrefabBuilder脚本。AssetBundleGraph /生成的目录。可以随意重命名和移动脚本。添加脚本后,您可以从下拉菜单中选择已经添加的预置构建器。

与其他自定义脚本一样,自定义预设生成器需要CustomPrefabBuilder属性。从CustomPrefabBuilder中指定PrefabBuilders的GUI显示名称。在上面的示例中,设置了这些属性。

[CustomPrefabBuilder(" MyPrefabBuilder ")]

要创建PrefabBuilder,请创建一个实现IPrefabBuilder界面。详情请见IPrefabBuilder,请参考API文档。

当预设生成器脚本改变时,重新构建所有预设

有时你可能想在修改你的预置脚本后重建所有的预置。你可以通过版本化你的预置来强制重建预置。可以在CustomPrefabBuilder属性中完成版本控制。

[CustomPrefabBuilder(" MyPrefabBuilder ","版本1")]

修改一个版本字符串将导致所有的预置使用那个预置构建脚本来重建。

自动创建衍生资产

例如,在为不同容量的智能手机准备资源时,您可能希望更具体地准备纹理和材质,而不仅仅是每个平台。在这些情况下,根据设备的规格准备可调整大小的纹理和材料是很重要的。

通过使用“生成资源”,可以衍生和使用从原始资源生成的相关资源。如果要扩展除纹理缩放器或复制资源之外的功能,可以通过将AssetGenerator添加到项目中来实现。

转到“菜单”>“窗口”>“资源图”>“创建节点脚本”>“资源生成器脚本”以添加资源生成器。将在UnityEngine下创建一个AssetGenerator脚本。AssetBundleGraph /生成的目录。您可以随意重命名或移动脚本。添加脚本时,可以从AssetGenerator的下拉菜单中选择添加的AssetGenerators。

与其他自定义脚本一样,AssetGenerator需要具有CustomAssetGenerator属性。从CustomAssetGenerator指定资产生成器的GUI显示名称和版本。在上面的例子中,给出了这些属性。

\ [CustomAssetGenerator("我的生成器"," 1.0版")]

\若要创建资产生成器,请创建一个实现IAssetGenerator界面。详情请见IAssetGenerator,请参考API文档。

构建后运行后处理

您可能希望有后处理,比如在图形执行完成时获得通知。添加后处理脚本时,可以在图形执行后自动获得结果。转到“菜单>窗口>资源图>创建节点脚本>后处理脚本”以添加后处理脚本。该脚本将在UnityEngine下创建。AssetBundleGraph /生成的目录。可以随意重命名和移动脚本。后处理脚本有一个名为DoPostprocess的方法,它使您能够以AssetBundleBuildReport和导出报告.

若要实现后期处理,请创建一个带有IPostprocess接口已实现。更多关于IPostprocess,请参考API文档。

从脚本构建图表

当您自己扩展编辑器和自定义菜单时,您可能希望从脚本中运行AssetGraph图。在这些情况下,您可以使用AssetBundleGraphUtility. AssetBundleGraphUtility可以只在一个图形上运行,也可以在多个图形上运行。有关的更多信息AssetBundleGraphUtility,请参考API文档。

使用命令行工具执行
与资产捆绑浏览器一起使用

这资产捆绑浏览器是一个工具,允许您设置资产包、检查资产包的内容并构建它们。您可以从Unity Package Manager安装AssetBundle浏览器。

当您想要检查由AssetGraph设置的资产包中包含的文件时,您可以通过AssetBundle浏览器使用AssetGraph。将AssetBundle浏览器和AssetGraph安装到项目中后,您可以从AssetBundle浏览器的下拉菜单中的项目设置中选择图形。选择后,您可以检查AssetGraph设置的资产捆绑设置。

此外,由于GraphTool端的资产捆绑设置是由图形设置的,因此它们在asset bundle浏览器中是可见的,但不可编辑。

使用版本控制系统

AssetGraph隐式创建了几个文件和目录。

  • 隐藏物:存储由图形创建的文件的文件配置。当图形运行时,删除缓存文件夹将导致相关文件(如由图形构建的预设)重新创建,但清除缓存文件夹不会对您的项目造成任何损害。(您也可以从菜单中清除缓存)
  • 保存的设置:存储需要保留的重要配置,例如您配置的导入设置。这应该在团队中保存和共享,以使图表正常工作。项目当前未使用的不必要的SavedSettings文件可以通过单击“窗口”>“资产图”>“清理SavedSettings”来删除。

如果您使用版本控制系统共享您的项目,这里有一个快速配置指南。

忽略提交

  • 缓存中的所有内容

不要忽视

  • SavedSettings下的所有内容

今天的字数可以说是最多最多的一期了,我把官网的插件介绍完全复制过来了,也是为了大家看了方便,毕竟官网是英文的,我不介入翻译软件看起来还挺费劲的,我相信各位读者有些人也是一样的。

今天是2024年11月23日

重复一段毒鸡汤来勉励我和你

你的对手在看书

你的仇人在磨刀

你的闺蜜在减肥

隔壁的老王在练腰

而你在干嘛?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/480512.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker pull镜像拉取失败

因为一些原因,很多镜像仓库拉取镜像失败,所以需要更换不同的镜像,这是2024/11/25测试可用的仓库。 标题1、 更换镜像仓库的地址,编辑daemon.json文件 vi /etc/docker/daemon.json标题2、然后将下面的镜像源放进去或替换掉都可以…

天锐绿盾加密软件与Ping32联合打造企业级安全保护系统,确保敏感数据防泄密与加密管理

随着信息技术的飞速发展,企业在日常经营过程中产生和处理的大量敏感数据,面临着越来越复杂的安全威胁。尤其是在金融、医疗、法律等领域,数据泄漏不仅会造成企业巨大的经济损失,还可能破坏企业的信誉和客户信任。因此,…

人工智能-深度学习-Torch框架-手动构建回归流程

from sklearn.datasets import make_regression import math import random import torch from sklearn.datasets import make_regression: 导入make_regression函数,用于生成回归数据集。 import math: 导入math模块,用于进行数学计算,例如…

java全栈day10--后端Web基础(基础知识)之续集

一、Servlet执行流程 二、Http协议(相对Tomcat和servlet重要一点) 2.1Http-概叙 2.2Http-请求协议 2.2.3请求数据格式 2.2.3请求数据获取 先启动服务器 访问/hello Servlet 访问浏览器端Http协议数据 查看数据

web安全之信息收集

在信息收集中,最主要是就是收集服务器的配置信息和网站的敏感信息,其中包括域名及子域名信息,目标网站系统,CMS指纹,目标网站真实IP,开放端口等。换句话说,只要是与目标网站相关的信息,我们都应该去尽量搜集。 1.1收集域名信息 知道目标的域名之后,获取域名的注册信…

基于YOLOv8深度学习的智慧农业棉花采摘状态检测与语音提醒系统(PyQt5界面+数据集+训练代码)

智慧农业在现代农业中的应用日益广泛,其核心目标是通过智能化手段实现农业生产的自动化、精准化和高效化,而精准采摘技术作为智慧农业的重要组成部分,正受到越来越多的关注。棉花作为一种经济作物,其采摘过程传统上依赖于人工劳作…

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)

使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost) vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。 链接错误症状 以tinyxml2为例,程序中调用tinyxml2的函数后,若vcpkg中同时存在opencv和…

gitlab自动打包python项目

现在新版的gitlab可以不用自己配置runner什么的了 直接写.gitlab-ci.yml文件就行,这里给出一个简单的依靠setup把python项目打包成whl文件的方法 首先写.gitlab-ci.yml文件,放到项目根目录里 stages: # List of stages for jobs, and their or…

蓝桥杯每日真题 - 第24天

题目:(货物摆放) 题目描述(12届 C&C B组D题) 解题思路: 这道题的核心是求因数以及枚举验证。具体步骤如下: 因数分解: 通过逐一尝试小于等于的数,找到 n 的所有因数…

YOLOv10改进,YOLOv10添加TransNeXt中的ConvolutionalGLU模块,CVPR2024,二次创新C2f结构

摘要 由于残差连接中的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉Transformer模型往往无法形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,作者提出了一种聚合注意力(Aggregated Attention),这是一种基于仿生设计的token混合器,模拟了生物的中央凹…

(微信小程序)基于Spring Boot的校园失物招领平台的设计与实现(vue3+uniapp+mysql)

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

快速排序hoare版本和挖坑法(代码注释版)

hoare版本 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>// 交换函数 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }// 打印数组 void _printf(int* a, int n) {for (int i 0; i < n; i) {printf("%d ", a[i]);}printf("…

C++ 【异步日志模块和std::cout << 一样使用习惯替代性好】 使用示例,后续加上远程日志

简单 易用 使用示例 CLogSystem::Instance().SetLogLevel( E_LOG_LEVEL::LOG_LEVEL_INFO | E_LOG_LEVEL::LOG_LEVEL_DEBUG | E_LOG_LEVEL::LOG_LEVEL_DUMP );CLogSystem::Instance().SetFileInfo(true, "./log.txt");LogDebug() << 12;LogInfo() << &qu…

LINUX c++环境

安装docker 拉取code-server镜像 1.安装GCC&#xff0c;GDB yum -y install gcc yum -y install gcc-c yum install gdb 创建文件夹和文件 linux下C开发_linux c-CSDN博客 第一步:预处理&#xff1a;将源代码的.c 、.cpp 、.h 等文件包含到一个文件中&#xff0c;预处理结…

【论文阅读】 Learning to Upsample by Learning to Sample

论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程&#xff08;1&#xff09;初步设计&#xff08;2&#xff09;第一次修改&#xff08;3&#xff09;第二次修改&#xff08;4&#xff09;第三次修改 六、DySample四种变体七、复…

源码安装triton 及出错处理,跟最简应用示例 01 vectorAdd 验证

-1, 源码安装 triton出错信息 WARNING: The user site-packages directory is disabled. error: cant create or remove files in install directory The following error occurred while trying to add or remove files in the installation…

EC2还原快照

EC2还原快照 AWS EC2 磁盘快照 是您 Amazon Elastic Block Store (EBS) 卷在特定时间点的增量备份。您可以使用快照创建 EBS 卷的副本&#xff0c;以便在出现故障时恢复数据或将数据迁移到其他区域。 创建磁盘快照 找到ec2实例挂载的磁盘&#xff0c;直接选择创建快照 等待创建…

提升数据分析效率:Excel Power Query和Power Pivot的妙用

在日常工作中&#xff0c;微软的Excel Power Query和Power Pivot是提升数据处理和分析效率的利器。他们的特点也各不相同&#xff0c;Power Query侧重数据的高效导入与清洗&#xff0c;Power Pivot更测试数据建模与复杂计算。下面将介绍它们各自的功能&#xff0c;并提供应用案…

优先算法 —— 双指针系列 - 快乐数

1. 快乐数 题目链接&#xff1a; 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/happy-number/description/ 2. 题目解析 示例1&#xff1a; 示例2&#xff1a; 3. 算法原理 两种情况&#xff1a;我们可以把两种情况都看作为循环&#xff0…

【C++打怪之路Lv16】-- map set

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…