AnimationInstancing插件是官方推出用來處理GPU渲染骨骼動畫的一個插件。具體不表。
由於項目需要,目前需要有同屏將近200個單位同時上場戰鬥,每個單位都使用了骨骼動畫。由於傳統的SkinnedMeshrenderer組件是不能合批的。如果使用傳統的方式,勢必會有draw call過高的影響。因此經過評估後,使用官方推出的AnimationInstancing插件。
在使用的過程中,踩了一些坑。
1.在2018.3版本中,如果材質和shader沒有打在同一個AssetBundle中,在手機上會渲染不出物體。究其原因是如果分開打包,shader的GPU Instance會失效。當把材質和Shader打在同一個AB包中時,問題解決。
2.使用插件時出現了所有的戰鬥單位渲染時採用了同樣的一個mesh作爲形象,究其原因是因爲AnimationInstancing是以SkinnedMeshRender組件所在的gameobject的名字作爲一個單位的唯一標識符。而項目中所有單位的skinnedMeshRenderer組件所在的gameobject都是同名的。。因此修改了插件源碼,使用父物體的名稱作爲唯一標識符。該問題解決。