유니티 [SerializeField] 란?
작성자 정보
- 마스터 작성
- 작성일
컨텐츠 정보
- 364 조회
-
목록
본문
유니티 SerializeField 란?
유니티 SerializeField 는 스크립트에서 private 필드를 직렬화하기 위해 사용합니다.
직렬화는 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스입니다.
유니티에서 직렬화는 게임 상태를 저장 및 로드하거나 에디터와 런타임 간에 데이터를 전송하는 데 사용됩니다.
사실 유니티에서는 스크립트의 public 필드(예; public 변수)만 직렬화할 수 있습니다.
그러나 [SerializeField] 를 사용하면 private 필드도 직렬화할 수도 있습니다.
예를 들어 다음과 같이 private 로 선언된 변수 myPrivateField 앞에 [SerializeField] 를 붙이면 이 변수를 직렬화할 수 있으며,
그 결과 유니티의 인스펙터에 해당 변수가 노출됩니다.
using UnityEngine;
public class Example : MonoBehaviour
{
[SerializeField]
private int myPrivateField;
}
[SerializeField] 를 사용하는 이유
그럼 Unity C#에서 [SerializeField] 를 사용하는 이유는 무엇일까요? 아마 다음의 3가지가 대표적인 이유일 것입니다.
1.private 필드의 직렬화를 원할 때
앞서 언급했듯이, 유니티에서는 기본적으로 스크립트의 public 필드만 직렬화할 수 있습니다.
하지만 [SerializeField] 를 사용하여 private 필드를 직렬화할 수도 있습니다.
즉, 다른 스크립트에서 해당 필드를 여전히 private 으로 감추면서도
직렬화를 통해 유니티 에디터의 인스펙터를 통한 값의 입력이 가능해지는 것입니다.
2.직렬화를 커스터마이징하고 싶을 때
[SerializeField] 를 사용하면 필드의 직렬화를 커스터마이징할 수 있습니다.
예를 들어 [Range] 애트리뷰트(attribute)를 사용하여 직렬화된 필드에 할당할 수 있는 값을 제한하거나
[Tooltip] 을 사용하여 인스펙터에서 필드를 선택할 때 설명을 제공할 수 있습니다.
3.코드를 더 쉽게 업데이트하기 위해
직렬화된 private 필드가 있고 필드의 이름이나 타입을 변경해야 하는 경우 직렬화된 데이터도 업데이트해야 합니다.
이 때, 직렬화된 데이터가 많은 경우 시간이 오래 걸릴 수 있습니다.
하지만 [SerializeField] 를 이용함으로써 우리는 직렬화된 데이터가 변경된 필드를 따라가도록 할 수 있습니다.
따라서 코드를 업데이트할 때 시간을 절약할 수 있습니다.
출처 : https://www.ibatstudio.com/유니티-serializefield-란-무엇이고-왜-사용하는가/
관련자료
-
이전
-
다음