unity-网格编程08

220 阅读1分钟

使用了之前的网格编程方式,仅仅知道是如何生成的网格,那么现在使用的高级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;

那么,同样的道理,剩下的代码,就需要在这里来添加了.