[RESOLU][DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
[RESOLU][DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Salut, j'ai une question un peu bête mais j'aimerais faire une boucle, un peu comme une fonction Update de unity qui s'exécute quand mon float arrive a 0 ou négatif 0 pour exécuter mon code, mais j'aimerais ne pas le mettre dans l'update, le mieux est qu'il vérifie si un enum est égal a une certaines valeur, et le int en dessous de 0, j'ai essayé avec un switch et des if a l'intérieur mais sa me fait une boucle infini car il est exécuté trop rapidement avant le changement de valeur de l'enum
Dernière édition par Farstone le 04 Oct 2017 07:55, édité 2 fois.
- boubouk50
- ModoGenereux
- Messages : 6220
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un int
Bonjour,
Merci de prendre l'habitude de donner le code en même temps.
Merci de prendre l'habitude de donner le code en même temps.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un int
Salut!
Ce que tu demandes est un peu vague. Je ne comprends pas tout. Est-ce que tu veux une boucle qui surveille ton enum en dehors de l'update?
Si tu veux une boucle désynchronisée de l'update, il faut utiliser une coroutine dans laquelle tu peux régler la vitesse d'exécution.
Par contre, si tu veux une "surveillance" d'un paramètre pour exécuter un code, il faut utiliser les delegate.
Le mieux serait peut-être de nous donner un morceau de ton code pour qu'on puisse se rendre compte de ton besoin
Ce que tu demandes est un peu vague. Je ne comprends pas tout. Est-ce que tu veux une boucle qui surveille ton enum en dehors de l'update?
Si tu veux une boucle désynchronisée de l'update, il faut utiliser une coroutine dans laquelle tu peux régler la vitesse d'exécution.
Par contre, si tu veux une "surveillance" d'un paramètre pour exécuter un code, il faut utiliser les delegate.
Le mieux serait peut-être de nous donner un morceau de ton code pour qu'on puisse se rendre compte de ton besoin
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un int
Excusez moi pour le manque de précision j'avais peu de temps, ma demande n'est pas vitale en soit, je peux très bien me servir de l'Update mais je trouve que c'est un gâchis de performance de vérifier chaque frame si la valeur est vraie pour exécuter un if alors que j'ai déjà une méthode pour gérer ça, en faite le but c'est simplement d'ajouter 3 petit points a intervalle de 1 secondes a la fin d'un text component de l'UI est reset la phrase arrivé a 3.
En gros sa marche très bien dans l'update en fessant ceci :
Je décrémente simplement pointAddTime par un deltaTime d'une valeur de 1, une fois qu'il arrive a 0 ou négatif 0 et que pointCounter n'est pas égal a 3 j’exécute le if, sinon je remet pointCounter a 0 est j'affiche le text de base.
Sachant que
est une méthode qui prend un string en propriétés, elle appartient a une classe avec un patern singleton qui gère la langue du text et renvoie un string traduit dans la langue choisis donc en gros ConnectionInfoText est égal à "Connexion" mais ça na pas vraiment d'importance dans l'exemple.
Rien de sorcier jusque là, mais j'aimerais éviter de le mettre dans l'update. Le problème c'est que je ne trouve pas le moyen de faire un genre de switch qui s’exécute de la même manière est en boucle tant que que 2 enum son identique.
Au final j'aimerais simplement reproduire ça sans me servir de l'update.
En gros sa marche très bien dans l'update en fessant ceci :
Code : Tout sélectionner
void Update () {
if(isBoxShowed)
{
pointAddTime -= 1 * Time.deltaTime;
if (pointAddTime <= 0 && pointCounter != 3)
{
ConnectionInfoText.text += ".";
pointCounter += 1;
pointAddTime = 1;
}
if (pointAddTime <= 0 && pointCounter >= 3)
{
ConnectionInfoText.text = LocalizationManager.Instance.GetText("BOX_INFO_CONN");
pointCounter = 0;
pointAddTime = 1;
}
}
}
Sachant que
Code : Tout sélectionner
ConnectionInfoText.text = LocalizationManager.Instance.GetText("BOX_INFO_CONN")
Rien de sorcier jusque là, mais j'aimerais éviter de le mettre dans l'update. Le problème c'est que je ne trouve pas le moyen de faire un genre de switch qui s’exécute de la même manière est en boucle tant que que 2 enum son identique.
Au final j'aimerais simplement reproduire ça sans me servir de l'update.
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Ok voici ce que je ferais :
ce qui demarrera la coroutine suivante :
J'ai enlevé pointAddTime qui ne sert qu'à contrôler la boucle je pense.
Code : Tout sélectionner
void Start()
{
StartCoroutine ("boucleCoroutine");
}
Code : Tout sélectionner
IEnumerator boucleCoroutine()
{
if (isBoxShowed)
{
do{
if ( pointCounter != 3)
{
ConnectionInfoText.text += ".";
pointCounter += 1;
}
if ( pointCounter >= 3)
{
ConnectionInfoText.text = LocalizationManager.Instance.GetText("BOX_INFO_CONN");
pointCounter = 0;
}
}
yield return new WaitForSeconds(1.0f); //le temps de pause entre chaque boucle
}while (true); // la boucle s'exécutera tout le temps
}
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Le problème c'est que tant que l'enum est identique ça va faire une boucle infini est faire planter le programme, j'ai bien sur pensé a faire un while du style
while (enum state == enum.value)
est justement ça fait planter l'éditeur
while (enum state == enum.value)
est justement ça fait planter l'éditeur
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Une coroutine peut être infinie. je viens d'essayer
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Merci à toi j'essaierais ça, je t'avoue que je ne suis pas familier avec les coroutines, je me ferrais quelques sujet la dessus pour mieux comprendre leur fonctionnement/but.
-
- Messages : 45
- Inscription : 18 Sep 2017 17:44
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
La coroutine permet d'exécuter des codes de façon désynchronisée de l'update. On peut y faire des boucles, des pauses, etc... Sans avoir de répercussion sur les performances de la boucle générale (update, fixedupdate,...) Le tuto unity est bien fait à ce sujet.
- boubouk50
- ModoGenereux
- Messages : 6220
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Faire une boucle soit même qui s'exécute a la valeur negative d'un float
Pour lancer une fonction à intervalle régulier, tu as la fonction InvokeRepeating ()
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation