テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

エディタでゲーム再生中に変更した値を停止しても消さない その2

[Unity]エディタでゲーム再生中に変更した値を停止しても消さない方法

以前エディタでゲームを再生中に停止しても値を消さない方法を紹介したが、ScriptableObjectは量が増えてくると管理が面倒くさい問題が出てきた。

なので、PlayModePersistと同じような発想(終了時に値を再設定する)のアセットを自作してみたので公開する。

[Unity]エディタ再生中の情報を停止時も保持するPlayModePersistが予想以上に使いやすい件



PersistentAmongPlayMode_Unity


これは、説明にある通り、エディタ終了時しても値を残しておくことが出来るアセット。これを使うと下の図のように、値を再生中に変更しても破棄されない。

スクリーンショット 2013-11-04 23.04.24
再生前

スクリーンショット 2013-11-04 23.04.24
再生中

スクリーンショット 2013-11-04 23.04.24
再生後


使い方は、PersistentAmongPlayModeフォルダ以下をプロジェクトに配置し、破棄したくない値に[PersistentAmongPlayMode]を設定するだけ。

例えば上の図ではこんな感じのクラスを定義していた。

public class SampleComponent : MonoBehaviour
{
[PersistentAmongPlayMode]
public string msg = string.Empty;

public int count = 0;

[PersistentAmongPlayMode]
public int serializeCount = 0;
}

ちなみに、保存されるのは最後に開いていたシーンの値のみ。つまり、シーン遷移したりシーン結合したりする場合は保持出来ない。

それとTransformは保持出来ない。
その辺りをやりたければPlayModePersistをどうぞ。


何をやっているかと言うと、以下の事を行ってる。

  1. 全オブジェクトのPersistentAmongPlayMode属性を持つプロパティ一覧を取得してキャッシュする
  2. 全オブジェクトの属性持ちプロパティに値を入れなおす
  3. 上をエディタの再生終了時に呼び出す
これだけ。