Maison > développement back-end > C++ > Comment puis-je renvoyer les valeurs des coroutines Unity une fois leur exécution terminée ?

Comment puis-je renvoyer les valeurs des coroutines Unity une fois leur exécution terminée ?

Patricia Arquette
Libérer: 2025-01-03 14:09:43
original
786 Les gens l'ont consulté

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

Coroutines Unity : renvoyer des valeurs une fois terminées

Dans Unity, les coroutines sont couramment utilisées pour les tâches asynchrones. Cependant, ils posent des problèmes lorsqu'ils tentent de renvoyer des valeurs une fois terminés. Considérez le scénario suivant :

Problème : Un script lance une requête POST à ​​l'aide d'une coroutine, mais nécessite le retour d'une valeur lorsque la requête est terminée. Cependant, l'instruction "return" s'exécute avant la fin de la coroutine, ce qui entraîne des valeurs incorrectes.

Solution : rappel via le délégué d'action

1. Créer un délégué à l'action :

public delegate void RequestStatusCallback(int status);
Copier après la connexion

2. Lancez la requête avec un rappel :

Dans la méthode Start() ou Update() du script, lancez la coroutine et fournissez le rappel :

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

StartCoroutine(WaitForRequest(www, (status) => {
    print(status.ToString());
}));
Copier après la connexion

3. Implémentez la coroutine 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);
}
Copier après la connexion

4. Utilisez le rappel pour mettre à jour les valeurs :

Le rappel donne accès à la valeur d'état, vous permettant de mettre à jour les variables ou d'effectuer d'autres actions ultérieures en fonction du résultat de la demande.

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