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

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

Patricia Arquette
Patricia Arquette原创
2025-01-03 14:09:43837浏览

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