TIL19. 5/10 SerializeField

김진영·2024년 5월 10일

스파르타코딩

목록 보기
19/39
post-thumbnail

유니티를 배우는 도중에 접근 제한자를 다시 배우게 되었다. public이나 private은 이미 알고 있는 내용이었지만 SerializeField에 대해 새롭게 나와서 오늘은 이거에 대해 알아볼 것이다.

1. SerializeField란?

우선 SerializeField의 개념을 알 필요가 있을 것 같다.

SerializeField

  • 스크립트에서 private 필드를 직렬화하기 위해 사용

여기서 직렬화란?

  • 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스, 유니티에서 직렬화는 게임 상태를 저장 및 로드하거나 에디터와 런타임 간에 데이터를 전송하는 데 사용

원래 유니티에서는 public만 직렬화를 할 수 있는데 SerializeField를 사용하게 되면 private도 직렬화를 할 수 있다.

[SerializeField] private void Example;

이런식으로 사용할 수 있다.

2. SerializeField을 사용하는 이유

대표적인 이유로 2가지가 있다.

1. private를 직렬화 하고 싶을 때

  • 위에 적은대로 유니티에서 직렬화는 public만 가능하다. 그러나 [SerializeField]를 통해 private도 직렬화가 가능하다. 기본적으로 private 변수는 인스펙터에 표시되지 않지만, [SerializeField]를 사용하면 다른 스크립트에서 해당 변수를 감추면서도 해당 변수가 인스펙터에서 수정 가능한 필드로 표시된다.

2. 코드를 더 쉽게 업데이트하기 위해

  • 직렬화된 private 필드가 있고 필드의 이름이나 타입을 변경해야 하는 경우 직렬화된 데이터도 업데이트해야 한다. 이 때, 직렬화된 데이터가 많은 경우 시간이 오래 걸릴 수 있다.
  • 하지만 [SerializeField] 를 이용함으로써 우리는 직렬화된 데이터가 변경된 필드를 따라가도록 할 수 있습니다. 따라서 코드를 업데이트할 때 시간을 절약할 수 있습니다.

3. 결론은?

SerializeField를 공부하면서 구글링도 좀 하고 찾아봤다. 어느정도 알게 되었고 제일 잘 이해됐던 글은 다른 스크립트에서 private를 사용한 필드를 감추고 싶고 유니티의 인스펙터에는 수정 가능한 필드로 표시하고 싶을 때 사용한다고 했던 말이 제일 머리에 남는 것 같다. 사실 저게 SerializeField의 a to z인 것 같기도 하고. 하지만 1인 개발이나 소규모 프로젝트에서는 보통 잘 사용안한다고 한다. 보통 소규모나 1인 개발은 그냥 public 사용한다고...

그래도 항상 1인 개발만 하는 것도 아니고 나중에 큰 프로젝트에 참여하게 되었을 때 자주 사용될 것 같아서 알아는 두는 것이 좋을 것 같다.

0개의 댓글