From 92ca3c5e8fb9c42e6c599a8d1c8dde05a04dc562 Mon Sep 17 00:00:00 2001 From: kimura Date: Fri, 29 Jul 2022 11:53:05 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=82=B8=E5=88=87?= =?UTF-8?q?=E3=82=8A=E6=9B=BF=E3=81=88=E5=87=A6=E7=90=86=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Scenes/MiniGame/Scripts/StageManager.cs | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs index 30ec79bf..8bfb6f30 100644 --- a/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs +++ b/popcorn/Assets/MyGame/Scenes/MiniGame/Scripts/StageManager.cs @@ -27,19 +27,14 @@ namespace MyGame.Scenes.MiniGame.Scripts public IReadOnlyReactiveProperty Difficulty => difficulty; private readonly ReactiveProperty difficulty = new(); private ScrollGameDifficulty generateStageDifficulty; - private IDisposable timerDisposable; + private readonly CompositeDisposable changeDifficultyDisposable = new(); private readonly Dictionary stageDataDict = new(); private void Start() { fenceSubject.AddTo(this); difficulty.AddTo(this); - difficulty.SkipLatestValueOnSubscribe().Subscribe(_ => - { - // 難易度変更時にリソース開放 - Resources.UnloadUnusedAssets(); - Debug.Log($"change difficulty ({difficulty.Value}) and unload resources"); - }).AddTo(this); + changeDifficultyDisposable.AddTo(this); } @@ -66,11 +61,20 @@ namespace MyGame.Scenes.MiniGame.Scripts lengthIndex = 0; beginIndex = 0; generateStageDifficulty = difficulty.Value; + changeDifficultyDisposable.Clear(); GenerateStage(); } private void GenerateStage() { + /* + * 生成はLength基準でまず + * 拡張するならLenghtIndexをつくって更に小さい単位GenerateCountに対応できるようにする + * 一気に読み込むのはしんどい + * prefabも1つづつ読み込んだほうがいいっぽい + * 次の難易度のリソースを1つづつ読み込むなどする + * 読み込みリソースのオブジェクト数を減らす + */ // リソース読み込み stageBeginPrefabList = stageDataDict[generateStageDifficulty].GetBeginStagePrefabs(); stageRandomPrefabList = stageDataDict[generateStageDifficulty].GetRandomStagePrefabs(); @@ -89,6 +93,8 @@ namespace MyGame.Scenes.MiniGame.Scripts stagePrefabs = stageBeginPrefabList[beginIndex..rangeEnd]; beginIndex += stagePrefabs.Length; } + + Debug.Log($"stage {generateStageDifficulty} use begin {stagePrefabs.Length}"); var randomStageCount = stageCount - stagePrefabs.Length; if (randomStageCount > 0) { @@ -100,6 +106,7 @@ namespace MyGame.Scenes.MiniGame.Scripts randomStageCount -= count; } } + Debug.Log($"stage {generateStageDifficulty} use begin + random {stagePrefabs.Length}"); lengthIndex += stagePrefabs.Length; @@ -122,7 +129,7 @@ namespace MyGame.Scenes.MiniGame.Scripts // 落とし穴があった場合通知 stage.transform.FindAllChildrensComponent(x => { - if (x.ItemType != StageItem.Type.Hole) + if (!x.gameObject.activeInHierarchy || x.ItemType != StageItem.Type.Hole) { return; } @@ -145,7 +152,7 @@ namespace MyGame.Scenes.MiniGame.Scripts .Subscribe(_ => { }, () => { difficulty.Value = NextDifficulty(difficulty.Value); - }).AddTo(this); + }).AddTo(changeDifficultyDisposable); } }