unity-网格编程08

举报
LittleU 发表于 2022/01/15 23:28:25 2022/01/15
【摘要】 使用了之前的网格编程方式,仅仅知道是如何生成的网格,那么现在使用的高级API,来编程,那么高级api与之前的api到底有哪些不同呢?首先按照之前的方法来理解,首先有网格这样的数据,然后一股脑的在内存中开辟空间,再将这些数据赋值到mesh这个组件上.而如果模型足够复杂时,这势必会在某一帧中造成巨大的计算.如果使用了高级api,直接在申请的内存中操作首先与之前的一样,添加脚本依赖,以及赋值[Re...

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。