使用了之前的网格编程方式,仅仅知道是如何生成的网格,那么现在使用的高级API,来编程,那么高级api与之前的api到底有哪些不同呢?
首先按照之前的方法来理解,首先有网格这样的数据,然后一股脑的在内存中开辟空间,再将这些数据赋值到mesh这个组件上.
而如果模型足够复杂时,这势必会在某一帧中造成巨大的计算.
如果使用了高级api,直接在申请的内存中操作
首先与之前的一样,添加脚本依赖,以及赋值
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class AdvancedMultiStreamProceduralMesh : MonoBehaviour
...
var mesh = new Mesh
{
name = "Procedural Mesh"
};
GetComponent<MeshFilter>().mesh = mesh;
....
这与之前的代码是相同的,也就不必再做解释.
那么首先,该高级API的用法,就是首先需要申请一款内存空间,这个内存空间直接可以用代码操作:
//1.分配可写网格数据列表,可以是多个
MeshDataArray meshDataArray = Mesh.AllocateWritableMeshData(1);
然后,再将之保存
var mesh = new Mesh
{
name = "Procedural Mesh"
};
Mesh.ApplyAndDisposeWritableMeshData(meshDataArray, mesh);
GetComponent<MeshFilter>().mesh = mesh;
那么,同样的道理,剩下的代码,就需要在这里来添加了.