[RES]passage de unity 4.6 à unity 5 : AddComponent dynamique

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
sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

[RES]passage de unity 4.6 à unity 5 : AddComponent dynamique

Message par sotec » 15 Avr 2015 15:01

Bonjour,

J'ai un soucis lors du passge de mon projet de unity 4.6 à unity 5, j'ai besoin d'ajouter des composants de manière dynamique, or unity a retiré AddComponent(string);
http://blogs.unity3d.com/2015/01/21/add ... unity-5-0/

Unity annonce que l'on peut utiliser à la place
Type.GetType(string) avec AddComponent(Type); mais cela necessite "Requires the type’s assembly fully qualified name"
http://msdn.microsoft.com/en-us/library ... 10%29.aspx

Je cherche une autre solution pour le remplacement car celui ci me parait extremement génant ( et je j'ai pas encore entièrement compris le "type’s assembly fully qualified name" )
Ou sinon une explication plus en profondeur sur comment facilement récupérer un type à partir de son nom

Merci d'avance

Edit : un bout de code qui montre le problème :

Code : Tout sélectionner

			InfoMenu _infoMenuFurniture = null;

			if(Factory != null && Factory.InfoMenuName != "" )
			{

                                _infoMenuFurniture = MyGameObject.AddComponent(Factory.InfoMenuName) as InfoMenu;
			}

ce code fonctionne dans la version 4.6, mais pas dans la version 5 , or je ne peux pas le remplacer par AddComponent<XXX>() car je ne connais pas le type mais seulment le nom du composant qui est stocké dans la Factory . Le composant hérite en effet de InfoMenu, mais ne fait qu'en hériter ><
Dernière édition par sotec le 15 Avr 2015 16:33, édité 1 fois.
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: passage de unity 4.6 à unity 5 : AddComponent dynamique

Message par sotec » 15 Avr 2015 16:23

le seul moyen que j'ai trouvé ( avec l'aide de certaies personne sur le chat ) :
remplacer les noms par des référence sur le type :
à la place d'avoir :

Code : Tout sélectionner

		public virtual string ComponentName {
			get{
				return "ComponentName";
			}
		}

Code : Tout sélectionner

        public virtual Type ComponentReference{
            get
            {
                return typeof(Component);
            }
        }

Cela fonctionne pour moi car le nom du composant était dans le code, si il est tiré d'un fichier XML ou autre, cela ne fonctionnera pas
Dernière édition par sotec le 16 Avr 2015 09:35, édité 1 fois.
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
yoyoyaya
Messages : 1656
Inscription : 30 Mai 2011 13:14
Localisation : PAAAAARTOUUUU
Contact :

Re: [RES]passage de unity 4.6 à unity 5 : AddComponent dynam

Message par yoyoyaya » 15 Avr 2015 18:48

Tu as du déjà tomber dessus mais bon. As-tu vu ce thread ?
http://forum.unity3d.com/threads/unitys ... pe.280035/
ImageImage

Répondre

Revenir vers « (C#) CSharp »