[C#, 유니티] 09. 프로퍼티 (set과 get)

2022. 7. 11. 17:40코딩 2막 <C#개념편>

728x90

저번 주말, 나는 고향에 다녀왔다

갈때마다 느끼지만 정겨운 그 곳

부모님을 뵙고 좋은 시간을 보냈습니다

한 주간 도시에 치여 살던 나는이번 기회에 힐링을 제대로 하고 다시 일상으로 복귀했다


오늘은 제트카라 분석을 마무리 지으려 한다

오늘 배울 개념은 바로

프로퍼티

제트카라에서 다음과 같이

score를 쓸 때

set이란 놈과 get이란 놈을 썼다

어디서 많이 본 것 같지 않나요?

그렇습니다

C++를 배웠을때 나왔던 게터와 세터의 형태와 비슷합니다

그럼 프로퍼티가 무엇인지 자세히 뜯어보겠습니다


프로퍼티를 이해하기위해 다음과 같이

플레이어 객체와 충돌하면 체력이 깎이는 스크립트를 만들어 보았습니다

TextMeshProUGUI는 hp를 텍스트로 변환하여

화면상에 플레이어의 hp가 뜨도록 해주었고

Start함수에서 초기 hp의 값을 100으로 정해주었다

그리고 collider를 가진 다른 객체(bullet이라고 지정함)와 충돌 시에

hp가 70이 깎이고 hp가 0보다 작거나 같아질때 플레이어는 파괴되도록 하였는데

 

이때 hp가 외부에서 클래스 변수의 값을 할당할 때,

  • 변수의 값이 항상 올바르도록 강제하여, 할당된 값을 확실히 하길 바랄 경우나
  • 변수의 값이 변경되었을 때를 감지하여, 이 값에 영향을 받는 다른 함수나 동작을 실행하길 원할 경우

프로퍼티(Property)가 이 경우들을 해결해준다!!

(*참고 프로퍼티는 유니티의 인스펙터에서는 보이지 않기때문에 보이게 하려면 추가적인 조치가 필요함)

 

프로퍼티는 변수처럼 선언되지만, 함수처럼 중괄호로 묶이는 것이 특징이다

get : 외부에서 해당 프로퍼티에 접근해 읽어야 하는 상황에서 호출

set : 외부에서 해당 프로퍼티에 접근해 값을 할당하는 상황에서 호출

 

위와 같이 get함수는 hp를 리턴하고, set함수는 조건부로 값을 할당받는 코드를 썼다.

 

또한 변수의 값이 변경되었을 경우 변경되었다는 것을 알려주는 특정 이벤트를 발생시키기를 원한다면

이때도 프로퍼티를 통해 알려줄수도 있다

 

 

출력 결과

공감해주셔서 감사합니다

728x90