C# 游戏对象设置活动couritine之前的延迟

C# 游戏对象设置活动couritine之前的延迟,c#,unity3d,C#,Unity3d,我试着在按下按钮激活游戏对象(两个面板)之前延迟3秒。我在单击panelview()时指定了按钮,但我找不到如何将couritine作为IEnumerator写入其中 有人能帮我吗?谢谢 以下是我想将couritine组合成的代码部分: public void panelview() { if (totalenergy == 0) { panel2.gameObject.SetActive(true); } if (totalene

我试着在按下按钮激活游戏对象(两个面板)之前延迟3秒。我在单击panelview()时指定了按钮,但我找不到如何将couritine作为IEnumerator写入其中

有人能帮我吗?谢谢

以下是我想将couritine组合成的代码部分:

 public void panelview()
{
   

    if (totalenergy == 0)
    {
         panel2.gameObject.SetActive(true);

    }
    if (totalenergy >= 1)
    {

    panel.gameObject.SetActive(true);

    }
}
这应该可以做到(希望它可以编译-我没有检查它)


在这种情况下,您也可以在不使用任何协同程序的情况下使用:

public void PanelView()
{
    Invoke(nameof(ShowPanel), DELAY);
}

private void ShowPanel()
{   
    if (totalenergy == 0)
    {
         panel2.gameObject.SetActive(true);
    }
    else if (totalenergy >= 1)
    {
        panel.gameObject.SetActive(true);
    }
}
或者作为一个

其中,
DELAY
是以秒为单位的所需延迟


从用户体验的角度来看,尽管我认为在点击按钮后,给用户反馈3秒钟是相当长的;)

public void PanelView()
{
    Invoke(nameof(ShowPanel), DELAY);
}

private void ShowPanel()
{   
    if (totalenergy == 0)
    {
         panel2.gameObject.SetActive(true);
    }
    else if (totalenergy >= 1)
    {
        panel.gameObject.SetActive(true);
    }
}
public void PanelView()
{
    StartCoroutine (ShowPanelAfterDelay(DELAY));
}

private IEnumerator ShowPanelAfterDelay(float delay)
{ 
    yield return new WaitForSeconds (delay);

    if (totalenergy == 0)
    {
         panel2.gameObject.SetActive(true);
    }
    else if (totalenergy >= 1)
    {
        panel.gameObject.SetActive(true);
    }
}