首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板