ETTask的Coroutine方法用处 - ET社区 (et-framework.cn)
这篇文章是说是为了无GC版本ETTask。
但是我测试下来,同时调用同一个ETTask.Coroutine。在unity里还是有产生gc。
我是在示例项目里修改了登录界面的登录按钮进行的测试,改动如下:
public static void OnLogin(this UILoginComponent self)
{
// LoginHelper.Login(
// self.Root(),
// self.account.GetComponent<InputField>().text,
// self.password.GetComponent<InputField>().text).Coroutine();
for (int i = 0; i < 1000; i++)
{
test_task().Coroutine();
}
}
static async ETTask test_task()
{
await ETTask.CompletedTask;
}
在Unity的性能面板中,可以清楚看到确实有gc产生。
测试过程中,在ETTask.Create方法内确实只new了一个ETTask,对象池确实有起作用。
所以这个gc是哪来的?正常吗?
因为我们项目有大量使用这个Coroutine的环境,所以关注了一下。