Unity 학습

유니티 public vs SerializeField 차이점 정리

리저브콜드브루 2025. 6. 20. 21:28
728x90
반응형

둘 다 에디터의 인스펙터에 보이기 때문에 비슷한 듯 다른 두 가지에 대한 차이점을 정리하려고 한다.

 

public이란?

public은 클래스 외부에서도 접근 가능한 멤버를 정의할 때 사용하는 접근 제한자

public int health = 100;
  • 인스펙터(Inspector)에서 값이 노출됨
  • 외부 클래스에서도 object.health처럼 직접 접근 가능
  • 매우 직관적이지만, 캡슐화(정보 은닉)가 깨질 수 있음

 

SerializeField는 무엇인가?

SerializeField는 private 변수임에도 인스펙터에서 보여지도록 해주는 Unity의 속성(Attribute)

[SerializeField]
private int speed = 5;
  • 인스펙터에서는 public처럼 값이 보이고 수정 가능
  • 외부 스크립트에서는 접근 불가능 (object.speed로는 접근 안됨)
  • 코드에서는 캡슐화를 유지하고, 인스펙터 편의성도 확보 가능

 

예시 비교

public float moveSpeed = 5f;              // 외부 접근 O, 인스펙터 노출 O
[SerializeField] private float jumpPower = 10f; // 외부 접근 X, 인스펙터 노출 O
private float gravity = 9.8f;             // 외부 접근 X, 인스펙터 노출 X

 

 

728x90
반응형