预制件已成功实例化,但在访问时,会在 Unity 中生成 NullReferenceException
本文关键字:会在 Unity NullReferenceException 访问 成功 实例化 | 更新日期: 2023-09-27 18:30:52
我有一个预制件的初始化:
GameObject e = Instantiate(entry, new Vector3(x, y, 0), Quaternion.identity) as GameObject;
我知道它已成功实例化,因为我可以在层次结构中看到克隆。但是,如果我尝试访问它,则会出现一个 NullReferenceException。我试过这个:
Debug.Log(e.ToString());
而这个:
e.transform.SetParent (GameObject.Find("Canvas").transform);
但它显示了此错误
NullReferenceException:对象引用未设置为实例 object StudentListController.FillList (System.String strList) (at 资产/脚本/学生列表控制器.cs:45) StudentListController+c__Iterator5.MoveNext () (at 资产/脚本/学生列表控制器.cs:23)
这是 FillList 的代码:
void FillList(string strList) {
string[] studentData;
string[] studentList = strList.Split (';');
int startX = -253;
int startY = 70;
int addX = 100;
int addY = 30;
for (int y = 0; y<studentList.Length; y++ ) {
string student = studentList[y];
studentData = student.Split(',');
for(int x = 0; x<studentData.Length; x++) {
string data = studentData[x];
if (x==3) {
data = getAgeFromBirthdate(data).ToString();
} else if (x==4) {
data = getSex(data).ToString();
}
GameObject e = Instantiate(entry, new Vector3(startX + 100*x, startY + 40*y, 0), Quaternion.identity) as GameObject;
//e.GetComponent<Text> ().text = data;
//e.transform.SetParent (GameObject.Find("Canvas").transform);
}
}
}
检查是否已将所需的任何内容拖放到预制件的自定义组件中。如果拖放它们,则应单击"应用"。