IEnumerator LoadMainScene() { AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("MainScene"); asyncLoad.allowSceneActivation = false; // Wait until the asynchronous scene fully loads while (!asyncLoad.isDone) { if (asyncLoad.progress < 0.9f) { progressValue = asyncLoad.progress; } else { progressValue = 1.0f; } if (progressValue >= 0.9) { if (fillBar.fillAmount >= 0.9 && fillEyes.fillAmount >= 0.9) { // 避免多次执行 if (!isWaitingForTranslate) { isWaitingForTranslate = true; LoadingSceneAudioCtrl.getInstance().play(LOADING_COMPLETE, () => { asyncLoad.allowSceneActivation = true; }); } } } // 这种写法是为了避免一帧内的死循环 yield return(null); } }
// Use this for initialization void Start() { CanvasCtrl.adjustCanvasScale(canvas); LoadingSceneAudioCtrl.init(audioManager); AudioPlayCtrl.init(audioManager); LoadingSceneAudioCtrl.getInstance().play(LOADING_TIPS); GestureCtrl.removeInstance(); fillBar.fillAmount = 0; fillEyes.fillAmount = 0; StartCoroutine(LoadMainScene()); }
public static void init(GameObject manager) { _instance = manager.GetComponent <LoadingSceneAudioCtrl>(); }