[Résolu][DB] Afficher le suivant - Queue<>

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
JollyStone
Messages : 33
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

[Résolu][DB] Afficher le suivant - Queue<>

Message par JollyStone » 17 Déc 2023 13:23

Bonjour,

Voici la situation :
Un objet, sélectionné aléatoirement dans un tableau de 5 éléments, est instancié dans la scène.
L’objet suivant doit être connu et affiché sous forme d’icône dans l’UI.

Comment orchestrer ce système ?
Je pensais utiliser « Queue<> » qui contiendrait l’index de l’objet à instancier et l’index du suivant (pour l’icône) comme une liste d’attente, mais ne vois pas comment mettre ça en place.
Dernière édition par JollyStone le 27 Déc 2023 23:58, édité 1 fois.

Avatar de l’utilisateur
jmhoubre
Messages : 859
Inscription : 05 Oct 2019 22:05

Re: [DB] Afficher le suivant - Queue<>

Message par jmhoubre » 17 Déc 2023 22:24

Bonjour,

je n'ai peut-être pas bien compris le souci, mais voilà une solution à ce que j'ai compris :
- un tableau de 5 éléments contenant les objets
- un second tableau de 5 éléments contenant les icones, dans le même ordre que les objets.
- un index indiquant l'objet choisi :

Code : Tout sélectionner

int choosenIndex = Random.Range(0, objectsToInstantiate)
- l'icone est obtenue (ici en 2 lignes pour une meilleure lisibilité) comme ceci :

Code : Tout sélectionner

int choosenIconIndex = (choosenIndex + 1) % objectsToInstantiate.Length;
choosenIcon = iconsToDisplay[choosenIconIndex]
% est l'opération modulo

JollyStone
Messages : 33
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)
Contact :

Re: [DB] Afficher le suivant - Queue<>

Message par JollyStone » 27 Déc 2023 23:57

Désolé, j’ai eu un problème de connexion sur le forum.

En effet, je n’ai pas été suffisamment explicite.
Le premier objet qui sera instancié dans la scène est choisi aléatoirement dans un tableau de 5 éléments.
L’objet qui sera instancié à la suite est également choisi aléatoirement dans le tableau, et ainsi de suite…
Ce que je cherche à faire est d’afficher l’icône de ce deuxième objet en même temps que le premier est instancié. Donc, il y a 1 Random.Range à effectuer au démarrage de la partie (pour l’index du premier objet), puis un autre pour les objets suivants puisque l’objet actuel est connu.
C’est là que j’imagine une file d’attente.
Les deux tableaux sont déclarés et les objets et icônes sont définis en correspondance (même index pour un objet et son icône).
Mon idée de Queue<> ne contiendrai à la fois que 2 valeurs (un objet à instancier et le suivant qui le sera à la suite).
J’espère être plus clair.

Bon, au final j’ai fait ça autrement, et ça fonctionne exactement comme je le souhaite :

Code : Tout sélectionner

void Spawn () {
        Instantiate(objectToSpanw[rand1], transform.position, Quaternion.identity);
        rand2 = Random.Range(0, 5);
        nextFruitImage.GetComponent<Image>().sprite = nextFruits[rand2];
        rand1 = rand2;
    }
Merci JM pour t’être penché sur le sujet !

Répondre

Revenir vers « Scripting »