基本上,我有三个类来尝试收集检查点并在最后一个到达时重生。代码看起来不错,但是在运行时到达检查点时出现空引用错误。问题似乎出在Unity内部。
private CheckPoint cp;
对于此实例,我什么都没进入检查器部分。当然,我一开始就打个电话
cp = GameObject.FindGameObjectWithTag("Checkpoint").GetComponent<CheckPoint>();
我已经厌倦了一个空对象,并且尝试放置一个检查点对象,但是似乎没有任何效果。有什么建议吗?
答案 0 :(得分:2)
1。。检查是否有多个标记为“ CheckPoint”的gameObjects。
cp = GameObject.FindGameObjectWithTag("Checkpoint").GetComponent<CheckPoint>();
将找到带有该标签的第一个gameObject并尝试获取您的组件,如果没有组件,您将获得空引用
2。代替。
FindObjectsOfType<Checkpoint>();
了解更多:https://docs.unity3d.com/ScriptReference/Object.FindObjectsOfType.html
3。。在“ CheckpointManager”类中使用列表/数组/任何其他容器,并将其放入每个Checkpoint的Start()方法中:
CheckpointManager.container.add(this);
这应该更容易管理,并且您不必使用标签。