Unity에서 많이 쓰던데 왜 쓰는 걸까?
요약
어트리부트(Attribute) | 기능 |
SerializeField | private로 선언된 변수를 인스펙터에 노출시킴 |
System.Serializable | MonoBehaviour 이외의 클래스 멤버들을 인스펙터에 노출시킴 |
↓↓ 자세한 내용이 알고 싶으면 내려가기↓↓
1. SerializeField
유니티에서 SerializeField는 private 필드의 직렬화를 위해 이용된다.
직렬화란? 객체가 메모리에 보존되지 않아도 저장이나 전송을 할 수 있게 만드는 것.
원래는 public을 이용하여 직렬화가 가능하도록 하며 인스펙터에서 특정 변수의 값을 변경할 수 있게 한다.
그러나 필요에 의해 private 필드를 써야할 경우, [SerializeField]를 작성하여 직렬화할 수 있다.
[SerializeField] GameObject goComboImage = null;
[SerializeField] UnityEngine.UI.Text txtCombo = null;
이로써 작업창의 Inspector에 'goComboImage'와 'txtCombo'가 뜨게 되었다.
2. System.Serializable
이또한 직렬화에 사용된다.
다만 System.Serializable은 타입 전체를 직렬화할 수 있겠끔 한다.
class나 struct 위에 선언한다.
[System.Serializable]
public class ObjectInfo
{
public GameObject goPrefab;
public int count;
public Transform tfPoolParent;
}
Serializable을 이용하여 코드를 작성하고, Scene을 확인해보자.

이제 스크립트 밖에서도 설정을 변경할 수 있게 되었다.
'유니티' 카테고리의 다른 글
[유니티 이론] 중요한 기능!! Deltatime 정의 및 사용법 (0) | 2024.01.23 |
---|---|
[유니티 기초] 버튼 입력 방식으로 물체 이동하기 - GetButton, Transform (1) | 2024.01.23 |
[유니티 기초] Input 으로 키보드, 마우스 입력 기능 넣기 (1) | 2024.01.21 |
[유니티 기초] 오브젝트 라이프 사이클 (0) | 2024.01.21 |
[유니티] 레벨 만들기 - Snap Increment (1) | 2024.01.09 |