如何修改Mesh的顶点数据
笔者是在修改Mesh的uv的过程中发现错误的。先来看看出错的代码(为了方便起见,这里只是将所有uv设置为0):
for (int i = 0; i < _Mesh.uv.Length; i++)
{
_Mesh.uv[i] = new Vector2();
}
这段代码很简单,无非就是遍历Mesh的uv数组,对其中每个元素都设置为0。然而事实上这段不仅非常非常非常耗时(遍历一个6500长度的数组居然要300+ms),更要命的是它不能达到修改UV的目的。
出现这种问题的原因是——通过Mesh.uv得到的是一个新的数组,也就是说修改它并不能修改Mesh中的源数据。
为了验证这个想法,我们来写一段非常简单的代码,如下图所示: