Unity 关于CombineMeshes的一点使用心得

类 Mesh

方法 public void CombineMeshes(CombineInstance[] combine)

例 mesh.CombineMeshes(combine)

1.参数combine 的数组长度不能大于int16, 如有大量Mesh需要合并, 需要分批次进行

2.mesh中原有的Mesh将会被combine 中Mesh所代替, 所以如果希望保留调用者Mesh中的mesh数据, 需要一并放进combine 数组中, 并在调用CombineMeshes方法之前为原mesh引用创建新的实例

下面的例子展示了创建4个cube: [g0, g1, g2, g3], 并将g1g2g3的模型合并到g0上, (注意: 本次合并操作对g1g2g3本身并无影响, 合并后的g0将会有4个cube模型)

void Awake () {
        GameObject g0 = GameObject.CreatePrimitive(PrimitiveType.Cube);

        GameObject g1 = GameObject.CreatePrimitive(PrimitiveType.Cube);
        g1.transform.position = new Vector3(10, 0, 0);
        GameObject g2 = GameObject.CreatePrimitive(PrimitiveType.Cube);
        g2.transform.position = new Vector3(0, 10, 0);
        GameObject g3 = GameObject.CreatePrimitive(PrimitiveType.Cube);
        g3.transform.position = new Vector3(0, 0, 10);

        mergerCombine(g0, g1);
        mergerCombine(g0, g2);
        mergerCombine(g0, g3);
}

void mergerCombine(GameObject ori, GameObject tar)
{
        MeshFilter[] meshFilters1 = ori.GetComponents<MeshFilter>();
        MeshFilter[] meshFilters2 = tar.GetComponents<MeshFilter>();

        MeshFilter[] meshFilters = new MeshFilter[meshFilters1.Length + meshFilters2.Length];
        meshFilters1.CopyTo(meshFilters, 0);
        meshFilters2.CopyTo(meshFilters, meshFilters1.Length);
        CombineInstance[] combine = new CombineInstance[meshFilters.Length];
        for (int i = 0; i < meshFilters.Length; i++)
        {
            combine[i].mesh = meshFilters[i].sharedMesh;
            combine[i].transform = meshFilters[i].transform.localToWorldMatrix;
        }
        ori.transform.GetComponent<MeshFilter>().mesh = new Mesh();
        ori.transform.GetComponent<MeshFilter>().mesh.CombineMeshes(combine);
}
时间: 2024-10-11 10:16:27

Unity 关于CombineMeshes的一点使用心得的相关文章

一点小心得

项目中会遇到这样的逻辑处理:根据不同类型调用不同的方法,通常会用到if else等语句,感觉不太好: 1,应该面向接口编程 2,尽量避免使用if语句 实例:原来代码,接口Iservice的实现类有 ServiceA ,ServiceB,ServiceC public static void main(String[] args) { String type = "C"; Iservice service = null; if (type.equals("A")) {

Backbone的一点使用心得

Backbone的其实感觉上上手很难,大概在一年前就想实践下,结果总是没有付诸行动,这次需求中狠狠心决定一定要使用一次看看,感受下. 可是第一步真的比较困难,因为直接看API好像没有感觉就在网上找实例看看,但是我只能说有些人在给实例的时候根本就没有考虑过新手的感受. 我曾经在看完一些教程之后的迷惑: 1. 在view中this.model到底代表的是什么? 2. template如何写? 其实这两个问题很简单,可能就是一句话的事情,也许是我对于Backbone了解很少的缘故,我当时确实不明白.

js之onload事件的一点使用心得

刚看到这篇文章,我也犯晕,实际的原因其实是函数赋值时多了个(),这标明是一个表达式,所以会直接执行函数,小小一个(),奥妙真不小. js之onload事件的一点使用心得 window.load和window.onload的意思并不只是页面加载完就执行,那要看你怎么用了,下面做了示例为大家介绍下,感兴趣的朋友可以参考下 如果我问你window.load和window.onload分别是什么意思,恐怕你会回答我:“这不是页面加载完就执行吗”. 但是答案是不一定,得看你怎么用.看一下例子吧 例1: 代

学习KMP算法的一点小心得

KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n),对于大数据肯定不行.KMP算法的精髓即设法减少不必要的枚举次数,举个例子:比如已经匹配好了单词的前k-1个字母:但第k个字母无法匹配了:那么如果前k-1个字母中存在类似回文的情况(前i个字母组成的子串和后i个字母组成的子串相同),那么指针j就变成i(相当于整体往右移动),这样来达到减少枚举次数的目

【Unity3d游戏开发】unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(转载)

此文为转载,因为最近在做U3D,有一些概念弄得不是很清楚,看到这篇博客讲的不错,就转载过来了,方便自己随时查看. ---------------------------------------------------华丽丽的分割线--------------------------------------------------------------- 太抽象的理论总是让人眼花缭乱,所以我这里以例证为主. 1,测试OnTriggerEnter和OnCollisionEnter的区别 测试:如果

[转帖]unity3D OnTriggerEnter和OnCollisionEnter的一点个人心得(主要讲区别)

觉得这个讲的挺好的,就转过来了:) 太抽象的理论总是让人眼花缭乱,所以我这里以例证为主. 1,测试OnTriggerEnter和OnCollisionEnter的区别 测试:如果两个物体A,B 两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等) A,B都有刚体(Rigidbody) A或者B中有一个勾选isTrigger或者两者都勾选isTrigger A和B都可以进入OnTriggerEnter方法,但是不可进入OnC

python+tesseract验证码识别的一点小心得

由于公司需要,最近开始学习验证码的识别 我选用的是tesseract-ocr进行识别,据说以前是惠普公司开发的排名前三的,现在开源了.到目前为止已经出到3.0.2了 当然了,前期我们还是需要对验证码进行一些操作,让他对机器更友好,这样才能提高识别率. 步骤基本上是这样的 第一步对验证码进行灰度图以及二值化 需要用到pil库可以pip下载 代码如下 def binarization(image): #转成灰度图 imgry = image.convert('L') #二值化,阈值可以根据情况修改

pyqt 学习基础 4 - creater的一点使用心得

qt creater 的使用 前言 个人认为 qt creater是个好东西,但是前提是要写过qt代码,不然拿着这个好东西也不知道干什么. 对了,qt creater.exe它的目录是在Python目录下-我的是这样,D:\Python27\Lib\site-packages\PyQt4 Qt creater 的作用 我现在在使用时,经常想要一些功能,但是不知道哪个组件实现更好,这时候,我就回去各种google,baidu ,qt实例(虽然大部分都是c++的),然后看到我想要的效果,我就用自己用

Unity 3D 粒子系统的一点经验

http://hunterwang.diandian.com/post/2012-10-21/40041523890 最近做东西需要增加效果,简单的运用了一下粒子效果,真心感觉比较难调整好效果.同时也遇到一些问题,分享一下. 如果某个绑定了 partical system 的GameObject 想要destory 掉时 , 有时unity控制台会报错,会自动提示你用DestroyImmediate(GameObject,bool)方法,则可以立即销毁场景中的物体.但是如果你的gameObjec