2016-08-11 2 views
1

Update()를 재정의 할 것인지 결정해야하는 Update()라는 기본 void 함수가 있습니다. 나는 단순한 반환을 이해한다. 기본 함수에서 기본 함수 만 무시하고 재정의하지 않습니다. 그렇다면 오버라이드에 base.Update() 이상의 것을 쓰지 않고이를 수행하는 방법이 있습니까?기본 함수에서 재정의 함수 중지

protected virtual void Update() 
{ 
    if (someArgument) 
    { 
     //Some code to stop the override from being processed 
    } 
} 

protected override void Update() 
{ 
    base.Update(); //It would be great if I didn't need to write anything more than this line to stop the override function 
    //Some other code 
} 
+0

'업데이트'가 기본 메서드에서 발생하는 조건을 나타내는 'bool'을 반환하도록 다시 디자인 할 수 있습니까? – juharr

+0

아니요, Update()는 엔진에 내장 된 함수이므로 무효화해야합니다. – Kullis

+0

그런 경우 기본 방법을 실행 한 후 동일한 조건을 확인하는 것만 큼 실제로 할 수있는 것처럼 보입니다. – juharr

답변

2

재정의 된 메서드를 호출해야 할 경우 가상 메서드를 사용할 수 있습니다. 이 같은. 하지만 기본 클래스에서 재정의 된 메서드 실행을 중단 할 수는 없습니다.

class BaseClass 
{ 
    protected void Update() 
    { 
     if(someArgument) 
     { 
      this.InnerUpdate(); 
     } 
    } 

    protected virtual void InnerUpdate() 
    { 
    } 
} 

class Foo : BaseClass 
{ 
    protected override void InnerUpdate() 
    { 
     //Some other code 
    } 
} 
+0

좋은 아이디어! 이것은 내 문제를 완벽하게 해결합니다! 고마워요 :) – Kullis