以下unity3d的C#代码是什么意思?

2025-04-04 04:52:26
推荐回答(1个)
回答1:

//创建一个网格
Mesh NewMesh(GameObject g)
{
//获得该物体的网格过滤器
MeshFilter mf = g.GetComponent(); //网过滤器的网格
//新建二维向量(1,1)
Vector2 _meshsize_ = new Vector2(1, 1); //代表2D向量和点
Mesh mesh = new Mesh();//新建网格
//新建点数组分别为物体g的相对位置(+/-0.5,+/-0.5,0)
mesh.vertices = new Vector3[] {
new Vector3(((_meshsize_.x/2) * -1), (_meshsize_.y/2) , 0),
new Vector3((_meshsize_.x/2) , (_meshsize_.y/2), 0),
new Vector3((_meshsize_.x/2) , ((_meshsize_.y/2) * -1), 0),
new Vector3(((_meshsize_.x/2) * -1) , ((_meshsize_.y/2) * -1), 0)
};
//新建三角形数组,在mesh中解读方式为三个一组,代表三角形三点
//0,1,2代表一个三角形,2,3,0代表另一个三角形,其中0,1,2......代表该mesh的点(vertices)数组的下标序号
mesh.triangles = new int[] {
0,1,2,2,3,0
};
//物体网格对应贴图的UV坐标
Vector2[] meshUV = new Vector2[] {
new Vector2(1,0), new Vector2(0,0),
new Vector2(0,1), new Vector2(1,1) };
//赋予mesh自己的UV数组
mesh.uv = meshUV;
//重新计算网格和数组,但一般来说RecalculateBounds();方法应该放在 mesh.RecalculateNormals();之后
mesh.RecalculateBounds();
mesh.RecalculateNormals();

mf.mesh = mesh;

return mesh;
}
//概括来说就是输入一个物体,然后将其网格换成一个1X1的平面正方形