如何在附加到预制件 UNITY 3D 的脚本中引用布尔值
本文关键字:3D UNITY 脚本 布尔值 引用 | 更新日期: 2023-09-27 18:28:26
我是C#编码新手。
尝试访问首次调用时将启动true
的bool
。
第二个脚本将查找它以查看它是否应启动另一个项目。
如果bool
设置为 false
,它将启动一个新项目;
如果bool
true
,第二个脚本将不会运行if
语句。
老核心问题:
有人可以告诉我引用的声明/程序是什么吗?我正在努力将许多可用的教程和问答应用于我的问题。
UPDATE01:
我已经确定了我认为问题的核心是什么。我正在尝试从预制件访问类 fruitCheck,它不会在场景中开始,但仅在随机倒计时时间过后才会调用。正因为如此,我相信布尔值变得无效,包括 fruitCheck 类中的简单 Debug.Log。有人对我应该如何克服这个问题有任何建议吗?我想保留倒计时时间,以便每个项目之间的时间是间隔/随机的。
UPDATE02: 请参考下面我问题的解决方案。
布尔启动脚本:
public class fruitCheck : MonoBehaviour {
//Check to see if object is falling...
public static bool objectFalling;
// Update is called once per frame
public void Start ()
{
objectFalling = true;
//Debug does not appear in the Console
Debug.Log("Object IS Falling");
}
void Update()
{
//Check if fruit has come in contact with deadZone.
//If fruit has come in contact with dead zone then objectFalling = false;
if(objectFalling == false)
{
//Debug does not appear in the Console
Debug.Log("Object IS Falling");
}
}
}
我想访问布尔值的 IF 语句:
public void Update ()
{
//This Debug runs fine.
Debug.Log("...check fruit...");
if (fruitCheck.objectFalling == true)
{
timeLeftUntilSpawn = Time.time - startTime;
if (timeLeftUntilSpawn >= secondsBetweenSpawn)
{
startTime = Time.time - Random.Range(0.2f, 0.9f);
//timeLeftUntilSpawn = Time.time - startTime;
//timeLeftUntilSpawn = 0;
Debug.Log ("IF STATEMENT SUCCESS: Spawn one here");
SpawnRandomObject();
}
}
}
首先,我要感谢所有通读并花时间思考我的问题的人,因为它很复杂,描述不佳且难以概念化。
我用我的问题找到了解决方案。请在下面找到我学到的东西以及我如何理解它。
因为我使用的是预制件,而且它们不是在场景中开始的,所以我想执行的很多内容都不会开始。我做了一些进一步的研究,发现了AWAKE功能。
唤醒函数:加载脚本实例时调用唤醒。(来源如下(
唤醒函数与开始函数(我在游戏开始时设置布尔变量以更改(不同,因为它将在游戏加载时调用,无论场景中是否有什么。
通过更改为唤醒函数,我能够调用布尔值 true,然后成功启动其余脚本并允许我的核心游戏机制工作。
再次感谢您的阅读。如果您有任何其他问题,请随时与我联系。
干杯。尼波诺。
唤醒功能源:http://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html
启动函数源:http://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html