只显示一次 Gameobject unity

show Gameobject one time only unity

我有游戏对象,我只想显示一次,如果我显示了分数 < 2000 的游戏对象,如果分数 > 2000 的游戏对象未显示,之后当分数 <2000 的游戏对象不再显示时(我将游戏对象作为我的图像分配给检查器)

if (Scores < 2000) {

    Rock1.gameObject.SetActive (true);

}
if (Scores > 2000) {

    Rock1.gameObject.SetActive (false);

}

只需使用一个布尔变量。您可以使用此代码:

bool hideOneTime = false;

...

if (!hideOneTime)
{
    if (score < 2000)
    {
        Rock1.gameObject.SetActive (true);
    }
    else if (score > 2000)
    {
        Rock1.gameObject.SetActive (false);
        hideOneTime = true;            
    }
}

希望对你有帮助

您希望在分数 < 2000 时显示游戏对象,然后在 2000 > 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!
}

在 Start() 函数而不是 Update() 函数中编写代码。 否则游戏对象将在崩溃前无限生成。

如果您想隐藏游戏对象,请尝试通过代码关闭渲染器,但如果您希望您的对象永远按照其逻辑运行,请在需要时尝试销毁它,并在需要时使用 IEnumerator控制时间。谢谢。

您可以简单地测试游戏对象的状态。

例如,如果你想显示它并执行一次 SetActive,你可以这样做:

if(!Rock1.gameObject.activeSelf)
    Rock1.gameObject.SetActive(true);

反之亦然,如果你想隐藏它。

编码愉快!