2015-01-16 3 views
0

bool이 실제로 값을 변경했을 때 이벤트를 발생 시키려고합니다. 커스텀 세트를 사용하고 메소드를 얻는 방법은 이것을하는 방법 중 하나입니다. 하지만 이벤트가 null 아니 핸들러가없는 경우 NullReferenceException: Object reference not set to an instance of an objectbool 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"); 
      } 
     }   
    } 
} 
+2

'_previousValue'를 유지할 필요가 없습니다.'_ballStopped'에 대한 할당을하기 전에 이전 값인'_ballStopped'과'value'의 새로운 값을가집니다. 'if (_ballStopped! = value) {_ballStopped = value; 무엇이든해라(); }'setter에서. – Luaan

답변

3

을 받고 유지하고, 그래서 호출 할 수 없습니다. null을 확인하고 핸들러가 없으면 호출하지 않을 수 있습니다.

+1

또는 그는'이벤트 '를 가지고 그들을 제기 할 수 있습니다. 이벤트에서는 확인이 필요하지 않습니다. –

+1

@NikhilAgrawal 예, 기술적으로 엄청난 대안이 있습니다. 이것은 단지 하나입니다. – Servy