[Unity]エディタでゲーム再生中に変更した値を停止しても消さない方法
以前エディタでゲームを再生中に停止しても値を消さない方法を紹介したが、ScriptableObjectは量が増えてくると管理が面倒くさい問題が出てきた。
なので、PlayModePersistと同じような発想(終了時に値を再設定する)のアセットを自作してみたので公開する。
[Unity]エディタ再生中の情報を停止時も保持するPlayModePersistが予想以上に使いやすい件
PersistentAmongPlayMode_Unity
これは、説明にある通り、エディタ終了時しても値を残しておくことが出来るアセット。これを使うと下の図のように、値を再生中に変更しても破棄されない。
再生前
再生中
再生後
使い方は、PersistentAmongPlayModeフォルダ以下をプロジェクトに配置し、破棄したくない値に[PersistentAmongPlayMode]を設定するだけ。
例えば上の図ではこんな感じのクラスを定義していた。
public class SampleComponent : MonoBehaviour
{
[PersistentAmongPlayMode]
public string msg = string.Empty;public int count = 0;
[PersistentAmongPlayMode]
public int serializeCount = 0;
}
ちなみに、保存されるのは最後に開いていたシーンの値のみ。つまり、シーン遷移したりシーン結合したりする場合は保持出来ない。
それとTransformは保持出来ない。
その辺りをやりたければPlayModePersistをどうぞ。
何をやっているかと言うと、以下の事を行ってる。
- 全オブジェクトのPersistentAmongPlayMode属性を持つプロパティ一覧を取得してキャッシュする
- 全オブジェクトの属性持ちプロパティに値を入れなおす
- 上をエディタの再生終了時に呼び出す