SubMesh+ 多材质的使用

Question : 同一个mesh,unity怎么知道桌腿用材质1,而桌面用材质2?

Answer : SubMesh

一个Mesh可以有多个SubMesh,
一个SubMesh对应着一个Material,
一个SubMesh可以有多个Triangle。

using UnityEngine;

[RequireComponent(typeof(MeshFilter)), RequireComponent(typeof(MeshRenderer))]
public class TestSubMesh : MonoBehaviour
{
    void Start()
    {
        #region 设置Materials
        // 程序事先设定的几个Material
        Material[] materials = new Material[] {
            Resources.Load("Materials/Red") as Material,
            Resources.Load("Materials/Green") as Material,
            Resources.Load("Materials/Gray") as Material,
            Resources.Load("Materials/Blue") as Material,
        };

        this.GetComponent<MeshRenderer>().materials = materials;
        #endregion


        Mesh mesh = this.GetComponent<MeshFilter>().mesh;
        mesh.Clear();

        // 正四面体的顶点坐标
        Vector3[] vertices = new Vector3[] {
            new Vector3(0, 0, 0),
            new Vector3(0, 1, 0),
            new Vector3(Mathf.Sqrt(3)/2, 0.5f, 0),
            new Vector3(Mathf.Sqrt(3) / 6, 0.5f, Mathf.Sqrt(6) / 3)
        };

        mesh.vertices = vertices;
        mesh.subMeshCount = 4;

        int[] triangle = new int[] { 0, 1, 2 };
        mesh.SetTriangles(triangle, 0);

        triangle = new int[] { 0, 3, 1 };
        mesh.SetTriangles(triangle, 1);

        Debug.Log(mesh.subMeshCount);

        triangle = new int[] { 0, 2, 3 };
        mesh.SetTriangles(triangle, 2);

        triangle = new int[] { 1, 3, 2 };
        mesh.SetTriangles(triangle, 3);

        mesh.RecalculateNormals();
    }
}

原文:https://blog.csdn.net/zhang_hui_cs/article/details/77843519

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值