[過去ログ] 【3Dゲームエンジン】Unity質問スレッド33 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
118
(3): 2017/12/26(火)20:26 ID:O9PscLer(1) AAS
シーン遷移時に引き継ぎたい変数をどの手段から選べばいいか迷ってるんですけど、

1 static変数として持つ
2 ScriptableObjectを作ってそこに一時保管しておく
3 dontdestroyで変数の入ったスクリプトがアタッチされているオブジェクトを壊さず持っていく
4 外部のdb等に一時保管しておく

辺りで迷ってるのですが、ケースバイケースだとは思うのですがどれがいいのかアドバイスお願いします。
1 なるべくstatic使わない方が初心者には良い とたまに聞きます。
  似た名前のローカル変数を複数使っているので混乱する可能性もあるかなと

2 基本的に変動しない小さいマスターデータをdb代わりに使う事が多い と見ました
  こういった使い方には適さないのかもと迷いました

3 普通のゲームと同じくいくつかのシーンをループして進めていくのでオブジェクトが被らないようにシングルトンにする手間や
  処理は一切入れず変数入れとしてこの処理をするならScriotbleObjectでいいのかな?と思ったり

4 形式にもよるのでしょうが一時的な変数をイチイチ外部に書き出すのはどうなのかと
121
(2): 2017/12/26(火)21:32 ID:ycBgqB9O(1) AAS
>>118
何が消えてOKで、何が消えたら不味いのか、切り分けが分からない
例えば、セーブ/ロード付けるなら、シーン移動時にセーブとロード
するから結局同じ事じゃないの?
122
(1): 2017/12/26(火)21:36 ID:ef3cEapS(8/11) AAS
>>118

個人的には「3」を使ってます!

最初のLoad用のシーン0でフラグ管理用のオブジェクトを「DontDestroy」設定して、
その後はシーン1へ遷移して、以降はシーン0へは戻りません
(戻ると、「DontDestroy」設定を繰り返してしまうので・・・)

フラグ管理用のオブジェクトに載せたスクリプト内では、Start()内で、
ゲームを通してシーン間で共有する変数を全て「public」で宣言して初期値設定しています

そして、他のシーンの他のオブジェクトから、適宜呼び出して参照や代入して共有してますね
124
(1): 2017/12/26(火)23:19 ID:V8TVTato(1) AAS
>>118
言うまでもないが可能不可能で言えばどれでも出来る
と言うか、シーンロードでDestroyされないヒエラルキーに依存しないものならなんでも保持は可能

適不適で言うなら
1.staticである必要性はない。staticにすることによる弊害の方が多いため不適
2.ScriptableObjectは実行時はReadOnlyなデータのバリエーションを扱うもの。使い方が間違っているため当然不適
3.揮発性の情報ならこれが最適※
4.不揮発性の情報ならこれこれが最適※

※揮発性情報は意図せずプロセスが死亡した場合に消えても良いもの、不揮発性情報はプロセスが死亡しても残るべきものとする
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.088s