已修正我正在尝试访问另一个脚本中包含的类,但我得到了这样的信息:“只能从主线程调用Internal_Create”。 .init函数仅更改类中的某些值。
我试图通过搜索答案来解决它,但是我找不到任何帮助。
这是发生错误的主循环:
public class MainLoop : MonoBehaviour {
public float jagginess;
void Start () {
jagginess = 0.6f;
CMesh cmesh = GameObject.Find("GameObject").GetComponent<CMesh>();
cmesh.init(32);
}
void Update () {
//if (Input.GetKeyDown(KeyCode.Space)) {
}
}和网格类:
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(MeshRenderer))]
[RequireComponent(typeof(MeshCollider))]
public class CMesh : MonoBehaviour {
Mesh mesh = new Mesh();
Texture2D heightMap;
int segments;
Vector3 scaleSegments;
Vector3[] vertices;
Vector3[] normals;
Vector2[] uv;
int[] triangles;
Vector3 camera_position = GameObject.Find ("Main Camera").GetComponent<cameraMovement>().camera_pos;
public void init(int mesh_segments) {
scaleSegments = new Vector3(200, 100, 200);
segments = mesh_segments;
initHeightMap();
}
最佳答案
您每次使用GetComponent()
之前都要问自己一个问题:哪个GameObject包含您要查找的脚本?
知道GameObject的名称后,如果脚本附加到其他Game Object,则可以执行以下操作:CMesh cmesh = GameObject.Find("NameOfGameObject").GetComponent<CMesh>();
如果脚本附加到相同的GameObject,则可以执行以下操作:CMesh cmesh = GetComponent<CMesh>();
关于c# - Unity3d:通过GetComponent错误从另一个脚本访问类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20713557/