Salut.
Tu devrais regarder du coté des Array, qui sont un ensemble d'objet d'un même type.
par exemple si declare:
Code : Tout sélectionner
public class click : MonoBehaviour {
public Button[] MyButton; // déclaration d'un array de bouton
Dans l'inspector, tu devrais voir ta donnée MyButton. En déroulant, tu vera que Size est a zero. entre le nombre de bouton que tu veux ( ici 5) et tu aura une liste de 5 élément ( de 0 a 4). drag drop tes button dans l'orde.
ensuite tu peux acceder a chaque button dans ton script avec
ensuite tu peux assigner dans ta void start :
Code : Tout sélectionner
void Start()
{
Button[0].gameObject.SetActive(true);
Button[1].gameObject.SetActive(false);
Button[2].gameObject.SetActive(false);
Button[3].gameObject.SetActive(false);
Button[4].gameObject.SetActive(false); // le premier élément ayant l'index '0', pour 5 élément le dernier sera le '4'
// pour tout les bouton tu va pouvoir ajouter la meme fonction:
Button[0].onClick.AddListener(onClick);
Button[1].onClick.AddListener(onClick);
Button[2].onClick.AddListener(onClick);
Button[3].onClick.AddListener(onClick);
Button[4].onClick.AddListener(onClick);
}
ensuite, il faut que tu puisse garder en mémoire le bouton " actif".
par exemple avec un
qui dira au debut, c'est le premier button d'actif. du coup dans ta voir OnClick, tu va pouvoir dire :
-je passe le ActiveButton en false => decsactive le bouton en cours
-et le button suivant ( ActiveButton + 1) a true. => active le prochain bouton de la liste.
- il faudra aussi mettre un condition pour le dernier bouton, vu qu'il n'y en aura pas apres.
ta void OnClick pourra ressembler a ça :
Code : Tout sélectionner
void onClick()
{
Button[ActiveButton].gameObject.SetActive(false); // desactive le bouton en cours
if( (ActiveButton + 1) < Mybutton.Length){ // si on ne sors pas de la liste.
Button[ActiveButton+1].gameObject.SetActive(true); // on active le prochain bouton de la liste
ActiveButton += 1; // on ajoute 1 a activeButton
}
}
Du coup le script comple serait :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Click : MonoBehaviour {
public Button[] MyButton;
int ActiveButton = 0;
// Use this for initialization
void Start()
{
MyButton[0].gameObject.SetActive(true);
MyButton[1].gameObject.SetActive(false);
MyButton[2].gameObject.SetActive(false);
MyButton[3].gameObject.SetActive(false);
MyButton[4].gameObject.SetActive(false); // le premier élément ayant l'index '0', pour 5 élément le dernier sera le '4'
// pour tout les bouton tu va pouvoir ajouter la meme fonction:
MyButton[0].onClick.AddListener(onClick);
MyButton[1].onClick.AddListener(onClick);
MyButton[2].onClick.AddListener(onClick);
MyButton[3].onClick.AddListener(onClick);
MyButton[4].onClick.AddListener(onClick);
}
void onClick()
{
MyButton[ActiveButton].gameObject.SetActive(false); // desactive le bouton en cours
if( (ActiveButton + 1) < MyButton.Length){ // si on ne sors pas de la liste.
MyButton[ActiveButton+1].gameObject.SetActive(true); // on active le prochain bouton de la liste
ActiveButton += 1; // on ajoute 1 a activeButton
}
}
}
Mais du coup ça ne marchera que si tu as 5 bouton et uniquement 5 dans ton inspector.
pour pouvoir marcher avec autant qu'il y en a il faut rajouter deux trois trucs :
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class click : MonoBehaviour {
public Button[] MyButton; // une liste de tout tes boutons
int ActiveButton = 0; // le bouton par lequel tu commence ( 0 est toujours le premier élément d'une liste ou array)
// Use this for initialization
void Start()
{
if( MyButton.Length > 0){ // dabord une condition, pour n'affecter tes bouton que s'il y en a dans l'inspector.
for ( int i = 0 ; i < MyButton.Length ; i++){ // 'i' sera augmenter de 1 en 1, en partant de 0, jusqu'au dernier bouton de la liste.
MyButton[i].gameObject.SetActive(false); // ça mettra les bouton en inactif, pour toute les valeurs de 'i' ( de de l'élément 0 au dernier)
MyButton[i].onClick.AddListener(onClick); // on ajoute OnClick a tout les bouton
}
MyButton[ActiveButton].gameObject.SetActive(true); // seul le bouton a l'emplacement ActiveButton ( ici 0, donc le premier) passe actif
}
}
void onClick()
{
MyButton[ActiveButton].gameObject.SetActive(false); // desactive le bouton en cours
if( (ActiveButton + 1) < MyButton.Length){ // si on ne sors pas de la liste.
MyButton[ActiveButton+1].gameObject.SetActive(true); // on active le prochain bouton de la liste
ActiveButton += 1; // on ajoute 1 a activeButton. si ActiveButton = 0, seul le premier est actif, Si on click dessus, c'est le prochain de la liste qui est ActiveButton
}
}
}
Voilà, normalement avec ce code( que je n'ai pas tester par contre), peut importe le nombre de bouton, ça marchera toujours
S'il y a quoi que ce soit qui ne marche pas ou que tu ne comprend pas, n'hésite pas