직렬화 된 필드의 이름 변경하기
개발중에 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을 다시 저장 한 후 제거 할 수 있습니다.
반응형
'Engine > Unity3D' 카테고리의 다른 글
유니티에서 특정 폴더를 감추기 (0) | 2021.05.18 |
---|---|
Unity Custom Package 만들기 (0) | 2021.05.13 |
IL2CPP 빌드시 알 수 없는 오류 사항에 대한 해결 방법 (0) | 2021.05.07 |
Unity 'AndroidJavaClass', 'Android JNI' 관련 에러 해결 방법 (1) | 2021.04.16 |
[Mac] MacOS Catalina Unitypackage Zip 파일 해제가 이상할 때 (0) | 2019.10.19 |