[Resolu][Débutant] Ajout de gameobject possedant un component dans une liste
Publié : 26 Jan 2023 18:11
Bonjour à tous,
Je souhaite créer un script "OnOff" permettant de désactiver tous les composant Light contenus dans les enfants. L'idée c'est de pouvoir déposer le script sur un interupteur sans avoir rien a configurer pour qu'il controle les "lights" enfants. C'est un script que je souhaite pouvoir réutiliser facilement pour d'autres situations.
Pour le moment je fais ça pour switcher (si open = true alors j'allume):
Je ne suis pas convaincu que je suis parti sur le bon chemin pour controler les lumières ou les appareils electriques d'un batiment, si vous avez quelques conseils...
La prochaine étape serait donc de chercher dans les enfants de l'interupteur et de les ajouter à une liste.
Je crée la liste :
public List<GameObject> listLights = new List<GameObject>();
et après je ne sais pas comment faire sans utiliser les tags, j'ai tenté ça dans le start :
listLights.AddRange(gameObject.GetComponents<Onoff>());
Mais j'obtiens ça :
Erreur CS1503 Argument 1 : conversion impossible de 'Onoff[]' en System.Collections.Generic.IEnumerable<UnityEngine.GameObject>'
Et je suis perdu...
Après il restera la lecture de la liste pour appliquer le On ou OFF.
Si vous avez un lien ou un tuto pour faire quelque chose dans le genre...
D'avance merci pour votre aide
Je souhaite créer un script "OnOff" permettant de désactiver tous les composant Light contenus dans les enfants. L'idée c'est de pouvoir déposer le script sur un interupteur sans avoir rien a configurer pour qu'il controle les "lights" enfants. C'est un script que je souhaite pouvoir réutiliser facilement pour d'autres situations.
Pour le moment je fais ça pour switcher (si open = true alors j'allume):
Code : Tout sélectionner
void FixedUpdate()
{
if (locked || gamemanager.dijoncteur == false || !open)
{
light1.enabled = false; light2.enabled = false; if(isDebugLog)Debug.Log("IF");
audiooff.Play();
}
else if(!locked || gamemanager.dijoncteur == true || open)
{
light1.enabled = true; light2.enabled = true; if (isDebugLog)Debug.Log("ELSE");
audioon.Play();
La prochaine étape serait donc de chercher dans les enfants de l'interupteur et de les ajouter à une liste.
Je crée la liste :
public List<GameObject> listLights = new List<GameObject>();
et après je ne sais pas comment faire sans utiliser les tags, j'ai tenté ça dans le start :
listLights.AddRange(gameObject.GetComponents<Onoff>());
Mais j'obtiens ça :
Erreur CS1503 Argument 1 : conversion impossible de 'Onoff[]' en System.Collections.Generic.IEnumerable<UnityEngine.GameObject>'
Et je suis perdu...
Après il restera la lecture de la liste pour appliquer le On ou OFF.
Si vous avez un lien ou un tuto pour faire quelque chose dans le genre...
D'avance merci pour votre aide