유니티

유니티 [SerializeField] 란?

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

유니티 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-란-무엇이고-왜-사용하는가/

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0