bool이 실제로 값을 변경했을 때 이벤트를 발생 시키려고합니다. 커스텀 세트를 사용하고 메소드를 얻는 방법은 이것을하는 방법 중 하나입니다. 하지만 이벤트가 null
아니 핸들러가없는 경우 NullReferenceException: Object reference not set to an instance of an object
bool setter의 화재 이벤트
Public class Ball : MonoBehaviour {
public delegate void ballEvents();
public static event ballEvents OnBallStop;
private bool _previousValue = true;
private bool _ballStopped = true;
public bool BallHasStopped {
get {return _ballStopped;}
set {
_ballStopped = value;
if (_ballStopped != _previousValue){
_previousValue = _ballStopped;
if(value == true) {
print("stop");
OnBallStop(); // this causes the error
} else {
print("moving");
}
}
}
}
'_previousValue'를 유지할 필요가 없습니다.'_ballStopped'에 대한 할당을하기 전에 이전 값인'_ballStopped'과'value'의 새로운 값을가집니다. 'if (_ballStopped! = value) {_ballStopped = value; 무엇이든해라(); }'setter에서. – Luaan