본문 바로가기
Engine/Unity3D

Inspector의 값을 유지한 상태로 변수명 변경하는 방법

by 황금표정 2021. 5. 7.

직렬화 된 필드의 이름 변경하기

개발중에 Scene이나 Prefab에 있는 MonoBehaviour 코드의 SerializeField값은 유지한 상태로 변수명을 변경할 때 사용할 수 있는 방법입니다.

 

 

변수 이름 변경하기

 

아래와 같은 클래스가 있을 경우

 

using UnityEngine;

class MyClass : MonoBehaviour
{
    [SerializeField]
    private string m_MyVariable;
}

 

m_MyVariable의 변수를 다른 이름 m_AnotherVariable으로 변경 할 경우 Prefab이나 Scene에 배치된 오브젝트들의 설정값이 변경되게 됩니다.

이를 원치 않을 경우 아래와 같은 방법으로 해결 할 수 있습니다.

 

using UnityEngine;
using UnityEngine.Serialization;

class MyClass : MonoBehaviour
{
    [FormerlySerializedAs("m_MyVariable")]
    [SerializeField]
    private string m_AnotherVariable;
}

 

[SerializeField]를 사용하지않은 public으로 선언된 변수를 변경할 경우

 

using UnityEngine;

class MyClass : MonoBehaviour
{
    public string myValue;
}

 

아래와 같이 변경 할 수 있습니다.

 

using UnityEngine;
using UnityEngine.Serialization;

class MyClass : MonoBehaviour
{
    [FormerlySerializedAs("myValue")]
    [SerializeField]
    private string m_Value;
    public string myValue
    {
        get { return m_Value; }
        set { m_Value = value; }
    }

}

 

변경한 변수이름을 다시 변경하는 것도 가능합니다.

 

using UnityEngine;
using UnityEngine.Serialization;

class MyClass : MonoBehaviour
{
    [FormerlySerializedAs("m_MyVariable")]
    [FormerlySerializedAs("m_ABetterName")]
    [SerializeField]
    private string m_EvenBetterName;
}

 

선언한 Attribute는 이름을 변경 한 후 Scene과 Asset을 다시 저장 한 후 제거 할 수 있습니다.

반응형