多个检查点/重生区域

时间:2018-08-26 20:01:28

标签: c# unity3d

enter image description here

基本上,我有三个类来尝试收集检查点并在最后一个到达时重生。代码看起来不错,但是在运行时到达检查点时出现空引用错误。问题似乎出在Unity内部。

private CheckPoint cp;

对于此实例,我什么都没进入检查器部分。当然,我一开始就打个电话

 cp = GameObject.FindGameObjectWithTag("Checkpoint").GetComponent<CheckPoint>();

我已经厌倦了一个空对象,并且尝试放置一个检查点对象,但是似乎没有任何效果。有什么建议吗?

enter image description here

1 个答案:

答案 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);

这应该更容易管理,并且您不必使用标签。

相关问题