0

我正在使用 Unity 构建一个简单的 2D 游戏。在我的 C# 脚本中,我想在两个连续语句之间插入 2 秒的间隙。

void OnGUI()
{


    GUI.Button (new Rect(400,40,45,45),"text1");
    // time gap statement
    GUI.Button (new Rect(800,40,45,45),"text1");

    } 

这意味着我希望创建和显示一个按钮,然后等待 2 秒钟,然后再创建下一个按钮并显示在屏幕上。有什么简单的方法可以做到这一点??

4

2 回答 2

4

您可以使用协程进行延迟,但这并不合适,因为您在 OnGUI 中显示它。

尝试这样的事情:

public float secondButtonDelay = 2.0f; // time in seconds for a delay

bool isShowingButtons = false;
float showTime;

void Start()
{
     ShowButtons(); // remove this if you don't want the buttons to show on start
}

void ShowButtons()
{
    isShowingButtons = true;
    showTime = Time.time;
}

void OnGUI()
{
     if (isShowingButtons)
     {
         GUI.Button (new Rect(400,40,45,45),"text1");

         if (showTime + secondButtonDelay >= Time.time)
         {
             GUI.Button (new Rect(800,40,45,45),"text1");
         }
     }
}
于 2014-07-01T16:54:43.123 回答
3

OnGUI大约每帧执行一次以绘制用户界面,因此您不能使用这样的延迟。相反,有条件地根据某些条件绘制第二个元素,例如

void OnGUI()
{
    GUI.Button (new Rect(400,40,45,45),"text1");
    if (Time.time > 2) {
        GUI.Button (new Rect(800,40,45,45),"text1");
    }
} 
于 2014-07-01T16:51:37.207 回答