0.0 はじめに
publicやSerializeFieldなどでインスペクターから値変更などアクセスが可能ですが、スクリプトで変数の名前を変更すると、デフォルト設定の状態ではインスペクターから値は消えてしまいます。
値の数が少ない場合はまた設定すればよいのですが、大量にある場合や調整済みの値などは再度設定に手間がかかります。
変更後も値を保持するための方法を説明します。
1.0 UnityEngine.Serializationの追加
スクリプトの先頭にあるusing名前空間にUnityEngine.Serializationを追加します。下記にあるFormerlySerializedAsアノテーションを使うために必要です。
2.0 FormerlySerializedAsアノテーションを挿入
値を保持したい変数の前にFormerlySerializedAsアノテーションを挿入します。FormerlySerializedAs()の()内の引数には保持したい値を持っている変数名(変更前の変数名)を""で囲んで入れます。
下記の例ではbeforeが変更前の変数、afterが変更後の変数です。
3.0 Unityでビルド
Unityに戻ってビルドしましょう。(Unityのデフォルト設定であればスクリプトを保存してUnity画面をアクティブにすると自動でビルドしてくれます。)
変更された変数に値が保持されているはずです。
この後はFormerlySerializedAsアノテーションを削除しても問題ありません。