본문 바로가기
Engine/Unity3D

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

by 황금표정 2019. 7. 4.

아래의 글은 원문:Renaming Serialized Fields의 내용을 토대로 다시 작성된 글입니다.

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

변수 이름 변경하기

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

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를 언제 제거 할 수 있습니까?
이름을 변경 한 후 SceneAsset을 다시 저장 한 후 속성을 제거할 수 있습니다.

반응형