Unity3D的c#中基于任务的序列管理器
本文关键字:任务 管理器 于任务 Unity3D | 更新日期: 2023-09-27 18:29:13
注意:这个问题应该写在https://gamedev.stackexchange.com/因为它指的是Unity3D开发(与c#Unity Framework无关)
我需要一个简单的(单线程)库,它允许运行可以持续一段时间的异步任务序列(通常使用yield)。
在我以前使用的动作脚本中http://www.dpdk.nl/opensource/running-tasks-in-order-with-a-task-based-sequence-manager这是一个伟大的任务测序仪。
c#中有类似的东西吗?
注意:虽然system.threading.task类最初看起来是一个不错的解决方案,但Unity 3.5不支持.net framework 4。我可以使用的版本是3.5。有其他选择吗?
您需要了解任务并行库。这个库可以用于多线程也可以不用于多线程,所以它相当健壮。事实上,这就是.NET下一个版本的async/await
关键字的构建基础。
var task = Task.Factory.StartNew<String>(
()=>
{
//Do some long running task
return "Here are my results from part 1";
})
.ContinueWith<Int32>(
(previousTask)=>
{
var previousResult = previousTask.Result;
//Do some other long running task using the previous result
return 1;
});
你可以用TPL做很多事情。这只是一个总体想法。
此外,迭代器还有yield关键字,但这不一定是异步的。
最终我创建了自己的系统,我在这里写了博客:http://www.sebaslab.com/svelto-taskrunner-run-serial-and-parallel-asynchronous-tasks-in-unity3d/