Unity使用脚本生成立方体模型

unity版本2019.4.0f1

文件一览

记得给物体赋予材质!

CubeMesh.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeMesh : MonoBehaviour
{
    MeshRenderer meshRenderer;
    MeshFilter meshFilter;
    MeshCollider meshCollider;
    //存放顶点数据
    List<Vector3> verts;
    List<int> indices;
    // Start is called before the first frame update
    private void Start()
    {
        verts=new List<Vector3>();
        indices=new List<int>();
        meshRenderer=GetComponent<MeshRenderer>();
        meshFilter=GetComponent<MeshFilter>();
        meshCollider=GetComponent<MeshCollider>();
        Generate();
    }
    public void Generate(){
        ClearMeshData();
        //填写数据
        AddMeshData();
        //传递数据给Mesh,生成真正网格
        Mesh mesh=new Mesh();
        mesh.vertices=verts.ToArray();
        mesh.triangles=indices.ToArray();
        //自动计算法线
        mesh.RecalculateNormals();
        //自动计算物体整体边界
        mesh.RecalculateBounds();
        meshFilter.mesh=mesh;
        //碰撞体专用mesh,只负责物体碰撞外形
        meshCollider.sharedMesh=mesh;
    }
    void ClearMeshData(){
        verts.Clear();
        indices.Clear();
    }
    void AddMeshData(){
        verts.Add(new Vector3(0,0,0));
        verts.Add(new Vector3(0,0,1));
        verts.Add(new Vector3(1,0,1));
        verts.Add(new Vector3(1,0,0));
        verts.Add(new Vector3(0,1,1));
        verts.Add(new Vector3(0,1,0));
        verts.Add(new Vector3(1,1,1));
        verts.Add(new Vector3(1,1,0));
        //绘制第一个三角面片(顺时针)
        indices.Add(0);
        indices.Add(1);
        indices.Add(2);//end first 
        indices.Add(0);
        indices.Add(2);
        indices.Add(3);//end second
        indices.Add(0);
        indices.Add(5);
        indices.Add(4);//end third
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

效果图:

解释一下,多个面片可以围成一个立方体,没绘制完三角面片😅
参考资料:
[1]https://www.bilibili.com/video/BV1FD4y1Q7uA/
[2]https://www.bilibili.com/video/BV1Dv411B76b/

posted @   qsBye  阅读(735)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示