[MY] acces au component (behaviour) Halo

Pour les scripts écrits en C#
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
Ore
Messages : 2
Inscription : 26 Sep 2017 10:48

[MY] acces au component (behaviour) Halo

Message par Ore » 26 Sep 2017 11:46

bonjour à tous,

contexte :
J'utilise la version 5.6.
Mon application est un "éditeur de monde" : les objets sont différents d'un monde à l'autre d'où la nécessité de gérer les propriétés de certains objets à la volée.

Je souhaite ajouter par un script un halo à certains objets pour les "illuminer" à certains moments (objets collectables).
J'aimerai ajouter le component (qui est en fait un behaviour) Halo par script.
Quand je l'ajoute à un objet j'arrive à y accéder via cette ligne : halo = (Behaviour)gameObject.GetComponent("Halo");
je ne peux utiliser AddComponent("string") : deprecated function et la fonction addComponent<TYPE> n'accepte pas le type Halo.
Avant de me résigner à ajouter le composant à tous mes objets je pose la question/pb ici.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] acces au component (behaviour) Halo

Message par boubouk50 » 26 Sep 2017 11:54

Qu'est-ce-que ce component? Une classe de toi? Je ne la vois pas dans la doc.
Aussi, tu ne peux plus utiliser cette variante de AddComponent () (Obsolete cf Doc), il te faut utiliser:
public Component AddComponent (Type componentType) ou public T AddComponent().

Code : Tout sélectionner

MonGameObject.AddComponent <Halo> ();
//ou
MonGameObject.AddComponent (typeof Halo) as Halo;
"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

Roots
Messages : 58
Inscription : 26 Avr 2017 16:12

Re: [MY] acces au component (behaviour) Halo

Message par Roots » 26 Sep 2017 12:04

Si jamais une autre solution toute bête est simplement de te créer un prefab qui contient ton halo, et de l'instancier en enfant de ton object .
Dans certain cas il est plus simple de contourner le problème :D !

Bon si la solution de Boubouk50 fonctionne c'est bien sur plus optimisé mais il me semble qu'on ne peux pas faire de AddComponent<Halo>(); ça me rappel quelque chose .

Ore
Messages : 2
Inscription : 26 Sep 2017 10:48

Re: [MY] acces au component (behaviour) Halo

Message par Ore » 26 Sep 2017 22:04

la solution de boubouk est malheureusement la solution standard pour un ajout de component, ça ne fonctionne pas dans mon cas.
Peut etre que le passage en 2017 règlera mon pb, je crois qu ils ont prévu de remettre l appel d AddCOmponent avec une string, de toute façon ce behaviour/component n'est pas des plus facile à manipuler.

Ta solution, roots, a le mérite de régler le pb mais du coup le halo ne s adaptera pas à l objet. Je vais ajouter manuellement mon halo et l'activer ou le désactiver en fonction de mes besoins, ça, ça amarche ^^

merci de votre retour rapide, le temps nous donnera peut etre la solution.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6216
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [MY] acces au component (behaviour) Halo

Message par boubouk50 » 27 Sep 2017 09:19

Avec ces versions qui nécessitent un Type, je pense qu'il faut faire quelque chose pour la classe soit prise en compte comme Type. Quoi exactement, je ne sais pas, mais ça doit bien se faire. En allant chercher le type peut-être:

Code : Tout sélectionner

myGameObject.AddComponent(Type.GetType("Halo"));
"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

Répondre

Revenir vers « (C#) CSharp »