UGUI动态生成Mesh图形、赋予贴图和颜色

来源:互联网 发布:淘宝卖家怎么同意退货 编辑:程序博客网 时间:2024/06/06 13:21

新建一个场景,加一个空对象

在GameObject上分别添加MeshFilter,MeshRenderer

在GameObject上挂上一个脚本

效果:

脚本:

using UnityEngine;using System.Collections;using UnityEngine.UI;public class MyMeshTest : MonoBehaviour {    VertexHelper vertexhelper = new VertexHelper();    private Mesh mesh;    public Color color;    public Texture texture;    private MeshFilter meshfilter;    private MeshRenderer meshrenderer;private MeshRenderer MeshRenderer {        get {            if (meshrenderer == null) {                meshrenderer = GetComponent<MeshRenderer>();            }            return meshrenderer;        }    }    private MeshFilter MeshFilter {        get {            if (meshfilter==null) {                meshfilter = GetComponent<MeshFilter>();            }            return meshfilter;        }    }void Start () {        MeshTest();}// Update is called once per framevoid Update () {        MeshRenderer.material.color = color;//实时在编辑下改变颜色    }    public void MeshTest() {        mesh = new Mesh();        vertexhelper.Clear();        //添加5个顶点        vertexhelper.AddVert(new Vector2(0,0),color,new Vector2(0,0));        vertexhelper.AddVert(new Vector2(0, 1), color, new Vector2(0, 1));        vertexhelper.AddVert(new Vector2(1, 1), color, new Vector2(1, 1));        vertexhelper.AddVert(new Vector2(1, 0), color, new Vector2(1, 0));        vertexhelper.AddVert(new Vector2(1.5f, 0), color, new Vector2(1.5f, 0));        //添加3个三角面        vertexhelper.AddTriangle(0,1,2);        vertexhelper.AddTriangle(2,3,0);        vertexhelper.AddTriangle(2,4,0);        vertexhelper.FillMesh(mesh);//填充网格        MeshFilter.mesh = mesh;        // MeshRenderer.material.color = color;        MeshRenderer.material.mainTexture = texture;//贴图    }}

原创粉丝点击