我正在尝试在 C# 和 Unity 中使用 、 和 s 来async解决await问题。Task这是场景:
- 用户单击按钮。
- 它的脚本(例如
MyScene.ButtonOnClick():)生成一个(自定义)对话框并输入等待用户响应的模式。 - 然后用户
enum DBResponse { Yes, No, Cancel }通过单击三个按钮之一从三个选项(例如:)中进行选择。 - 结果返回到原始按钮单击后面的脚本。
- 原始脚本使用响应继续执行代码。
似乎async, await, and Task<TResult>(即“基于任务的异步模式”或 TAP)将是这个问题的现代答案,而不是使用事件和侦听器或 Unity 的协程,但我能找到的唯一例子与计算昂贵的例程或读/写有关,而不是与用户输入有关。
我在这里尝试使用错误的工具吗?如果没有,那么我可以在三个按钮的 OnClick() 方法中添加什么来让用户对原始脚本的响应?我正在努力标记一个正在进行中的异步,即有一个更新并且它已经完全可以继续进行(这听起来很像监听一个事件,这对我来说也是一个弱点)。
在早期,我会使用静态事件管理器和一系列侦听器和调用器作为触发器。最近,我使用了一个协程,但因为它没有返回值,所以我将响应存储为一个公共静态值,这似乎非常错误。
这似乎是一个如此简单而根本的问题,但我还没有能够破解它。我有一种感觉,如果这是Task正确的工具,那么我缺少 ' 方法和属性的一些基本用法。
指向额外阅读的指针将非常有帮助!