Пример #1
0
    // シーン読込
    private void LoadScene(SceneEnum.ID sceneID, LoadSceneMode sceneMode)
    {
        // シーン名の取得
        string sceneName = "";

        if (!ConvertScene(sceneID, out sceneName))
        {
            return;
        }

        // シーン切替
        SceneManager.LoadScene(sceneName, sceneMode);
    }
Пример #2
0
    // シーン削除
    public void RemoveScene(SceneEnum.ID sceneID)
    {
        // 選択シーンが存在しなければ処理しない
        if (!_sceneList.Any(scene => scene.SceneID == sceneID))
        {
            return;
        }

        // シーン情報が1つしかなければ処理しない
        if (_sceneList.Count == 1)
        {
            return;
        }

        // 一時変数作成
        Stack <BasicScene> backupList = new Stack <BasicScene>();

        // 選択シーン削除
        while (_sceneList.Count > 0)
        {
            // 退避
            BasicScene basicScene = _sceneList.Pop();

            // 選択シーンなら
            if (basicScene.SceneID == sceneID)
            {
                // シーン名の取得
                string sceneName = "";
                if (!ConvertScene(sceneID, out sceneName))
                {
                    return;
                }

                // シーン削除
                SceneManager.UnloadSceneAsync(sceneName);
                break;
            }

            // 確保
            backupList.Push(basicScene);
        }

        // シーン再構成
        while (backupList.Count > 0)
        {
            _sceneList.Push(backupList.Pop());
        }
    }
Пример #3
0
    // シーン登録
    public void EntryScene(SceneEnum.ID sceneID)
    {
        // フェード中は処理しない
        if (IsFade)
        {
            return;
        }

        // 重複確認
        if (_sceneList.Any(scene => scene.SceneID == sceneID))
        {
            return;
        }

        // シーン作成
        LoadScene(sceneID, LoadSceneMode.Additive);
    }
Пример #4
0
    // シーン情報変換
    private bool ConvertScene(SceneEnum.ID sceneID, out string sceneName)
    {
        // シーン名初期化
        sceneName = "";

        // シーン情報探索
        SceneData.Param sceneData = _sceneData.list.FirstOrDefault(scene => scene.No == (int)sceneID);

        // 利用できないシーン情報なら失敗
        if (sceneData == null)
        {
            return(false);
        }

        // シーン名取得
        sceneName = sceneData.Name;
        return(true);
    }