質問編集履歴
14
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -67,5 +67,7 @@ | |
| 67 67 | 
             
            ManagedHeapが大きいのでそもそもコードに問題がある可能性が大きいです。
         | 
| 68 68 | 
             
            しばらく色々と軽量化してみます……。
         | 
| 69 69 |  | 
| 70 | 
            +
            ↓
         | 
| 71 | 
            +
             | 
| 70 72 | 
             
            フレームレートが落ちている際もcpu、gpuの使用率は共に20%を上回らないようです。
         | 
| 71 73 | 
             
            パソコンの設定のせいなのかこれでは本当の負荷が測れていない可能性がありそうな気がする。
         | 
13
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -65,4 +65,7 @@ | |
| 65 65 | 
             
            最初のやり方の際には正直マップが小さかったです。
         | 
| 66 66 | 
             
            そのことを加味していなかったせいか改めて試すとこちらでもメモリ使用量が大きいです。
         | 
| 67 67 | 
             
            ManagedHeapが大きいのでそもそもコードに問題がある可能性が大きいです。
         | 
| 68 | 
            -
            しばらく色々と軽量化してみます……。
         | 
| 68 | 
            +
            しばらく色々と軽量化してみます……。
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            フレームレートが落ちている際もcpu、gpuの使用率は共に20%を上回らないようです。
         | 
| 71 | 
            +
            パソコンの設定のせいなのかこれでは本当の負荷が測れていない可能性がありそうな気がする。
         | 
12
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -51,4 +51,18 @@ | |
| 51 51 |  | 
| 52 52 | 
             
            インスタンス化ではフレームレートが低下し入力が遅延するなどゲームプレイを阻害し、メモリ使用量もかなり増えていた。
         | 
| 53 53 | 
             
            しかし前のマップを消すとメモリ使用量は改善されたが前に試した方法に比べて劇的に改善されているかというとそんなことはなかった。
         | 
| 54 | 
            -
            オブジェクトプールについても検証してみる。
         | 
| 54 | 
            +
            オブジェクトプールについても検証してみる。
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ↓
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            オブジェクトプールの方針で試してみましたが、こちらは非常にメモリ使用量が高くなりました。
         | 
| 59 | 
            +
            フレームレートは安定して入力遅延は抑えられたものの良くない方法だと結論づけざるを得ないように感じます。
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            結果として最初のやり方が一番安定しているように思いました。
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ↓
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            最初のやり方の際には正直マップが小さかったです。
         | 
| 66 | 
            +
            そのことを加味していなかったせいか改めて試すとこちらでもメモリ使用量が大きいです。
         | 
| 67 | 
            +
            ManagedHeapが大きいのでそもそもコードに問題がある可能性が大きいです。
         | 
| 68 | 
            +
            しばらく色々と軽量化してみます……。
         | 
11
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | 
            File without changes
         | 
10
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -45,4 +45,10 @@ | |
| 45 45 | 
             
            ### さらに追記
         | 
| 46 46 |  | 
| 47 47 | 
             
            マップそのものをプレハブ化して呼び出すアプローチを試してみる。
         | 
| 48 | 
            -
            呼び出す際もインスタント化とオブジェクトプールの2つを試してみる。
         | 
| 48 | 
            +
            呼び出す際もインスタント化とオブジェクトプールの2つを試してみる。
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            ↓
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            インスタンス化ではフレームレートが低下し入力が遅延するなどゲームプレイを阻害し、メモリ使用量もかなり増えていた。
         | 
| 53 | 
            +
            しかし前のマップを消すとメモリ使用量は改善されたが前に試した方法に比べて劇的に改善されているかというとそんなことはなかった。
         | 
| 54 | 
            +
            オブジェクトプールについても検証してみる。
         | 
9
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -44,4 +44,5 @@ | |
| 44 44 |  | 
| 45 45 | 
             
            ### さらに追記
         | 
| 46 46 |  | 
| 47 | 
            -
            マップそのものをプレハブ化して呼び出すアプローチを試してみる。
         | 
| 47 | 
            +
            マップそのものをプレハブ化して呼び出すアプローチを試してみる。
         | 
| 48 | 
            +
            呼び出す際もインスタント化とオブジェクトプールの2つを試してみる。
         | 
8
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -39,4 +39,9 @@ | |
| 39 39 | 
             
            上記記事の記述によると最適化されるようなので今のところ使うつもりです。
         | 
| 40 40 |  | 
| 41 41 | 
             
            そして上の仕様でプロファイラーを注視しつつ作っていきますがアドバイスがあればぜひとも教えて下さい。
         | 
| 42 | 
            -
            よろしくお願いします。
         | 
| 42 | 
            +
            よろしくお願いします。
         | 
| 43 | 
            +
             | 
| 44 | 
            +
             | 
| 45 | 
            +
            ### さらに追記
         | 
