인프런 커뮤니티 질문&답변

문트님의 프로필 이미지
문트

작성한 질문수

따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 01

핀 오브젝트

TPinDistance 프로퍼티 관련 질문드립니다

작성

·

183

1

안녕하세요 먼저 수준 높고 질 좋은 강의 잘 보고 있습니다!!

사소한 변수 선언 방식부터 디테일한 스크립팅 까지 C# 코딩의 정석을 보는 것 같아 정말 감사드립니다.

질문이 있는데요~

2D Pin Circle 튜토리얼 중 핀오브젝트 스크립트 작성 부분에서

TPinDistance 프로퍼티를 만들어서 핀오브젝트 사이의 간격을 1로 만드는데요

 

프로퍼티는 필드에 로직을 주거나 object initializer을 할 때 쓰기위함으로 알고 있습니다

  1. 바로 위 스크립팅에서 firstTPinPosition은 필드로 변수 설정을 하였는데 TPinDistance는 왜 프로퍼티로 선언을 하셨나요?

  2. 그리고 프로퍼티가 아닌 필드를 사용해도 되는지요?

  3. 마지막으로 프로퍼티와 필드를 이용하여 데이터를 대입할 때 두가지의 장단점이 어떤지 궁금합니다(보안이나 데이터 사용의 효울성 등)

 

C# 문법의 초급 정도를 여쭤보는거 같아 민망하지만 좀 더 배우고자 질문드립니다^^

감사합니다!!

 

 

답변 1

1

고박사님의 프로필 이미지
고박사
지식공유자

처음 제작할 때 TPinDistance를 StageController에서 변경할 수 있도록 하기 위해

(외부에서는 변경할 수 없도록) 프로퍼티로 private set, get으로 정의했었습니다.

지금 코드에서는 값을 별도로 설정하지 않기 때문에 firstTPinPosition처럼 변수로 선언해도 됩니다.

대신 외부에서도 TPinDistance를 사용하기 때문에 readonly와 같은 키워드를 붙여

값을 수정할 수 없도록 하는 것이 더 좋습니다.

 

프로퍼티의 경우 말씀하신대로 필드에 로직을 주기 위함도 있지만

Get만 허용되는 private 변수와도 같습니다.

즉, 현재 클래스 내부에서는 값을 수정할 수 있지만 외부에선 값을 열람할 수만 있는 용도로도 사용합니다.

문트님의 프로필 이미지
문트
질문자

감사합니다!!

문트님의 프로필 이미지
문트

작성한 질문수

질문하기