首页 > 解决方案 > 如何异步执行 WaitUntil?

问题描述

我能在网上找到await的所有内容async都是教我如何“等待一段时间”,这不是我想要的。

我希望它等到满足某个条件。

只是乐乐

yield return new WaitUntil(()=>conditionIsMet);

Coroutine.

我想做类似的事情

await Task.WaitUntil(()=>conditionIsMet);

这样的事情可能吗?

有人可以这么好心并帮助我吗?

非常感谢您的帮助。

标签: c#unity3dasync-awaitwait

解决方案


您可以使用 UniTask 插件,它为 Unity 提供了高效的免分配异步/等待集成。

它有很多功能,而且很容易使用。
首先从这里下载它,然后将它包含在您的项目中并像这样使用它:

using Cysharp.Threading.Tasks;
using UnityEngine;

public class Test : MonoBehaviour
{
    bool _condition;
    // Start is called before the first frame update
    void Start()
    {
        _ = ProcessAsyncTask();
    }

    public async UniTask ProcessAsyncTask()
    {
        await UniTask.WaitUntil( ()=> ConditionResult());
    }

    public bool ConditionResult()
    {
        // _condition 
        return _condition;
    }
}

推荐阅读