유니티(Unity) 입문자 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 Unity 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
직렬화(Serialization)
직렬화(Serialization)는 광범위한 주제이기 때문에 이 글에서는 접근 제한자와 관련된 직렬화 속성과 관련하여 설명하고자 합니다.
직렬화(Serialization)란 객체의 상태를 저장 가능한 형식으로 변환하는 과정을 말합니다. 유니티에서는 직렬화를 통해 게임 객체의 상태를 저장하고 불러올 수 있습니다. 이는 게임을 저장하고 로드하는 기능을 구현할 때 핵심적인 역할을 합니다.
유니티에서는 MonoBehaviour를 상속받는 클래스의 변수들이 직렬화 대상이 됩니다. 기본적으로 public 변수들은 자동으로 직렬화되어 인스펙터 창에 노출됩니다. 반면에 private 변수들은 직렬화되지 않고 인스펙터 창에도 나타나지 않습니다.
아래 코드를 살펴보겠습니다.
using UnityEngine; public class Student : MonoBehaviour { public int grade = 80; private int mathScore = 2; }
위 코드에서 Student 클래스는 MonoBehaviour를 상속받고 있습니다. grade 변수는 public으로 선언되었기 때문에 자동으로 직렬화되어 인스펙터 창에 나타납니다. 반면에 mathScore 변수는 private으로 선언되었기 때문에 직렬화되지 않고 인스펙터 창에도 나타나지 않습니다.
아래는 Student 스크립트를 적용한 게임오브젝트의 인스펙터 창입니다.
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252F253ad7ee-b099-4710-8009-00d3bf338027%252FUntitled.png%3Ftable%3Dblock%26id%3D8031cca6-ea72-4b0d-b281-5bde7b5bcd5c%26cache%3Dv2&w=3840&q=75)
public 변수인 grade는 인스펙터 창에 나타나며 값을 직접 수정할 수 있습니다. 반면에 private 변수인 mathScore는 인스펙터 창에 보이지 않습니다. 이처럼 기본적으로 public 변수들은 직렬화되어 인스펙터 창에 노출되는 반면, private 변수들은 직렬화되지 않고 인스펙터 창에도 나타나지 않습니다.
하지만 개발 과정에서 public 변수를 인스펙터 창에 노출하고 싶지 않은 경우도 있을 수 있고, 반대로 private 변수를 인스펙터 창에 노출하고 싶은 경우도 있을 수 있습니다. 이런 경우에는 SerializeField와 HideInInspector 속성을 사용하여 직렬화 동작을 커스터마이즈할 수 있습니다.
1. SerializeField
SerializeField는 변수를 인스펙터 창에 드러나게 합니다.
using UnityEngine; public class Student : MonoBehaviour { public int grade = 80; [SerializeField] private int mathScore = 2; }
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252F77975318-1b5c-446f-9d4b-9eb2e53f620f%252FUntitled.png%3Ftable%3Dblock%26id%3D20535a24-5084-4ce3-bd16-5d3e46ab6595%26cache%3Dv2&w=3840&q=75)
private 변수라도 SerializeField를 사용하면, 인스펙터 창에 드러납니다.
2. HideInInspector
HideInInspector는 단어 그대로 변수를 인스펙터 창에서 숨깁니다.
using UnityEngine; public class Student : MonoBehaviour { [HideInInspector] public int grade = 80; [SerializeField] private int mathScore = 2; }
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252F83c75a39-3aba-4ba4-a792-7aefe4b07895%252F4767c1cc-794d-4ef2-a4f4-4ec668c5fff1%252FUntitled.png%3Ftable%3Dblock%26id%3Dbc173240-0e14-4450-9e63-b5aa6ab81a91%26cache%3Dv2&w=3840&q=75)
public 변수라도 HideInInspector를 사용하면, 인스펙터 창에서 보이지 않습니다.
내일배움캠프는 개발에 필요한 핵심만 배웁니다
지금까지 꼭 필요한 유니티 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 게임 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
CREDIT
글 | 우민규 내일배움캠프 수료생
편집 | 정효재 팀스파르타 에디터
취업 준비, 어디서부터 시작해야 할지 모르겠다면?
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
Share article
Subscribe to our newsletter