首页 > 后端开发 > C++ > 如何在 Unity 协程完成后检索值?

如何在 Unity 协程完成后检索值?

Patricia Arquette
发布: 2025-01-05 00:21:38
原创
263 人浏览过

How to Retrieve a Value After a Unity Coroutine Completes?

仅在 Unity 中协程完成后返回值

在 Unity 中使用协程时,经常会遇到需要更新变量和协程完成后返回其值。但是,函数本质上不会等待协程完成才返回。

要解决此问题,一种方法是使用 Action 委托。操作委托是一个接受输入值并对其执行操作的函数。在这种情况下,Action 委托可以用作回调,以在协程完成后接收更新的值。

更新的代码:

public int POST(string username, string passw)
{
    WWWForm form = new WWWForm();
    form.AddField("usr", username);
    form.AddField("pass", passw);

    WWW www = new WWW(url, form);
    
    // Start the coroutine and pass in the callback
    StartCoroutine(WaitForRequest(www, (status) => {
        success_fail = status;
    }));

    // Function does not wait for coroutine to finish, so return a placeholder value
    return -1;
}

private IEnumerator WaitForRequest(WWW www, Action<int> callback)
{
    yield return www;
    if (www.error == null)
    {
        if(www.text.Contains("user exists"))
        {
            callback(2);
        }
        else
        {
            callback(1);
        }
    } else {
        callback(0);
    }    
}
登录后复制

在POST 方法中,我们不是直接返回值,而是启动协程并传入 Action 委托作为回调。协程完成后就会执行回调,并将 success_fail 变量设置为适当的值。

虽然此解决方案避免了返回 false 值的问题,但需要注意的是,POST 方法仍然返回占位符值 (-1),以避免阻止函数的执行。由 POST 方法的客户端检查此占位符值并进行适当处理。

以上是如何在 Unity 协程完成后检索值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板