| 46 | 
            +
             | 
| 47 | 
            +
            マップそのものをプレハブ化して呼び出すアプローチを試してみる。
         | 
7
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | 
            File without changes
         | 
6
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -9,8 +9,8 @@ | |
| 9 9 |  | 
| 10 10 | 
             
            ・まずゲーム全体を一つの大きなシーンにする。
         | 
| 11 11 |  | 
| 12 | 
            -
            ・ | 
| 12 | 
            +
            ・ステージが5つとするなら5つはそれぞれマップにつき一つのTileMapオブジェクトと環境物、敵、ギミックなどで占められていると仮定する。
         | 
| 13 | 
            -
            ・それに加えてそれぞれのマップをつなぐ通路的な小さな | 
| 13 | 
            +
            ・それに加えてそれぞれのマップをつなぐ通路的な小さな空間を用意する。
         | 
| 14 14 | 
             
            ・普段は現在いる一つのマップ以外の4つのオブジェクトは非アクティブにしておく。
         | 
| 15 15 | 
             
            ・マップの切れ目近くで次のマップのテクスチャなどのデータを非同期でロードし、マップに侵入する通路で次のマップのオブジェクトを全て一斉に(一部ずつにしたほうがいいでしょうか?)アクティブにする。
         | 
| 16 16 | 
             
            ・次のマップに入れば通路を除く前のマップは非アクティブにしてデータもアンロードする。
         | 
5
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -34,7 +34,9 @@ | |
| 34 34 | 
             
            というのを加えてみることにしました。
         | 
| 35 35 | 
             
            色々と調べましたが正直あまり定まらず、僕が好きな2Dゲームでは(シームレスです)シーン移動のようなものはなく、あるマップのはしから落ちると別のマップの地面に叩きつけられるようなこともあったので一つのシーンにマップを集めていいのではないかと思い至った次第です。
         | 
| 36 36 | 
             
            それからUse By Compositeを使うかどうか悩んでいます。
         | 
| 37 | 
            -
            デフォルトのタイルマップコライダーを無効化してコンポジットコライダーを利用するプロパティのようですが | 
| 37 | 
            +
            デフォルトのタイルマップコライダーを無効化してコンポジットコライダーを利用するプロパティのようですが、
         | 
