首页 > 后端开发 > C++ > Unity 协程完成后如何返回值?

Unity 协程完成后如何返回值?

Patricia Arquette
发布: 2025-01-03 14:09:43
原创
878 人浏览过

How Can I Return Values from Unity Coroutines After They Complete?

Unity 协程:完成后返回值

在 Unity 中,协程通常用于异步任务。然而,在完成后尝试返回值时,它们会带来挑战。考虑以下场景:

问题: 脚本使用协程发起 POST 请求,但要求在请求完成时返回一个值。然而,“return”语句在协程完成之前执行,导致值不正确。

解决方案:通过 Action Delegate 回调

1。创建一个操作委托:

public delegate void RequestStatusCallback(int status);
登录后复制

2.通过回调启动请求:

在脚本的 Start() 或 Update() 方法中,启动协程并提供回调:

WWW www = new WWW("http://google.com");

StartCoroutine(WaitForRequest(www, (status) => {
    print(status.ToString());
}));
登录后复制

3.实现 WaitForSeconds 协程:

private IEnumerator WaitForRequest(WWW www, RequestStatusCallback callback) {
    int tempInt = 0;
    yield return www;
    if (string.IsNullOrEmpty(www.error)) {
        if(!string.IsNullOrEmpty(www.text)) {
            tempInt = 3;
        }
        else {
            tempInt=2;
        }
    } else {
        print(www.error);
        tempInt=1;
    }
    callback(tempInt);
}
登录后复制

4.使用回调更新值:

回调提供对状态值的访问,允许您根据请求的结果更新变量或执行其他后续操作。

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

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