インディーゲームクリエイター目指すやつのブログ

インディーゲームクリエイター目指す、20歳の学生ですのブログです。開発環境はUnity、ドット調の2dゲームを主に作っています。

FormerlySerializedAs属性でシリアライズした変数の名前を変更しても値を保持させる。

この記事のバージョン
Unity2017.1.0f3

using UnityEngine;
public class Test : MonoBehaviour {
    public GameObject gameObject;//名前変えたい
}

この状態で'gameObject'の名前を変更すると、inspcetor上の値が保持されない

using UnityEngine;
using UnityEngine.Serialization;//ここを忘れずに

public class Test : MonoBehaviour {

  [FormerlySerializedAs("gameObject")]//引数はフィールド名と同じ
    public GameObject gameObject;
}

そして名前を変えてみる

using UnityEngine;
using UnityEngine.Serialization;

public class Test : MonoBehaviour {

  [FormerlySerializedAs("gameObject")]
    public GameObject newGameObject;//ここの名前を変更してもinspectorの値は保持
}

これで名前を変えてもinspectorの値は保持される。

using UnityEngine;
using UnityEngine.Serialization;

public class Test : MonoBehaviour {

  [FormerlySerializedAs("newGameObject")]//newGameObjectに変更
    public GameObject newGameObject;
}

※再度名前を変更してしまうと値は保持されないので属性の引数をフィールド名を同じにする。これで再度値が保持される。