Я пытаюсь понять, как я могу объединить StartCoroutine() с methodInfo.Invoke() в Unity.Сочетание Сопрограммы и отражения в единстве
Во-первых, очень простой, явный вызовы код, который я хотел бы избежать:
if (ACTION_MOVE == action) {
StartCoroutine(robotBehaviour.move());
}
else if (ACTION_ROTATE == action) {
StartCoroutine(robotBehaviour.rotate());
}
...
Вызываемые методы выглядеть следующим образом:
public override IEnumerator move()
{
for (int i = 0; i < ITERS; i++) {
// Do something
yield return new WaitForSeconds(N);
}
}
Так что с немного поразмыслив, Мне удалось сделать вызов динамически:
RobotBehaviour robotBehaviour = getRobotBehaviour()
Type type = robotBehaviour.GetType();
MethodInfo methodInfo = type.GetMethod((string)sentences[lineNo]);
result = methodInfo.Invoke(robotBehaviour, null);
Однако, сейчас я не могу управлять, чтобы вызвать robotBehaviour с StartCoroutine().
Любые идеи?