Дайте вашему универсальному методу подсказку типа:
void StopAllCoroutinesInAllManager<T>(T manager) where T : GameObject
{
manager.StopAllCorountines();
}
Позвоните, передав экземпляр:
StopAllCoroutinesInManager(manager1.Instance);
Или, если ваши менеджеры не являются GameObjects, создайте интерфейс, например:
public interface IManager
{
void StopAllCoroutines();
}
И измените свой общий метод следующим образом:
void StopAllCoroutinesInAllManager(IManager manager)
{
manager.StopAllCorountines();
}
Затем в вашем классе менеджера реализуйте интерфейс и заставьте реализацию остановить все сопрограммы. Но в этом случае вы можете просто вызвать StopAllCoroutines непосредственно у менеджера.
Это должно позволить вам перебирать список менеджеров и останавливать все сопрограммы.
Передайте экземпляр менеджера вашей функции.