我在Unity 3D中显示一个画布,在级别的开头显示游戏的说明,我希望在5-6秒后隐藏它。 (我不想用keyDown来做)
我想知道这样做的最佳方式/做法是什么?
是否使用动画?或者使用一些异步方法,比如coroutine?
答案 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