【发布时间】:2018-08-18 17:23:37
【问题描述】:
我有游戏对象我只想显示一次,如果我有分数 2000 游戏对象未显示,之后当分数
if (Scores < 2000) {
Rock1.gameObject.SetActive (true);
}
if (Scores > 2000) {
Rock1.gameObject.SetActive (false);
}
【问题讨论】:
标签: c# unity3d gameobject
我有游戏对象我只想显示一次,如果我有分数 2000 游戏对象未显示,之后当分数
if (Scores < 2000) {
Rock1.gameObject.SetActive (true);
}
if (Scores > 2000) {
Rock1.gameObject.SetActive (false);
}
【问题讨论】:
标签: c# unity3d gameobject
只需使用一个布尔变量。您可以使用此代码:
bool hideOneTime = false;
...
if (!hideOneTime)
{
if (score < 2000)
{
Rock1.gameObject.SetActive (true);
}
else if (score > 2000)
{
Rock1.gameObject.SetActive (false);
hideOneTime = true;
}
}
希望对你有帮助
【讨论】:
您希望游戏对象在分数 2000 时隐藏游戏对象,但不要再这样做了。
您可以在 Update 函数中使用布尔变量作为标志来执行此操作,但由于您希望它运行一次,因此最好在协程函数中执行此操作。 Unity 的Start 协程函数很好,会自行启动。这将运行一次并且不会再次检查它,因为与Update 函数不同,协程函数将立即退出。
public int scores;
public GameObject Rock1;
IEnumerator Start()
{
//Wait until score is < 2000
while (!(scores < 2000))
yield return null;
//Show Object
Rock1.SetActive(true);
//Wait again until score is > 2000
while (!(scores > 2000))
yield return null;
//Hide Object
Rock1.SetActive(false);
//Done. Coroutine stops!
}
【讨论】:
boolean。
您可以简单地测试游戏对象的状态。
例如,如果您想显示它并执行 SetActive 一次就可以了:
if(!Rock1.gameObject.activeSelf)
Rock1.gameObject.SetActive(true);
反之亦然,如果你想隐藏它。
编码愉快!
【讨论】:
在 Start() 函数而不是 Update() 函数中编写代码。 否则游戏对象将在崩溃之前无限生成。
如果您想隐藏游戏对象,请尝试通过代码关闭渲染器,但如果您希望您的对象与其逻辑永远存在,请尝试在需要时销毁它并使用 IEnumerator 来控制时间。谢谢。
【讨论】: