태그된 제품에 대해 수수료를 받습니다.
[SerializeField]
유니티에서 Private 변수를 인스펙터 창에서 노출할 수 있도록 하는 속성이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test01 : MonoBehaviour
{
[SerializeField] private int health = 100;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
// private 접근 제한자: 변수는 클래스 외부에서 접근할 수 없다.
// [SerializeField] 속성: 인스펙터에서 변수의 값을 편집할 수 있게 해준다.
왜 필요한가?
public 변수는 인스펙터에 자동으로 표시되고, private 변수는 인스펙터에 표시되지 않는다.
문제점
캡슐화 유지: 변수를 public으로 설정하면 코드 외부에서 직접 접근 가능하여 데이터의 무결성이 깨질 수 있다.
보안 및 관리: private 변수는 코드 내에서만 제어되어야 하지만, 편집 가능한 변수가 필요할 수 있다.
해결책: [SerializeField]를 사용하여 private 변수를 인스펙터에 노출시킬 수 있다.
주의사항
- 인스펙터에서 값을 변경하면 코드에서 설정한 초기값은 사용되지 않는다. 값 초기화는 인스펙터 값을 우선시하기 때문이다.
- 실시간 업데이트 불가능
코드를 수정해도, 인스펙터에서 설정한 값은 그대로 유지된다. 새 값 적용 시 초기화해야 한다.
- 지원하지 않는 변수 유형
[SerializeField]는 대부분의 기본 데이터 타입과 Unity 객체 타입만 지원한다.
지원되지 않는 타입(딕셔너리 등)은 사용자 정의 방법으로 직렬화해야 한다.
활용 예시 - 커스텀 에디터와 조합
[SerializeField]는 커스텀 에디터(Custom Editor)와 함께 사용하여 더 직관적인 UI를 만들 수 있다.
[SerializeField] private Color playerColor = Color.red; // 인스펙터에 색상 선택기 제공
[SerializeField] private GameObject weaponPrefab; // 프리팹 할당 가능
[SerializeField] private AnimationCurve curve; // 곡선 그래프 설정 가능
태그된 제품에 대해 수수료를 받습니다.