Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Play Mode Saver でPlay Mode中に変更したパラメータを保持する【Unity】

今回はアセットの紹介をしていきます。
紹介するのはPlay Mode Saver
Play Mode中に変更したパラメータを終了後も保持するアセットです。

screenshot

どんなアセット?

Play Mode中に変更したパラメータ(Transformの値など)を、Play Modeが終了した後も保持するアセットです。

 

通常、Play Mode中に変更したパラメータはPlay Modeを終了すると元通りになります。
どうしても保存したい場合、InspectorビューでCopy ComponentしてPlay Modeが終わった後Pasteするというやり方がよく使われます。
このアセットを使えば、それらの保存を簡単に行えます。

 

※レビューによると、Unity 2022.2ベータ版以降では動作しない可能性があります
1年以上更新されていないのでそこは注意

 

 

実行環境

Unity 2021.3.12f1

Play Mode Saver ver1.3.5

 

 

インポートの確認

アセットインポート完了時はこんな感じ。

初期設定とかは必要なし。すぐに実行できます。

 

 

実際に試してみる

基本的な使い方

Unity Editorのメニューから、Window/Play Mode Saverを押して、Play Mode Saverウィンドウを開きます。

 

このウインドウはPlay Mode中にのみ機能します。

 

Play Mode中にScene内のGameObjectをドラッグ&ドロップすると、保持対象として登録され、
Play Modeが終了した時、その瞬間のパラメータが全て保持されます
保存するタイミングは後述のSave Modeにより異なります。

 

ちなみにInspectorビューからドラッグ&ドロップして、特定のコンポーネントだけ対象にすることもできます。
GameObjectを丸ごと登録すると影響範囲が大きいため基本はコンポーネント単位でやったほうがいいかも。

 

ちなみにドラッグ&ドロップ以外にも、GameObjectやコンポーネントを右クリックして登録することもできます。
ドラッグ&ドロップと違い、後述するSave Modeを直接指定できます

この時、ウインドウが開いていない場合は自動的に開かれます。

 

 

Save Mode(保存形式)の違い

Save Mode(保存する形式)は2種類あります。
Save Modeの違いにより保存されるタイミングが違います。

Save on Exit

Play Modeが終了した時のパラメータを保持するモード。

所感ですが、終了時にパラメータがどういう風になるか予想できない場合は使わない方がいいです。

 

Snapshot

Save Snapshotが押されたタイミングのパラメータを保持するモード。

Save on Exitよりは安全。
Play Mode中に一時停止して、きちんと想定した値になっているかを確認してから保存した方がよい
Save Snapshotした後に変更したパラメータは再度Save Snapshotしない限り無視されます。

 

Save Modeの切り替え

モードの切り替えは、同じくPlay Mode Saverウインドウ上でできます。
Save Mode部分のボタンを押すだけ。

ドラッグ&ドロップで登録した場合は、デフォルトでSave on Exitになります。

 

登録の解除方法

Play Mode Saverウインドウから、右側にある×ボタンを押すと解除されます

Unity Personalだとほとんど見えない!

 

 

あるいは、登録したGameObjectかコンポーネントを右クリックして、Forget Play Mode Changesを選択しても解除できます。

 

 

変更したパラメータを元に戻す

Play Mode Saverで変更した値は、Ctrl + Zで元に戻せます
また、Ctrl + Yで元に戻した変更を再適用できます

 

 

 

注意点

親を保持対象にすると子も保持される

親子関係にあるGameObjectで、親を保持対象とした場合、子の変更も保持されます
子オブジェクトが増えたり減ったりした場合も全て保存されます。
複雑な親子関係になっているGameObjectを扱う場合は注意しましょう

 

※子だけ保持対象にすることもでき、その場合親の変更は無視されます。

※登録したGameObjectやそれにアタッチされているコンポーネントをが削除された場合、自動的に登録も解除されます。

 

動的生成されたGameObjectを対象にした場合はそのままSceneに残る

Play Mode後、何らかの方法でSceneに動的生成されたGameObjectを保持対象に登録した場合、
そのGameObjectはPlay Mode終了後もSceneに残り続けます
コンポーネントだけ選んでもGameObjectごと残ります。

Prefabを保持対象とした場合、元のPrefab側は変化しないのでそこは安心。

 

 

 

まとめ

Play Mode Saverを使うと、Play Mode中に変更したGameObjectのパラメータが終了後も保持される
・モードは2つあり、Play Mode終了時のパラメータを保持するモードと、任意のタイミングでパラメータを保持するモードがある
・保持したパラメータを元に戻せるし、再適用も簡単にできる

 

Play Modeを終了し忘れた時だけでなく、プレイヤーの移動速度など実際にゲームを動かしながらパラメータの調整をしたい時にも便利なアセットですね。

 

 

以上です。

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。