Comment exécuter une tâche asynchrone dans Unity3D?
N'importe quel corps connaissez un moyen de le faire async tâche dans l'unité. Je suis à la recherche d'un moment, mais ne pouvais pas trouver n'importe quel moyen de le faire, pourtant.
Je suis en train de faire un jeu de coloriage, il y a une inondation algorithme de remplissage qui prend un certain temps à traiter.
Merci pour toute aide.
OriginalL'auteur makkuzu | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser des threads dans l'Unité pour l'exécution de votre async taks. Habituellement, vous exécutez détaché fils (à partir de l'Unité de l'INTERFACE utilisateur) à faire long processus d'exécution et de contrôler les résultats (vous ne pouvez pas interagir avec l'Unité de la thread de travail).
L'approche la plus répandue consiste à utiliser une classe qui représente un filetage de travail qui sera initialisé par l'Unité thread principal. Puis vous démarrer un thread de travail sur une fonction de la classe et le laisser faire son travail (Coroutines exécuter sur l'Unité thread principal ne sont donc pas de vrais fils. Meilleur article sur les Coroutines est ici)
Voici un exemple de l'approche décrite ci-dessus (voir accepté de répondre):
http://answers.unity3d.com/questions/357033/unity3d-and-c-coroutines-vs-threading.html
Vous pouvez également essayer un UnityGems package qui permet d'obtenir le même effet, mais offrant plus de commodité (tels que le soutien de fermeture):
http://unitygems.com/threads/
HTH.
Meilleur!
OriginalL'auteur German
Vous pouvez simplement utiliser C# threads pour faire de votre async travail. Vous pouvez en savoir plus à propos des threads sur ici.
Vous devez noter que vous ne pouvez pas interagir avec l'Unité à partir du fil de travail, donc une fois le travail terminé, vous devez utiliser les résultats à partir de l'intérieur de l'Unité de filetage. Vous pouvez le faire simplement en définissant un indicateur sur la MonoBehaviour qui permettra de faire la mise à jour et vérifier le drapeau dans la méthode de mise à Jour. Quelque chose de semblable à ceci:
OriginalL'auteur Radu Diță
Vous pouvez maintenant utiliser directement async attendent avec une Tâche dans l'Unité 2017. Plus de détails ici
OriginalL'auteur Steve Vermeulen
utiliser une CoRoutine vous pouvez définir, et d'exécuter une petite partie de chaque image de la tranche de temps de votre code.
co routines
Co Routine n'est pas aync.
Downvoted pour la fourniture d'un lien sans rapport. Un tutoriel sur l'utilisation de @Dawson peut être trouvé à l'Unité du site.
OriginalL'auteur CthulhuJon
Je sais que cette question est vieux, mais il est encore tout à fait pertinente. J'ai codé mon propre solution dans mon framework open source. Si vous êtes intéressé, vous pouvez trouver toutes les infos ici:
http://www.sebaslab.com/svelto-taskrunner-run-serial-and-parallel-asynchronous-tasks-in-unity3d/
Il supporte le multithreading.
OriginalL'auteur sebas