【发布时间】:2023-01-07 21:14:57
【问题描述】:
这是一个生成 20x20 正方形的正方形的脚本,每个正方形由两个三角形组成。我想将 Mesh Collider 添加到网格中,但出现此错误:CS1061“Mesh”不包含“AddComponent”的定义,并且无法找到接受“Mesh”类型的第一个参数的可访问扩展方法“AddComponent” (您是否缺少 using 指令或程序集引用?)。我如何解决它?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshCollider))]
public class MeshGenerator : MonoBehaviour {
Mesh mesh;
Vector3[] vertices;
int[] triangles;
public int xSize = 20;
public int zSize = 20;
// Start is called before the first frame update
void Start()
{
mesh = new Mesh();
GetComponent<MeshFilter>().mesh = mesh;
CreateShape();
UpdateMesh();
MeshCollider mc = mesh.AddComponent<MeshCollider>() as MeshCollider; //This is the line that doesn't work.
}
void CreateShape() {
vertices = new Vector3[(xSize + 1) * (zSize + 1)];
for (int i = 0, z = 0; z <= zSize; z++) {
for (int x = 0; x <= xSize; x++) {
vertices[i] = new Vector3(x, 0, z);
i++;
}
}
triangles = new int[xSize * zSize * 6];
int vert = 0;
int tris = 0;
for (int z = 0; z < zSize; z++) {
for (int x = 0; x < xSize; x++)
{
triangles[tris + 0] = vert + 0;
triangles[tris + 1] = vert + xSize + 1;
triangles[tris + 2] = vert + 1;
triangles[tris + 3] = vert + 1;
triangles[tris + 4] = vert + xSize + 1;
triangles[tris + 5] = vert + xSize + 2;
vert++;
tris += 6;
}
vert++;
}
}
void UpdateMesh() {
mesh.Clear();
mesh.vertices = vertices;
mesh.triangles = triangles;
mesh.RecalculateNormals();
}
}
我尝试了 MeshCollider mc = mesh.AddComponent() as MeshCollider;和 MeshCollider mc = mesh.AddComponent(typeof(MeshCollider)) as MeshCollider;
【问题讨论】: