如果我有一些经理(单人),其中有一些协程,并且我想用一种简单的方法来停止AllAllCorountines。是否可以使用通用类型来阻止所有传入的管理器?
我无法使其工作,但是是这样吗?
void StopAllCorountinesInAllManager<T>(T manager)
{
manager.instance.StopAllCorountines();
}
StopAllCoruntinesInAllManager(manager1);
StopAllCoruntinesInAllManager(manager2);
StopAllCoruntinesInAllManager(manager3);
答案 0 :(得分:3)
为您的通用方法提供类型提示:
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。
这应该允许您遍历管理器列表并停止所有协程。
将管理器的实例传递给您的函数。