资源导入工作流的三种方案
- 手动编写工具
- 利用Presets功能
- 利用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按钮执行整个资源处置流程
· 当然也可以删除后续节点,只运行到资源导入设置复写节点,来完成导入工作流