C# 상속, 함수 오버로딩 … 유한 상태 머신..


public class BaseState {
//  ////////////////////////////////////////////////     Public
public BaseState mExitState;
public string mName;

//  ////////////////////////////////////////////////     Protected  ** 상속받은 자식 클래스에서 인식 가능
protected bool mDidExecute_Entry = false;
protected uint mCounter;

//  ////////////////////////////////////////////////     Main Actions...  virtual 은 override 대상이라는 뜻..
public virtual BaseState Action() {
    if (!mDidExecute_Entry) EntryAction();
    DuringAction();
    if ( ExitCondition() ) {
      ExitAction();
      return mExitState; // Setting Next Action...
    }
    return this;
}

public virtual void DuringAction() {
    Debug.Log("BaseState :: DuringAction  \n");
}

public virtual bool ExitCondition() {  // Condition.. true or false...
    return false;
}

public virtual void EntryAction() {
  mCounter = 0;
  mDidExecute_Entry = true;
}

public virtual void ExitAction() {
  mDidExecute_Entry = false; // In case of Entering Again....
}

//  ////////////////////////////////////////////////     생성자
public BaseState() {
}
public BaseState( string pName ) {   mName = pName;  }
}

상속 받는 방법…

//  ////////////////////////////////////////////////     ////////////////////////     >>>>>  상속 받은 자식 클래스....  <<<<<
public class StateShop : BaseState {

//  ////////////////////////////////////////////////     Creation

public StateShop() : base () {}

public StateShop( string pName ) : base ( pName) {  }  // 이런 식으로 상위 생성자 호출</pre>
&nbsp;

public override void DuringAction ()  // override : 상위 함수를 부르지만, new 는 따로 논다..
{
    base.DuringAction ();
}