我正在努力解决这个问题2天,我正在尝试将go
GameObject添加到列表changedObjects
中,但我不知道为什么changedObjects
是{{1} }}
我试过了:
Null
比我用GameObject从另一个类调用public class UndoObject : MonoBehaviour {
private List<GameObject> changedObjects;
void Start () {
changedObjects = new List<GameObject>();
}
public void Push(GameObject go) {
Debug.Log(changedObjects);
if (go != null) {
changedObjects.Add(go);
}
}
public List<GameObject> GetAll () {
return changedObjects;
}
}
。
但是,它一直在抛出错误:
NullReferenceException:未将对象引用设置为对象的实例 UndoObject.Push(UnityEngine.GameObject go)(在Assets / Standard Assets / Scripts / UndoObject.cs:15) Manager.FixedUpdate()(在Assets / Standard Assets / Scripts / Manager.cs:73)
UndoObject.cs:15 是UndoObject.Push
答案 0 :(得分:2)
我认为您直接调用push方法而不调用start()来初始化数组,但是您可以在push方法中添加它以确保数组始终初始化。
public void Push(GameObject go) {
if (changedObjects == null)
{
changedObjects = new List<GameObject>();
}
if (go != null) {
changedObjects.Add(go);
}
}