gpt4 book ai didi

c# - 来自 Unity3D 中另一个脚本的 bool 值

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:13 26 4
gpt4 key购买 nike

所以我有两个脚本,一个叫做 EndCollider.cs,它在 map 上的某个地方,它有一个 OnTriggerEnter 函数,可将 bool 值设置为真。

using UnityEngine;
using System.Collections;

public class EndCollider : MonoBehaviour {

public bool isShow = false;

void OnTriggerEnter ()
{
isShow = true;
}

}

另一个脚本是 SlowDownRun.cs,它在一个怪物对象上,在这个脚本中我试图检测另一个脚本的 bool 值是否为真,如果是则移动怪物。

using UnityEngine;
using System.Collections;

public class SlowDownRun : MonoBehaviour {

GameObject TrollScript;
EndCollider MonsterShow;

// Use this for initialization
void Start ()
{
TrollScript = GameObject.Find("Troll");
MonsterShow = TrollScript.GetComponent<EndCollider>();
}

void Update()
{
if (MonsterShow.isShow == true)
{
float movementSpeed = 10f;
transform.position += transform.forward * Time.deltaTime * movementSpeed;
}
}

}

现在代码不工作了,如果我把它们从 IF 语句中取出,移动怪物的代码就可以工作了。我也不断收到此错误 NullReferenceException: Object reference not set to an instance of an object on the line if (MonsterShow.isShow == true)

请帮助我是 Unity 的初学者,这个问题困扰了我好几个小时,我做了很多 Google 搜索并一次又一次地修改我的代码,但就是无法解决这个问题,我觉得焦虑,只是不知道该怎么办。

最佳答案

您在 Start() 方法中的 find troll 调用未找到 troll 或未找到其上的 EndCollider 组件,导致它为 null。由于您只在启动时搜索一次,因此它将始终为空。

这可能是因为您的巨魔在场景开始时尚未创建。

如果您的意图实际上是让怪物在玩家撞击对撞机时出现,您应该查看预制实例化。

http://docs.unity3d.com/Manual/InstantiatingPrefabs.html

因此在您的 OnTriggerEnter 中,您可以简单地实例化一个全新的怪物:

public class EndCollider : MonoBehaviour {

public GameObject MonsterPrefab;

void OnTriggerEnter ()
{
Instantiate(MonsterPrefab);
}

}

关于c# - 来自 Unity3D 中另一个脚本的 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com