이 시리즈는 유니티에서 제공하는 튜토리얼을 정리해서 올린 것입니다.

-----------------------------------------------------------------------------------

프로퍼티


a라는 클래스의 외부에서 a클래스의 필드에 접근하는 일은 빈번하다

이를 위한 간단한 방법은 필드를 public으로 선언하는 것이다


이것만으로 충분하지만

더 나은 방법도 존재한다


바로 프로퍼티를 이용하는 것이다


-----------------------------------------------------------------------------------


프로퍼티는 캡슐화를 통해 필드를 더욱 유연하게 사용할 수 있는 기능이다


프로퍼티를 사용하기 위한 문법은 다음과 같다

접근지정자 - 프로퍼티의 자료형 - 프로퍼티의 이름 - {접근자}



24b0d121e09c28a8699fe8b115ef046c61f72e4d


접근자는 위에 보이는 get과 set을 의미한다

get과 set은 프로퍼티가 다루는 백킹필드 값을 다루기 위해 사용된다.

백킹필드란 간단히 설명하면 프로퍼티가 캡슐화하고있는 실제 멤버 변수를 의미한다. 여기서는 _myProperty가 백킹필드이다.


get은 이 백킹필드 값을 읽어올 때(get할때) 어떤 기능을 할지 정하는 접근자이다. MyProperty라는 프로퍼티 값을 가져오려고 한다면 _myProperty라는 백킹 필드(실제 멤버 변수)
여기서는 _myProperty를 return한다.


set은 이 백킹필드 값을 수정할 때(set할때) 어떤 기능을 할지 정하는 접근자이다. value 키워드를 사용하여 백킹필드에 할당한다.


그렇다면 프로퍼티는 어떤 이점이 있길래 쓰이는 걸까?


-----------------------------------------------------------------------------------


첫 번째 이점으로는 get과 set을 생략하여, 값을 읽기전용 혹은 쓰기전용으로 만들어줄수있다는 것이다.


위 코드에서 의도적으로 set을 생략하면 우리는 _myProperty의 값을 읽어올수밖에없는 읽기전용으로 만들어줄수있다.

만약 _myProperty가 외부에서 절대 변하면 안되는 값일 경우 이런 기능이 유용할 것이다.


-----------------------------------------------------------------------------------


두 번째 이점으로는 접근자를 마치 메서드처럼 사용할 수 있다는 것이다


예를들어 _myProperty가 가질 수 있는 값의 범위가 0부터 100이라고 한다면



24b0d121e09c28a8699fe8b115ef046f5d4d9c98


set 접근자 부분에 이런 clamp를 이용해 값을 조절해줄수있을 것이다.

또한 값이 변경되었을 때를 추적하기 위해 debug.log를 출력해줄수도있다


-----------------------------------------------------------------------------------


지금까지 우리는 get과 set안에있는 내용을 직접적으로 작성해주었다

이를 수동 구현 프로퍼티라고 한다

이와 반대되는 방법을 자동구현 프로퍼티라고 한다.




24b0d121e09c28a8699fe8b115ef046b6b6f95


get, set 안에 있는 내용을 작성할 필요도 없다.

중괄호를 열 필요조차없이 뒤에 세미콜론만 붙이면 된다.

이런 경우 백킹필드는 컴파일러가 알아서 생성한다고 한다.


-----------------------------------------------------------------------------------


저도 초보라 내용이 미숙할 수 있습니다.

틀린 내용이나 부적절한 예시가 있다면 댓글로 알려주세요.