Unity导入模型经常出现纹理丢失的问题。本人做了个测试,发现纹理如果使用中文名称或者纹理处于中文目录下,都会出现问题。
测试如下:
使用max建立4个测试模型。从左边到右边的4个模型,使用的纹理路径分为别:
中文图片.JPG; En_img.JPG; 中文文件夹\En_img_in_ZH.JPG; 中文文件夹\中中图片.JPG
将场景导出为test.PBX,将PBX文件和然后将4个纹理图片拷贝到Unity的Assets目录下。
这里注意。由于Unity会对每一个纹理文件文件生成全局的唯一ID,因此就算你把所有的纹理文件丢在Unity工程的一个目录下也可以找到。
不过这带来的问题是纹理名不能有重名。
将test.PBX拖入场景,发现只有不在中文目录下的英文纹理名能被正确加载。
同时可以注意到,Unity成成的Materials文件夹内,纹理名为中文的.mat文件都变成了乱码。
同样的,放在中文路径下的纹理,会出现找不到纹理文件。
当然,在这里可以手动指定纹理文件。如果模型多的话自然是很麻烦的事。
总结一下,导出模型时,纹理要注意以下几点:
1、建模的时候,纹理名不要使用中文。
2、建模的时候,纹理文件不要放在中文目录下。但是可以放在Unity工程里面的中文目录下。
3、工程中每个纹理名不要重名。
4、修改了纹理以后,在Unity中删除模型的Materials文件夹,然后重新导入PBX即可更新。