| 38 | 
            +
            [2D タイルマップアセットワークフロー](https://blogs.unity3d.com/jp/2018/01/25/2d-tilemap-asset-workflow-from-image-to-level/)
         | 
| 38 | 
            -
            と | 
| 39 | 
            +
            上記記事の記述によると最適化されるようなので今のところ使うつもりです。
         | 
| 40 | 
            +
             | 
| 39 | 
            -
            そして上 | 
| 41 | 
            +
            そして上の仕様でプロファイラーを注視しつつ作っていきますがアドバイスがあればぜひとも教えて下さい。
         | 
| 40 42 | 
             
            よろしくお願いします。
         | 
4
誤字修正
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
            ・マップが5つとするなら5つはそれぞれマップにつき一つのTileMapオブジェクトと環境物、敵、ギミックなどで占められていると仮定する。
         | 
| 13 13 | 
             
            ・それに加えてそれぞれのマップをつなぐ通路的な小さなマップを用意する。
         | 
| 14 14 | 
             
            ・普段は現在いる一つのマップ以外の4つのオブジェクトは非アクティブにしておく。
         | 
| 15 | 
            -
            ・マップの切れ目近くで次のマップのテクスチャなどのデータをロードし、マップに侵入する通路で次のマップのオブジェクトを全て一斉に(一部ずつにしたほうがいいでしょうか?)アクティブにする。
         | 
| 15 | 
            +
            ・マップの切れ目近くで次のマップのテクスチャなどのデータを非同期でロードし、マップに侵入する通路で次のマップのオブジェクトを全て一斉に(一部ずつにしたほうがいいでしょうか?)アクティブにする。
         | 
| 16 16 | 
             
            ・次のマップに入れば通路を除く前のマップは非アクティブにしてデータもアンロードする。
         | 
| 17 17 | 
             
            ・敵のステータスに所属マップを加えて休憩ポイントで休憩した際とファストトラベルした際に蘇る敵を管理する。
         | 
| 18 18 | 
             
            ・ギミックと敵はプレイヤーの近くに来るまで機能を停止していて、ある程度離れるとまた機能停止する。しかし初期位置?元の持ち場?というか縄張りを離れていた場合戻るまでは敵キャラは動く。(startメソッドで初期位置を記録する)
         | 
| @@ -22,4 +22,19 @@ | |
| 22 22 | 
             
            メモリ管理に自分なりに気を遣った結果ですが、至らぬ点、あるいは根本の方向性からして間違っているということがあればご指摘いただければ幸いです。
         | 
| 23 23 | 
             
            また足りない情報などあればお手数ですがご指摘くださいませ。
         | 
| 24 24 |  | 
| 25 | 
            -
            どうぞよろしくお願いいたします。
         | 
| 25 | 
            +
            どうぞよろしくお願いいたします。
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ### 追記
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            手前で色々と調べた結果、上の仕様に加えて
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            ・マップをアクティブにした際環境物やエネミーなどのオブジェクトはコンポーネントのenableを切った状態にして呼び出す。
         | 
| 32 | 
            +
            そして近くに入ったらenableをtrueにする。(この際スプライトレンダラーの方はそもそもカメラに入っていない場合は切らなくていいですか?)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            というのを加えてみることにしました。
         | 
| 35 | 
            +
            色々と調べましたが正直あまり定まらず、僕が好きな2Dゲームでは(シームレスです)シーン移動のようなものはなく、あるマップのはしから落ちると別のマップの地面に叩きつけられるようなこともあったので一つのシーンにマップを集めていいのではないかと思い至った次第です。
         | 
| 36 | 
            +
            それからUse By Compositeを使うかどうか悩んでいます。
         | 
| 37 | 
            +
            デフォルトのタイルマップコライダーを無効化してコンポジットコライダーを利用するプロパティのようですがコンポジットがタイルマップコライダーよりも軽さが優れているというような記述は見受けられませんでした。
         | 
| 38 | 
            +
            とりあえず使わずにやってみます。
         | 
| 39 | 
            +
            そして上記の仕様でプロファイラーを注視しつつ作っていきますがアドバイスがあればぜひとも教えて下さい。
         | 
| 40 | 
            +
            よろしくお願いします。
         | 
3
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -3,7 +3,7 @@ | |
| 3 3 | 
             
            Unity2Dでダークソウルのようなファストトラベル付きのシームレスマップを実装したい。
         | 
| 4 4 | 
             
            現在予定している仕様については以下で詳細を述べます。
         | 
| 5 5 | 
             
            しかしこの仕様に添って提案・アドバイスを行う必要は全くなく、他によい実装があればどうかご教授くださいませ。
         | 
| 6 | 
            -
             | 
| 6 | 
            +
            よろしくお願いいたします。
         | 
| 7 7 |  | 
| 8 8 | 
             
            ### 現在考えている仕様
         | 
| 9 9 |  | 
2
    
        title	
    CHANGED
    
    | @@ -1,1 +1,1 @@ | |
| 1 | 
            -
            Unity2Dでシームレスマップを実装する方法
         | 
| 1 | 
            +
            Unity2Dでシームレスマップを実装する方法について
         | 
    
        body	
    CHANGED
    
    | @@ -20,5 +20,6 @@ | |
| 20 20 |  | 
| 21 21 | 
             
            というようなやり方でシームレスマップと敵キャラを管理したいと思うのですがいかがでしょうか?
         | 
| 22 22 | 
             
            メモリ管理に自分なりに気を遣った結果ですが、至らぬ点、あるいは根本の方向性からして間違っているということがあればご指摘いただければ幸いです。
         | 
| 23 | 
            +
            また足りない情報などあればお手数ですがご指摘くださいませ。
         | 
| 23 24 |  | 
| 24 25 | 
             
            どうぞよろしくお願いいたします。
         | 
1
加筆修正
    
        title	
    CHANGED
    
    | 
            File without changes
         | 
    
        body	
    CHANGED
    
    | @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
            ・マップが5つとするなら5つはそれぞれマップにつき一つのTileMapオブジェクトと環境物、敵、ギミックなどで占められていると仮定する。
         | 
| 13 13 | 
             
            ・それに加えてそれぞれのマップをつなぐ通路的な小さなマップを用意する。
         | 
| 14 14 | 
             
            ・普段は現在いる一つのマップ以外の4つのオブジェクトは非アクティブにしておく。
         | 
| 15 | 
            -
            ・マップの切れ目近くで次のマップのテクスチャなどのデータをロードし、マップに侵入する通路で次のマップをアクティブにする。
         | 
| 15 | 
            +
            ・マップの切れ目近くで次のマップのテクスチャなどのデータをロードし、マップに侵入する通路で次のマップのオブジェクトを全て一斉に(一部ずつにしたほうがいいでしょうか?)アクティブにする。
         | 
| 16 16 | 
             
            ・次のマップに入れば通路を除く前のマップは非アクティブにしてデータもアンロードする。
         | 
| 17 17 | 
             
            ・敵のステータスに所属マップを加えて休憩ポイントで休憩した際とファストトラベルした際に蘇る敵を管理する。
         | 
| 18 18 | 
             
            ・ギミックと敵はプレイヤーの近くに来るまで機能を停止していて、ある程度離れるとまた機能停止する。しかし初期位置?元の持ち場?というか縄張りを離れていた場合戻るまでは敵キャラは動く。(startメソッドで初期位置を記録する)
         | 
