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());
    }
Exemple #3
0
 public static void init(GameObject manager)
 {
     _instance = manager.GetComponent <LoadingSceneAudioCtrl>();
 }