博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNITY 网格合并
阅读量:5775 次
发布时间:2019-06-18

本文共 3196 字,大约阅读时间需要 10 分钟。

using System.Collections;using System.Collections.Generic;using UnityEngine;public class NewBehaviourScript : MonoBehaviour {    public Avatar a;	// Use this for initialization	void Start () {        MeshFilter[] meshFilters = GetComponentsInChildren
(); Debug.Log("meshFilters:" + meshFilters.Length); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; MeshRenderer[] meshRendererList = GetComponentsInChildren
(); //获取自身和所有子物体中所有MeshRenderer组件 Material[] mats = new Material[meshRendererList.Length]; //新建材质球数组 Texture2D[] texList = new Texture2D[meshRendererList.Length]; int i = 0; while (i < meshFilters.Length) { //mats[meshFilters.Length-i-1] = meshRendererList[i].sharedMaterial; //获取材质球列表 mats[i] = meshRendererList[i].sharedMaterial; // Color c = mats[i].color; /* * */ Texture2D tx = mats[i].GetTexture("_MainTex") as Texture2D; Texture2D tx2D = new Texture2D(tx.width, tx.height, TextureFormat.ARGB32, false); tx2D.SetPixels(tx.GetPixels(0, 0, tx.width, tx.height)); tx2D.Apply(); // texList[i] = tx2D; combine[i].mesh = meshFilters[i].sharedMesh; //combine[i].transform = meshFilters[i].transform.localToWorldMatrix; combine[i].transform = transform.worldToLocalMatrix * meshFilters[i].transform.localToWorldMatrix; meshFilters[i].gameObject.SetActive(false); i++; } // string shName = mats[0].shader.name; Material matNew = new Material(mats[0].shader); matNew.CopyPropertiesFromMaterial(mats[0]); Texture2D texNew = new Texture2D(1024, 1024); matNew.SetTexture("_MainTex", texNew); Rect[] rects = texNew.PackTextures(texList, 0);//, 2048); // GameObject quad = GameObject.Find("Quad"); quad.GetComponent
().material.mainTexture = texNew; Mesh meshNew = new Mesh(); // i = 0; while (i < meshFilters.Length) { int uvLen = combine[i].mesh.uv.Length; Vector2[] uvData = combine[i].mesh.uv; for(int j = 0;j< uvLen;j++) { uvData[j].x = uvData[j].x * rects[i].width + rects[i].x; uvData[j].y = uvData[j].y * rects[i].height + rects[i].y; } //直接设不行 //combine[i].mesh.uv = uvData; meshFilters[i].mesh.uv = uvData; combine[i].mesh = meshFilters[i].mesh; i++; } transform.GetComponent
().mesh = meshNew; transform.GetComponent
().name = "xxx"; transform.GetComponent
().mesh.CombineMeshes(combine, true);//,truefalse); //为合并后的GameObject指定材质 //transform.GetComponent
().sharedMaterials =mats;// materialNew;// transform.GetComponent
().sharedMaterial = matNew; transform.gameObject.SetActive(true); } // Update is called once per frame void Update () { }}

  

转载地址:http://mtoux.baihongyu.com/

你可能感兴趣的文章
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
java入门第二季--封装--什么是java中的封装
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>
如何用UPA优化性能?先读懂这份报告!
查看>>
这些Java面试题必须会-----鲁迅
查看>>
Linux 常用命令
查看>>
NodeJS 工程师必备的 8 个工具
查看>>
CSS盒模型
查看>>
ng2路由延时加载模块
查看>>
使用GitHub的十个最佳实践
查看>>
全面了解大数据“三驾马车”的开源实现
查看>>
脱离“体验”和“安全”谈盈利的游戏运营 都是耍流氓
查看>>
慎用!BLEU评价NLP文本输出质量存在严重问题
查看>>
基于干净语言和好奇心的敏捷指导
查看>>