Maison > développement back-end > C++ > Comment récupérer une valeur une fois une coroutine Unity terminée ?

Comment récupérer une valeur une fois une coroutine Unity terminée ?

Patricia Arquette
Libérer: 2025-01-05 00:21:38
original
263 Les gens l'ont consulté

How to Retrieve a Value After a Unity Coroutine Completes?

Valeur renvoyée uniquement après la fin de la coroutine dans Unity

Lorsque vous travaillez avec des coroutines dans Unity, il est courant de rencontrer le besoin de mettre à jour une variable et renvoie sa valeur une fois la coroutine terminée. Cependant, les fonctions n'attendent pas intrinsèquement la fin des coroutines avant de revenir.

Pour résoudre ce problème, une approche consiste à utiliser un délégué Action. Un délégué d'action est une fonction qui prend une valeur d'entrée et exécute une action sur celle-ci. Dans ce cas, le délégué Action peut être utilisé comme rappel pour recevoir la valeur mise à jour une fois la coroutine terminée.

Code mis à jour :

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);
    }    
}
Copier après la connexion

Dans le POST, au lieu de renvoyer la valeur directement, nous démarrons la coroutine et transmettons le délégué Action comme rappel. Le rappel sera exécuté une fois la coroutine terminée et définira la variable success_fail avec la valeur appropriée.

Bien que cette solution évite le problème du retour d'une fausse valeur, il est important de noter que la méthode POST renvoie toujours une valeur d'espace réservé (-1) pour éviter de bloquer l'exécution de la fonction. C'est au client de la méthode POST de vérifier cette valeur d'espace réservé et de la gérer de manière appropriée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal