Как видите, StartCoroutine
работает как с string
(имя метода), так и с IEnumerator
.
Но независимо от того, какой из два варианта (я обычно всегда предпочитаю IEnumerator
), которые вы используете:
Каждый метод Coroutine должен иметь тип IEnumerator
!
Checkout Сопрограммы , где это фактически демонстрируется с помощью string
.
Отличается от Invoke
, для которого метод должен быть void
и не иметь параметров.
Общее примечание
Для лучшей производительности и возможность обслуживания, используйте вместо них Coroutines.
Допустим, у вас есть, например,
public class StateManager : MonoBehaviour
{
public IEnumerator ActivateWaitStateAfterDelay()
{
yield return new WaitForSeconds(3f);
Debug.Log("Hello there!", this);
}
}
, вы можете сделать и
public class SomeOtherClass
{
public StateManager stateManager;
public void DoIt()
{
stateManager.StartCoroutine(stateManager.ActivateWaitStateAfterDelay());
}
}
или
public class SomeOtherClass
{
public StateManager stateManager;
public void DoIt()
{
stateManager.StartCoroutine(nameof(StateManager.ActivateWaitStateAfterDelay));
}
}