关于unity Mesh 文件转存及解析
一、 前言:
unity 版本升级过程中(特别是升级到unity v2018 及以上版本),Mesh 文件格式有较大的调整,导致资源的使用不兼容。
解决以上的问题的办法: 转存Mesh 文件,在新版本中再反向解析处理。
转存解析代码涉及公司项目,就不给出了
二、我这里留下自己使用上遇到的问题:
UV存储格式不固定
在mesh 文件中,会存储uv 信息,作用是记录贴图的坐标。
unity中 Mesh 默认使用的Vector2 格式。
可以使用unity API mesh.uv 直接获取mesh 数据
但转存的过程中,发现存在一部分资源UV数据丢失,
原来其mesh uv 使用的是Vector3 及Vector4格式。而mesh.uv仅仅支持Vector2
这就导致转换中UV的数据丢失了(z、w)的信息
解决办法:
参考大佬的文章Unity - 导出的FBX模型,无法将 vector4 保存在 uv 中
发现Unity 官方给到的API SetUVs、GetUVs 支持 vector3 等格式
void SetUVs(int channel, Vector4[] uvs) //的 API 设置Mesh UV
void GetUVs(int channel, Vector4[] uvs) //的 API 获取Mesh UV
那么问题就简单了,使用SetUVs 替换 mesh.uv 的使用。
完美解决,下班!