[SerializeField]를 사용하는 이유
1. private 필드의 직렬화를 원할 때
유니티에서는 기본적으로 스크립트의 public 필드만 직렬화 할 수 있는데,
다른 스크립트에서 해당 필드를 여전히 private 으로 감추면서도
직렬화를 통해 유니티 에디터의 인스펙터를 통한 값의 입력이 가능
2.직렬화를 커스터마이징 하기 위해
직렬화된 필드에 할당할 수 있는 값을 제한, 인스펙터에서 필드를 선택할 때 설명을 제공
3. 더 쉽게 업데이트 하기 위해
필드의 이름이나 타입을 변경해야 하는 경우
직렬화된 데이터도 업데이트해야 하는데,
직렬화된 데이터가 변경된 필드를 따라가도록 할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class App : MonoBehaviour
{
public enum PlatformType
{
PC, Android, iOS
}
[SerializeField]
private PlatformType platformType;
[SerializeField]
private int hp = 10;
[SerializeField]
private float exp = 11.33f;
[SerializeField]
private bool isGameOver = false;
[SerializeField]
private string appName = "MyApp";
[SerializeField]
private GameObject[] arrGameObjects;
[SerializeField]
private List<Transform> arrTransforms;
void Start()
{
}
void Update()
{
}
}