异步编程,在Unity中使用Coroutine 与TAP

[English Version] 背景   几个星期前,Unity 发布了新版本2017.1。在这个版本中,社区翘首以盼的TAP 与 async await支持终于随着.net 4.6兼容以beta feature的方式与用户正式见面了。   这并不是偶然,随着微软HoloLens 与Windows MR平台战略布局逐渐成熟,大量Unity开发者开始研究如何与UWP API进行交互以获得需要的底层支持。而作为逻辑脚本引擎,过去的Unity(5-) 只提供了有限的.net 2.0-4.x, c# 4以下的兼容,在访问全面异步化的 UWP API时仍需要进行大量的适配工作。如果不熟悉TAP和UWP底层的实现,开发者很难正确的进行封装,转化为Unity 已有的 Update Check/Coroutine 模式,开发过程事倍功半。从另一个方向,一些有经验的UWP开发者也对XR 这片新大陆跃跃欲试,但苦于async await /TAP 没有实装,难以理解Unity3D的Corotine异步模型而走不少弯路(我就是其中挣扎过的一员)。   现在,随着尝试抹平一切平台差异的 .net standard 类库的不断成熟,加上Unity与微软,以及社区极客们的不断努力,我们终于能够在Unity 同时使用 Coroutine 和TAP,让Unity开发与UWP开发两支队伍胜利会师,真是做梦也会笑醒。   在欢庆的同时,我们还是要意识到,这带来了新的挑战。 我们更新功能并不是要所有人推倒一切重新开始,无论你是有Unity经验,已经有项目需要porting到 UWP平台的游戏大师,还是想将你的2D Xaml应用升级到 Windows MR 平台的Unity新手,或者你是完全的新新人类,想要通过大量的Unity与UWP的例子找到属于自己的App技术可行性,你都会遇到这样的问题:怎么样正确的让 Unity 的 Coroutine 和 .Net 的 TAP 正确的交互。  …