get set 프로퍼티에 대해 알아보자.
프로퍼티는 변수처럼 보이지만 내부적으로는 함수처럼 동작하는 문법이다.
필드는 실제 데이터를 저장
public int hp;
프로퍼티 (get/set을 이용한 값 관리)
private int _hp; public int HP; { get { return _hp; } set { _hp = value; } //value는 속성에 할당해주는 값. }
- _hp는 진짜 값이 들어가는 필드
- HP는 외부에서 접근하는 창구 느낌이다
public Gold { get { return _gold; } }이런식으로 set 없이 사용하여 Unity에서 상태 읽기에 자주 사용된다.
- 내부 필드를 만들기 귀찮거나, 당장엔 로직이 필요 없는 상황에서 쓰인다.
public int HP { get; set; }
- 이렇게 작성했을 때, 컴파일러에서 자동으로
private int _hp; public int HP { get { return _hp; } set { _hp = value; } }
- 이런 필드를 내부적으로 생성해준다. 가장 많이 사용하는 형태이다.
- 프로퍼티는 값 저장만이 아니라 중간에 코드를 삽입할 수 있는 것이 큰 장점이다.
private int _hp; public int HP { get { return _hp; } set { _hp = Mathf.Clamp(value, 0, 100); } }
- 이처럼 조건을 걸거나, 확장성이 매우 용이하다.
- Unity에서 public 필드는 기본적으로 인스펙터에 노출된다.
- 하지만 프로퍼티는 기본적으로 노출이 되지 않는다.
- 데이터를 조절할 필요가 있으면 필드.
캡슐화와 제어가 필요하면 프로퍼티로 많이 나누어 사용한다.
OOP원칙 캡슐화, 유지보수, 코드 안정성 을 고려했을 때, 가장 효율적인 선택이다.
자동 프로퍼티는 당장 로직은 필요 없지만 미래에 추가될 수도 있는 값을 위한 가장 깔끔한 기본형이다.