一段时间后如何隐藏gui帆布?

时间:2015-05-18 14:13:35

标签: c# unity3d

我在Unity 3D中显示一个画布,在级别的开头显示游戏的说明,我希望在5-6秒后隐藏它。 (我不想用keyDown来做)

我想知道这样做的最佳方式/做法是什么?

是否使用动画?或者使用一些异步方法,比如coroutine?

3 个答案:

答案 0 :(得分:1)

使用Unity,他们有一个等待x秒的WaitForSeconds函数,然后做一些事情。你可以使用这个,所以当等级启动时,你等待5-6秒然后隐藏GUI。

yield return new WaitForSeconds (5);
// GUI hide code

答案 1 :(得分:1)

可以使用延迟Invoke,例如:

public class Hide : MonoBehaviour
{
    public float after = 5.0f;

    void Start()
    { Invoke("Disable", after); }

    void Disable()
    { gameObject.SetActive (false); }
}

或者您可以使用Start()返回IENumerator,例如:

public class Hide : MonoBehaviour
{
    public float after = 5.0f;

    IEnumerator Start()
    {
        yield return new WaitForSeconds(after);
        gameObject.SetActive (false);
    }
}

答案 2 :(得分:1)

IEnumerator hideUI (GameObject guiParentCanvas, float secondsToWait,bool show = false)
{
    yield return new WaitForSeconds (secondsToWait);
    guiParentCanvas.SetActive (show);
}

要调用它,只需启动协同程序并传入包含UI的父游戏对象的名称,然后在隐藏UI画布之前传递您希望它等待多少秒。第三个参数是可选的,如果您想再次显示该UI,则可以使用该参数。传递给它以再次显示隐藏的GUI。

用法:

    StartCoroutine (hideGUI (gameObject, 2.0f)); //Wait 2 seconds then hide UI
    StartCoroutine (hideGUI (gameObject, 2.0f, true)); //Wait 2 seconds then show UI