【问题标题】:Make GUI.Box stay for 3 seconds使 GUI.Box 停留 3 秒
【发布时间】:2012-08-21 10:34:43
【问题描述】:

我正在使用 C# 脚本在 Unity 中开发一个项目。 GUI.Box 将出现在屏幕顶部。当玩家离开该地点时,该框将消失。玩家离开指定地点后,如何让盒子多停留 3 秒?

Danpe 的代码已更正(工作代码):

bool shown = false;

void OnGUI () {
if (car.transform.position.y>=43 && car.transform.position.y<=44)
{
    shown = true;
}
else if (shown)
{
    StartCoroutine(DisapearBoxAfter(3.0f)); 
}
if(shown) 
{
    GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
}
}

IEnumerator DisapearBoxAfter(float waitTime) { 
// suspend execution for waitTime seconds
yield return new WaitForSeconds(waitTime);
shown = false;
}




void Update () {
    OnGUI ();
}

【问题讨论】:

    标签: c# user-interface unity3d


    【解决方案1】:
    bool shown = false;
    
    void OnGUI () {
        if (car.transform.position.y>=43 && car.transform.position.y<=44)
        {
            shown = true;
        }
        else if (shown)
        {
            StartCoroutine(DisapearBoxAfter(3.0)); 
        }
        if(shown) {
            GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
        }
    }
    
    IEnumerator DisapearBoxAfter(float waitTime) {
        // suspend execution for waitTime seconds
        return yield WaitForSeconds (waitTime);
        shown = false;
    }
    
    
    void Update () {
        OnGUI ();
    }
    

    【讨论】:

    • 您好 Danpe,感谢您的快速回复。您提供的代码有一些错误,我使用调试器更正了这些错误,现在它可以工作了。太感谢了。我将在我的问题中提供工作代码。
    • 嘿,np,我很高兴能提供帮助,因为我不久前遇到了这个问题 :) 无论如何,如果它回答了你的问题,你可以通过勾选 V 来勾选我作为问题的正确答案.
    【解决方案2】:
    function Start ()
    {
        ShowBox ();
    }
    
    function ShowBox ()
    {
        // show label
        show = true;
    
        // cancel invoking method if already set to call after 3 seconds
        CancelInvoke("HideBox");
    
        // will call HideBox () after 3 sec
        Invoke ("HideBox", 3.0F);
    }
    
    function HideBox ()
    {
       // dont show label
       show = false;
    }
    
    function Update ()
    {
         if (car.transform.position.y>=43 && car.transform.position.y<=44)
         {
             ShowBox ();
         }
    }
    
    function OnGUI ()
    {
         if(shown) 
         {
              GUI.Box(new Rect((Screen.width/2)-200,0,400,30) , "King of the hill");
         }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多