在Unity导入资源后,我们通常需要做许多设置,这些操作通常很繁琐,并且容易出错,最好的办法是使用自动的pipline处理,因为不是项目中的每一个人都十分清楚资源的结构设计。这篇文章主要探讨如何通过自动的方式实现动画模型资源的定制处理。
AssetPostprocessor
在Unity中,AssetPostprocessor类能够在导入资源时,或导入资源后捕获到相应的信息。
在模型(Model)
导入的过程中,钩子函数的调用顺序如下:
OnPreporcessModel
在刚进入导入阶段前,会调用这个函数。我们能够重写ModelImporter
的设置来更改导入的模型的通用信息。OnAssignMaterialModel
一旦网格和材质导入,这些信息就会关联到模型上,在关联之前,会调用这个函数。因此改变模型材质通常要更改这个函数。OnPostprocessGameObjectWithUserProperties
关联好模型的渲染信息后,会调用这个函数来处理用户信息。OnPostprocessModel
这是最后一个函数,当函数运行完,则对象创建完成。这个函数有一个参数,它是这个实例对象自己。由于GameObject
是引用对象,因此改变属性的操作,例如:增加脚本,更改位置,是可以带出函数作用域,保存到最终预设中的。更多情况下,我们是要更改它的ModelImporter
属性。
ModelImporter model = (ModelImporter) assetImporter;
另一方面,我们可以获取gameObject.name
,并依赖某些命名规则,以对导入的资源进行分类。
实际案例
由于使用了状态机控制角色动作,有些导入的FBX动画需要更改为Loop
。经统计名称中包含wait
、walk
、run
、air
、dizziness
的动画需要设置为循环,依照上面的原理,实现
代码如下:
using UnityEngine;
using System.Collections;