一种打包方式导致的模型效果异常记录
2022-01-19 本文已影响0人
taiyosen
今天遇到一个问题,某个模型在unity里效果正常的(如图1),但是打包之后效果异常(如图2)。异常的地方主要是流光效果,


首先经过一番检查和测试,排除了shader变体/材质球/预制体设置错误或者打包失败(美术修改效果后构建版本没有如预期般重新打包)等原因。
- 这个模型使用了第2套uv(严谨点说应该是另一套user自定义uv)来制作流光特效,然而并不是所有部位都有问题,仅个别模型部位出现问题,故排除shader变体原因。
- 对材质球和预制体进行轻微修改重新打包,问题依然存在,故排除打包问题。
- 为了在UI上展示更多细节,美术制作了两套fbx模型,UI模型有问题,而场景模型正常,两者使用了相同的材质球,故排除材质球设置问题。
而当我将UI模型使用的mesh改成场景模型对应的mesh时(即使用了场景fbx里的模型),则显示正常。或者我把使用第2套uv改为使用第1套uv制作流光特效,也可以正常显示。于是原因更倾向于在模型身上。
如图3所示是我们的UI模型,包含所有部位,其中部分部位打包后显示异常。由于所有部位都在一个模型里,意味着美术会持续地往里面加新部位,所以这个模型文件处于持续修改状态。

最后该问题还是解决了,原因在于美术忽略了我们制作模型的一个规则。注意到这个模型名字为model1.fbx
,而我们的规则是名字中含有"@"
符号的不单独打包。如图4所示,问题部位的.ab.manifest
显示对model1.fbx
有依赖。

而解决此问题的方法便是重命名
model1.fbx
为model1@xxx.fbx
,打包后问题部位(现在已经是正常部位了)已经不在对新的model1@xxx.fbx
产生依赖,而显示也一切正常。
至于深层次原因,猜测是fbx文件一直在修改,导致打包后去获取mesh时可能产生了混乱,比如获取到的顶点错了之类的,进而导致显示异常。原理不甚了了,仅做记录备忘。