프로퍼티는 선언한 변수의 Getter
와 Setter
로써 외부에서 접근할 수 있도록 하는 동시에 캡슐화를 지원한다.
다음과 같이 프로퍼티 내에 함수를 추가할 수도 있다.
class PropertyTest{
private int score; //field
public int Scoore // property
{
get { return score; } //get method
set
{
if( 0 < value && value <= 100)
{
this.score = value;
}
} //set method
}
}
이를 바탕으로 프로퍼티 내에 이벤트를 추가하여, 프로퍼티를 통해 변수를 바꾸면, 이벤트 또한 발생시키게 할 수 있다.
[SerializeField] private UnityEvent<int> onCoinChanged;
[SerializeField] private UnityEvent<int> onDustChanged;
public int Coin
{
set => onCoinChanged?.Invoke(value);
get => _collection[_FindDataIndex(CollectionCode.Coin)].collectionCount;
}
public int Dust
{
set => onDustChanged?.Invoke(value);
get => _collection[_FindDataIndex(CollectionCode.Dust)].collectionCount;
}
이는 변수 값 변화에 따른 행동을 실시간으로 반영할 때 Update
구문 대신 더 효율적으로 사용할 수 있다.