性能优化(7)Unity工作流(2)——资源导入工作流

  1. 1. 资源导入工作流的三种方案

资源导入工作流的三种方案

  1. 手动编写工具
  2. 利用Presets功能
  3. 利用AssetGraph工具
  • 一、手动编写工具
    · 所有资源都有对应的OnPreprocessXXX接口,会在资源被导入时调用,也是我们修改资源导入设置的最佳时机
    · 在这个接口下我们会拿到导入资源的Importer接口,修改它的导入设置属性即可完成对导入设置的修改
    · 伪代码:

    · 虽然通过这个对象接口修改资源导入很直接简单,但还需要思考几个问题:
    · 1.同类型资源也有不同的设置,我们通过一套代码怎么能实现多套配置呢,显然我们不可能将所有配置通过代码分支判断来完成,这就要通过不同文件夹对不同配置的相同类型资源进行区分;或者通过文件名区分。这样我们的导入设置工具就还需要对路径进行管理,并要做表达式或通配符的资源搜索管理。
    · 还需要对导入资源设置做持久化,可以利用继承ScriptableObject对象来持久化设置完成。也可以通过Preset来完成
    · 2.即使完成了对资源的导入设置,后续在编辑过程中,仍可能对其进行修改,或者由于其他开发者误操作导致资源设置发生变化。这时该怎么办呢?
    · 大部分开发者是将导入工作流与打包发布工作流结合起来,就是在打包发布前对导入设置重新进行检查设置。但这样有一个弊端,就是:某些错误或性能问题只有到真包上才会发现,而我们希望在编辑器模式下能够立即处理来避免误操作修改。这就要引出一个新对象:AssetsModifiedProcessor

  • 二、利用Preset

    · Presets的保存与应用:
    · 1. 在我们创建好一个游戏对象后,在其Inspector组件界面中,所有组件的右上角都有3个按钮

    · 2. 点击中间的按钮,我们可以将当前组件的属性通过Save current to…按钮序列化成Asset,并在下一次打开该按钮后应用此组件设置到游戏对象上
    · 同样资源的导入设置也可以持久化成Presets
    · 3. 我们还可以将Presets资源添加到资源设置中的Preset Manager中,这样在下次创建该对象组件或导入新资源时,都可以将该组件Presets或资源导入设置应用到新的对象或新资源上

    · 因此我们可以在Preset Manager中根据资源类型和不同的需求添加多个Preset来完成资源导入设置
    · 在Preset Manager中还可以为每一个Preset添加高级过滤搜索选项

    · 解决导入后的人为修改导入设置,或误操作导致设置变化的问题:
    · 利用之前提到的AssetsModifiedProcessor资源变化后调用的回调接口重新设置导入设置,只需将文档中提供的代码放到Editor文件夹下,同时删除Preset Manager中的默认预设,并将Presets放到对应资产文件夹中即可

  • 三、AssetGraph工具
    · 从Unity Github官方仓库中搜索AssetGraph,并通过PakageManager下载安装

    · 并通过Unity下的Windows菜单 —— AssetGraph —— Open Graph Editor打开AssetGraph编辑器,并创建一个默认的AssetGraph资源

    · 这时我们可以向其中添加各种资源处理节点
    · 最常用的流程示例:
    加载资源目录节点 —— 过滤节点 —— 分组节点 —— (导入设置复写节点) —— 打包配置节点 —— 打包执行节点与输出节点

    · 可以勾选菜单中Use As Postprocessor来检测新资源导入的回调流程,并可以通过Execute按钮执行整个资源处置流程
    · 当然也可以删除后续节点,只运行到资源导入设置复写节点,来完成导入工作流