📜  unity mesh 显示实例 - C# (1)

📅  最后修改于: 2023-12-03 15:05:44.740000             🧑  作者: Mango

Unity Mesh 显示实例 - C#

在 Unity 中,Mesh 是一种用于描述 3D 模型的对象。使用 C# 代码创建和显示 Mesh 可以使程序员更加灵活地控制 Mesh 的属性和行为,下面就是一个简单的 Unity Mesh 显示实例。

创建 Mesh

我们使用 Mesh 类来创建一个简单的正方形 Mesh。首先在代码中定义一个 Vector3 类型的数组来存储顶点坐标,以及一个整数型数组来存储三角面片的连接信息。

using UnityEngine;

public class MeshDemo : MonoBehaviour
{
    private Mesh mesh;

    private Vector3[] vertices =
    {
        new Vector3(0, 0, 0),
        new Vector3(0, 0, 1),
        new Vector3(1, 0, 0),
        new Vector3(1, 0, 1)
    };

    private int[] triangles = {0, 1, 2, 1, 3, 2};
}

在 Start 函数中创建 Mesh 实例,并为其设置顶点和三角面片的信息。

    private void Start()
    {
        mesh = new Mesh();

        mesh.vertices = vertices;
        mesh.triangles = triangles;

        GetComponent<MeshFilter>().mesh = mesh;
    }

在上述代码中,MeshFilter 用于将 Mesh 显示在场景中。

调整 Mesh 渲染模式

我们可以使用 MeshRenderer 控件中的 material 属性来调整 Mesh 的渲染模式。例如,下面的代码将 Mesh 设置为不透明的绿色材质。

    private void Start()
    {
        mesh = new Mesh();

        mesh.vertices = vertices;
        mesh.triangles = triangles;

        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshRenderer>().material.color = Color.green;
        GetComponent<MeshRenderer>().material.SetFloat("_Mode", 0); // 设置渲染模式为不透明
    }
移动 Mesh

使用 gameObjecttransform 来移动 Mesh,例如,下面的代码将 Mesh 向右移动 1 个单位。

    private void Start()
    {
        mesh = new Mesh();

        mesh.vertices = vertices;
        mesh.triangles = triangles;

        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshRenderer>().material.color = Color.green;
        GetComponent<MeshRenderer>().material.SetFloat("_Mode", 0);

        transform.position += Vector3.right; // 向右移动 1 个单位
    }
缩放 Mesh

使用 gameObjecttransform 中的 localScale 属性来缩放 Mesh,例如,下面的代码将 Mesh 缩小至原来的一半。

    private void Start()
    {
        mesh = new Mesh();

        mesh.vertices = vertices;
        mesh.triangles = triangles;

        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshRenderer>().material.color = Color.green;
        GetComponent<MeshRenderer>().material.SetFloat("_Mode", 0);

        transform.localScale = Vector3.one * 0.5f; // 缩小到原来的一半
    }
总结

通过这个简单的 Unity Mesh 显示实例,我们学习了如何创建一个简单的 Mesh,以及如何调整它的渲染模式,移动和缩放 Mesh。在实际项目中,需要更加复杂的 Mesh,我们可以根据需要在代码中添加更多的信息和修改。