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。有其他选择吗?

Unity3D的c#中基于任务的序列管理器

您需要了解任务并行库。这个库可以用于多线程也可以不用于多线程,所以它相当健壮。事实上,这就是.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/