[ERROR]
Instantiating mesh due to calling MeshFilter.mesh during edit mode. This will leak meshes. Please use MeshFilter.sharedMesh instead.
发生时间:在编辑器中调用了以下代码:
Mesh mesh = GetComponent<MeshFilter>().mesh;
//这里写对mesh的改变
GetComponent<MeshFilter>().mesh = mesh;
发生原因:Editor中创建了新的mesh保存在内存中
错误效果:无直接效果,所有代码任然可以正常运行,只是在Console上会有一条报错的提示
解决方法:
1.如果确实不需要这个新的mesh,并且可以改变其引用的原mesh,那么把代码改成以下就可:
Mesh mesh = GetComponent<MeshFilter>().sharedMesh;
//这里写对mesh的改变
GetComponent<MeshFilter>().mesh = mesh;
2.如果需要这个新mesh,不想改变其引用的原mesh,那么把代码改成以下就可:
Mesh mesh = new Mesh();
#if UNITY_EDITOR
MeshFilter mf = GetComponent<MeshFilter>();
Mesh meshCopy = Mesh.Instantiate(mf.sharedMesh) as Mesh;
mesh = meshCopy;
#else
mesh = GetComponent<MeshFilter>().mesh;
#endif
//这里写对mesh的改变
GetComponent<MeshFilter>().mesh = mesh;
这个会复制出一个新的mesh并且把它赋值给物体