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中文网其他相关文章!