Exemplo n.º 1
0
    void Update()
    {
        if (subScene == null)         // 初期化済んでない
        {
            return;
        }
        // デバグコマンド
        if (gameState.DebugToggleFired)
        {
            gameState.DebugToggleFired = false;
            debugService.ToggleUiEnabled();
        }
        // ロード完了してるなら
        if ((nextSubScene != null) && (loadSubSceneCoroutine == null))
        {
            Debug.Log("SubSceneDispose " + subScene.name + " -> " + nextSubScene.name);
            // 現シーン破棄
            subScene.Dispose();
            Destroy(subScene.gameObject);
            // 新シーン開始
            subScene = nextSubScene;
#if DEBUG_ENABLED
            debugService.ReplaceSubSceneMenu(subScene);
#endif
            // 開始
            subScene.ManualStart(gameState);
            nextSubScene     = null;
            loadSubSceneName = null;
        }

        float dt = Time.deltaTime;
        // シーン更新
        string nextSceneName = null;
        subScene.ManualUpdate(out nextSceneName, dt);
        // 次に行けと言われれば、
        if ((loadSubSceneName == null) && (nextSceneName != null))
        {
            loadSubSceneName      = nextSceneName;
            loadSubSceneCoroutine = StartCoroutine(CoLoadSubScene());
        }

        // グローバルオブジェクト類更新
        world.ManualUpdate(dt);
#if DEBUG_ENABLED
        debugService.ManualUpdate(dt);
        debugRenderer.UpdateMesh();
#endif
    }