Мне сложно это объяснить, но я постараюсь объяснить ситуацию. У меня есть два класса. IntroductionState
и State_episode1
. IntroductionState
наследуется от State_episode1
. Я создаю много State_episode1
производных классов, которые вызывают Start()
, но я хочу, чтобы каждый производный класс вызывал свой собственный MyStartCoroutine()
, поэтому при вызове базового Start()
метода он будет вызывать производный пользовательский метод. Есть ли простой способ сделать это, или я должен просто скопировать метод paste Start () для каждого производного класса?
Следующий код выдает ошибку «Никакая сопрограмма не запущена», когда я пытаюсь вызвать StartCoroutine(MyStartCoroutine())
:
public class State_episode1
{
public StateMachine_Episode1 Ep1;
public State_episode1(StateMachine_Episode1 ep1)
{
Ep1 = ep1;
}
//start begins a coroutine which first has to set _state=2 for the state machine to continue
public IEnumerator Start()
{
Ep1._state = 1;
yield return Ep1.StartCoroutine(MyStartCoroutine());
Ep1._state = 2;
}
public IEnumerator MyStartCoroutine()
{
Debug.Log("no coroutine started");
yield return new WaitForSeconds(1);
}
}
public class IntroductionState: State_episode1
{
public IntroductionState(StateMachine_Episode1 ep1) : base(ep1)
{
}
public new IEnumerator MyStartCoroutine()
{
return base.MyStartCoroutine();
}
}