Unity - 特定时间后更改场景

4

我正在为Oculus Gear VR开发游戏(需要考虑内存管理),并且需要在特定的秒数后加载另一个屏幕。

void Start () {

    StartCoroutine (loadSceneAfterDelay(30));

    }

    IEnumerator loadSceneAfterDelay(float waitbySecs){

        yield return new WaitForSeconds(waitbySecs);
        Application.LoadLevel (2);
    } 

它运行得很好,

我的问题:

1- 实现这个的最佳实践是什么?

2- 如何显示计时器,以显示玩家完成关卡还剩下多少秒。

1个回答

7

是的,这是正确的方法。以下是显示倒计时消息的示例代码:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour
{
    bool loadingStarted = false;
    float secondsLeft = 0;

    void Start()
    {
        StartCoroutine(DelayLoadLevel(10));
    }

    IEnumerator DelayLoadLevel(float seconds)
    {
        secondsLeft = seconds;
        loadingStarted = true;
        do
        {
            yield return new WaitForSeconds(1);
        } while (--secondsLeft > 0);

        Application.LoadLevel("Level2");
    }

    void OnGUI()
    {
        if (loadingStarted)
            GUI.Label(new Rect(0, 0, 100, 20), secondsLeft.ToString());
    }
}

谢谢,但我想将标签的大小和位置更改为屏幕的右上角。 - Mina Fawzy
你可以使用GUI.Label()的Rect参数来指定坐标。为了自动适应屏幕大小,你可以使用Screen.width变量进行计算。 - Chen Hao
1
void OnGUI() { if (loadingStarted) { GUIStyle style = new GUIStyle(); style.normal.textColor = Color.yellow; style.fontSize = 30; style.alignment = TextAnchor.UpperRight; GUI.Label(new Rect(Screen.width - 100, 0, 100, 40), secondsLeft.ToString(), style); } } - Chen Hao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接