Unity のオブジェクトにスクリプトをアタッチし、そのスクリプト内で定義したpublicレベルまたはシリアライズした変数にインスペクターで値を設定したとします。
後にスクリプトを編集して変数名を変えると、デフォルトでは割り当てた値やオブジェクトは消えてしまいます。
これを防ぐには UnityEngine.Serialization に定義されている FormerlySerializedAs を使用します。
例えば SerializeField によってインスペクター上で可視化した変数 before の名前を after 変更し、かつその値を維持させるにはスクリプトで以下のように記述します。
using UnityEngine.Serialization; // シリアライズした変数の値を維持する // 変数名を before から after に変更する例 [SerializeField] [FormerlySerializedAs("before")] GameObject after;
FormerlySerializedAs の引数には、変更前の変数の名前を入力します。
変数の名前を変更した後、Unity の編集画面に戻ってビルドが走ったら FormerlySerializedAs を削除して大丈夫です。これによって変数の値を維持した状態で自由に名前を設定できます。
また、この機能を使用するには UnityEngine.Serialization の using が必要ですので注意してください。