J'ai créé un jeu WebGL avec Unity. Certains calculs ne sont pas nécessaires pour chaque image, je les ai donc mis dans une coroutine. Mais quand le jeu est en arrière-plan, les coroutines fonctionnent plus lentement que la normale et attendent 5 à 10 secondes de plus. Par exemple, les soldats accourent vers moi et je leur tire des balles pour les tuer. Quand ils arrivent à portée, ils commencent à tirer aussi. J'ai vérifié si l'ennemi est à portée de coroutine. Quand je vais d'autres onglets sur le navigateur, certains ennemis se rapproche de la normale et certains viennent et passe l'écran de jeu. Cela rend le jeu injouable.WaitForSeconds cesse de fonctionner lorsque l'application n'est pas active ou dans un autre onglet
Existe-t-il un moyen de faire fonctionner correctement les coroutines ou dois-je mettre chaque calcul à jour pour la mettre à jour?
Exemple de code est:
private IEnumerator ActionDeciderCoroutine()
{
while (true)
{
DoAction();
yield return new WaitForSeconds(Constants.ENEMY_THINKING_TIME);
}
}
Mon conseil: n'utilisez pas de coroutines pour cela. – Draco18s
comment vérifiez-vous la portée de l'ennemi en coroutine? pourriez-vous nous donner un code pour le montrer? La fonction 'Update()' fait à peu près la même chose que la coroutine change en 'Update()' ne devrait pas être différente – armnotstrong
Avez-vous coché "exécuter en arrière-plan" sur les paramètres du lecteur? – Cenkisabi