游戏角色换装目前我总结有5种方式:材质层面换装、节点增删式挂载、静态蒙皮,动态蒙皮、捏脸五种方式,下面谈下5种方式的利弊。
1、材质层面换装
实现:替换贴图的方式
优点:不需要刷新骨骼,简单快捷
缺点:只适应mesh不变的情况,如果mesh变化,则会出现问题
2、节点增删式挂载
实现:在做好的角色上做预制的挂点,换装时把挂点下的预制删除,挂上新的预制,例如:更换武器
优点:实现简单,只需要基础模型做好挂节点就行
缺点:只适合除身体部件之外的更换, 穿上装备就增加了一份模型,面数会增加; 且网格不能蒙皮网格合并,drawcall也会增加
图示:weapon_hand_r为武器节点,武器分别为004和008时
3、静态蒙皮
实现:预先在模型上做好几套蒙皮了的服装,换装的时候对mesh进行开关
优点:mesh合并可以预先处理好,游戏运行时只需要开关mesh,不需要动态绑定骨骼
缺点:模型较大,载入时间过长,影响玩家体验,且美术增加或者删除服装时,需要在基础模型上进行,容易出错
4、动态蒙皮
实现:只要基于同一套骨骼开发,换装时对新皮肤绑定基础骨骼,同时刷新基础骨骼的mesh和材质,前提是基础骨骼要有所有身体部件的骨骼
优点:可以针对骨骼动画进行换装,不同mesh换装都可以,还可以通过合并mesh减少drawcall
缺点:绑定骨骼 时getname会产生GC,同时刷新mesh时会带来性能损耗
5、捏脸