[DB] [c#] lié une instanciation de classe a une prefab

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
desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

[DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 13 Juil 2016 23:16

[edit] désolé je pensais l'avoir mis dans le sous forum c# mais j'ai fail ...


Bonjour,
je n'osai pas venir poser une question ici (trop peur de passer pour un gros noob) donc je me suis débrouiller seul jusque la...
Mais voila, sa fais plus d'un mois que je bloque sur un problème et j'ai beau chercher comme un dingue de partout en français ou en anglais mais je n'arrive pas a trouver. Du coup je prend mon courage a deux mains et me voila ici :)

Comment relier une instanciation de classe a un GameObject ???

voici ma classe Hero que je souhaite instancier (elle herite de la classe Perso)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Hero : Perso {


	public Hero (string nom) {
		Name = nom;
	}
}
et voila le script qui est dans un empty sur ma scène et d’où je souhaite créer mes héros et les attaché a la prefab de leur corps ...

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class GenGame : MonoBehaviour {


	public GameObject prefabCorp;


	// Use this for initialization
	void Start () {

		Hero test1 = new Hero ("paul");
		GameObject go = Instantiate (prefabCorp, transform.position, Quaternion.identity)as GameObject;

		go.AddComponent <test1>();
		Debug.Log (string.Format("Paul est vivant : {0} et a {1} hp ", test1.EstVivant , test1.Hp));
	}
je sais que cette façon ne fonctionne pas mais c'est pour vous montrer l'exemple...
voila je vous donne pas plus d'info pour pas vous embrouiller si par contre vous voulez d'autres explications n’hésitez vraiment pas :merci:


sinon le seul moyen que j'ai trouver pour réussir ne me conviens pas du tout et m'oblige a mettre un script sur mon GO et instancier mon héro dedans mais sa m’empêche de les classer et de choisir les héros que je souhaite c'est pourquoi je cherche la bonne méthode pour le faire :)

merci d'avance :amen:

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par Moi 1971 » 14 Juil 2016 10:16

Bonjour,
Dans unity, l'instanciation n'est que pour les GameObjets. Pour les classes, il faut utiliser "new".
J'ai trouvé cela : http://forum.unity3d.com/threads/instan ... ass.86853/
( recherche faite en moins de 10 secondes en mettant les mots "unity3d class instantiation" dans google)

desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 14 Juil 2016 11:34

[edit] pour ajouter les balises de code avant de me faire taper sur les doigts :)
hum ... merci

Mais sa ne m'aide pas du tout. Je sais créer des classes avec "new" par exemple ici dans mon exemple :

Code : Tout sélectionner

Hero test1 = new Hero ("paul");
donc la sa créer une instance de Hero et donc test1 a toute les caractéristique que je souhaite, mais j'aimerai pouvoir coller ce test1 a un GameObject.

apres le lien n'est pas en c# et comme je débute je ne sais pas encore trop bien convertir du unityscript au c# donc peut être que sur ton lien il y as ma réponse mais j'en doute après avoir fais plusieurs test sa ne m'aide pas X(

Il y as forcement un moyen de le faire pour le moment le seul moyen que j'ai trouvé et de mettre :

Code : Tout sélectionner

Hero test1 = new Hero ("paul");
dans un script attacher a un GameObject. Du coup le gameObject est bien == a test1 seulement sa me pose problème...
Il me faudrait pouvoir créer plein de Hero et diviser en sous groupe et après les rendre réel en attachant tous les Hero a un GO spécifique du coup en mettant le script sur le GO sa coince ...

mais merci d'avoir pris 10 secondes pour m'aider malgré tout j’apprécie beaucoup

Mon problème ne semble pas être les instanciations mais bien de trouver un moyen plus intéressant de les accroché a un GO après-tout une classe instancié est un objet il me semble donc il doit y avoir un moyen d'y greffer a un GO :pleur4:
quand je dis que sa fais + d'un mois que je bloque dessus ce n'est pas une façon de parler...
j'ai cherché énormément je me suis même mis a la programmation vraiment c# (sans unity) pour essayer d'en apprendre plus (ce qui as était très benefique mais malheureusement pas pour ce fameux soucis :]

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par Moi 1971 » 14 Juil 2016 19:22

Je me demande si tu ne prends pas le problème à l'envers. Les GO sont les seuls a pouvoir instancier les classes dont ils ont besoins, d'un point de vue programmation orienté objet...
Peut-être que si tu créés un empty (juste avec un transform) et tu y colles ton script où tu instancies une classe. Il existe "parent" qui permet de définir le parent d'un Transform... la doc ici : http://docs.unity3d.com/462/Documentati ... arent.html
Sinon, va falloir attendre d'autres interventions... bon courage ;-)

desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 14 Juil 2016 20:49

Bon sa m’embête vraiment que personne ne me donne une solution qui m'aide ^^ du coup l'explication doit être que je formule mal mon problème sans doute.
Alors cette nuit je vais ré-ecrire un début de code pour que vous compreniez mieux mon problème et sans doute mon erreur ...


quand tu dis que je prend le problème a l'envers j'ai malheureusement peur que tu es 100% raison tu n'es pas le premier a me faire cette remarque depuis que j'essaye d'apprendre la prog ^^

mais je garde encore espoir que sa soit possible de faire ce que je souhaite sa serait vraiment étonnant qu'on ne puisse pas .

enfin bref je reviens vers vous cette nuit ou demain si je m’endort sur mon clavier :-D

desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 15 Juil 2016 11:59

alors voila je pense que sa devrait être mieux ^^

voila le 1er script Perso qui n’hérite de rien (même pas monobehaviors) car si je le laisse je ne peux pas instancier une classe sans erreur de unity ... bon l'erreur est jaune et non rouge mais bon du coup je préfère faire sans monobehavior

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Perso {

	public int Hp { get; protected set; }
	public bool EstVivant { 
		get {
			return Hp > 0;
		}
	}
	public string Name { get; set; }


	public virtual void Marcher(){
		Debug.Log (Name + " marche ");
	}

	public Perso (){
		Hp = Random.Range (10, 101);
	}
}
le 2eme qui hérite de Perso ne possède rien actuellement (c'est juste un test donc je ne complique pas les choses...)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Hero : Perso {

	public Hero (string nom) {
		Name = nom;
	}
}
ensuite viens un script Alliance qui pareille n'est pas lié a monoB pour les même raison...

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class Alliance {

	public enum Alli
	{
		Bleue,
		Rouge,
		Verte
	}
	public Alli monAlli;
	public int nbrDeMembre;
	public List <Hero> membresDeLAlliance = new List<Hero> ();


	public void RempliAlliList(){
		for (int i = 0; i < nbrDeMembre; i++) {
			membresDeLAlliance.Add (new Hero("Test " + i));
		}
		foreach (var item in membresDeLAlliance) {
			Debug.Log (string.Format ("{0} a: {1} hp", item.Name, item.Hp));
			item.Marcher ();
		}
	}

	public Alliance (Alli alli, int nombremembre){
		
		monAlli = alli;
		nbrDeMembre = nombremembre;
	}
}
et enfin le GenGame qui me permet de créer les alli avec des héros dedans mais le problème c'est de rendre ces héro de manière concrète car bon je suis un jeu type console windows pas de problème mais sur unity j’espère réussir a faire un peu mieux et pourvoir interagir avec ces héros ^^

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class GenGame : MonoBehaviour {

	public Alliance alli1;
	public Alliance alli2;
	public Alliance alli3;


	// Use this for initialization
	void Start () {
		alli1 = new Alliance (Alliance.Alli.Bleue, 10);
		alli2 = new Alliance (Alliance.Alli.Rouge, 10);
		alli3 = new Alliance (Alliance.Alli.Verte, 10);
		alli1.RempliAlliList ();
		alli2.RempliAlliList ();
		alli3.RempliAlliList ();

	}
}

voila donc selon vous comment faire ? merci d'avance je désespère vraiment :(

desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 15 Juil 2016 12:09

au cas ou je vous met mon script Perso (le vrai si jamais sa peut aider a mieux saisir ce que je veux et mes problèmes ...

mais attention il est sale (j’expérimente donc c'est pas très claire désolé :( )

Code : Tout sélectionner

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class Persos {

	public enum actionEnCours {attendre, choisirZone, Marcher}
	public enum races {koala, ecureuil, chacal, loup, requin, loutre, marmotte}
	public Color actualCoulleur;
	//public Color c1, c2, c3, c4, c5, c6, c7;
	public Color[] couleursCorp = new Color[7];
	public races race;
	public actionEnCours act;
	public GameObject[] zoneEau;
	public GameObject[] zoneNourriture;
	public string prenom;

	public string alliPerso;
	public List <GameObject> ennemi = new List<GameObject>();

	public Vector3 zoneChoisi;

	public int vie;
	public int vitesse;
	public int soif;
	public int soifMax = 100;
	public bool aSoif = false;
	public int faim;
	public int faimMax = 100;
	public bool aFaim = false;
	public int argentSurSoi = 100;

	float decompte = 1f;
	public float chrono = 0;
	public float attente;
	public float decompte2 = 10f;

	public bool canAtack = true;
	public float distRay = 10f;



	public void Lancement(GameObject t){
		ChoixAlli (t);
		AttributionCouleur ();
		SpecificiteRace (t);
		RecupZoneAExplo ();
	}



	public void Attaque(GameObject t){
		if (canAtack) {
			RaycastHit hit;
			Vector3 pos = t.transform.position;
			Vector3 fwd = t.transform.TransformDirection (Vector3.forward);
			Ray ray = new Ray (pos, fwd);

			
			if (Physics.Raycast (ray, out hit, distRay)) {
				Debug.DrawRay (pos, fwd * 10, Color.red);
				if (hit.rigidbody != null) {
					for (int i = 0; i < ennemi.Count; i++) {
						if (hit.rigidbody.gameObject == ennemi [i]) {
							Debug.Log ("Attaque");
							hit.rigidbody.GetComponent <Hero>().hero.vie --;
						}
					}
				}
			}
		}
	}

	public void Scanenemy(){
		for (int i = 0; i < ennemi.Count; i++) {
			if (ennemi [i] == null) {
				ennemi.RemoveAt (i);
			}
		}
	}

	public void ChoixAlli(GameObject t){
		BaseAlliance aLib;
		int rng = Random.Range (0, AllianceManager.Instance.alliT.Count);
		alliPerso = AllianceManager.Instance.alliT[rng].allianceName;
		aLib = AllianceManager.Instance.alliT [rng];
		aLib.nbreDeMembres++;
		if (alliPerso == "Nouvelle Aldes") {
			aLib.memDeLAlli.Add (t);
			t.tag = "NewAldes";
		}else if (alliPerso == "Phoenix") {
			aLib.memDeLAlli.Add (t);
			t.tag = "Phoenix";
		}else if (alliPerso == "Tesla") {
			aLib.memDeLAlli.Add (t);
			t.tag = "Tesla";
		}
	}

	public void TestEtat(GameObject t){
		Scanenemy ();
		if (act == actionEnCours.attendre) {
			Delay ();
		} else if (act == actionEnCours.choisirZone) {
			ChoisirZoneExplorable(t);
		} else if (act == actionEnCours.Marcher) {
			Marcher (t);
		}
	}

	public void ConsomeRess3(){
		if (decompte2 > 0) {
			decompte2 -= Time.deltaTime;
		} else if (decompte2 < 0) {
			faim-= Random.Range (1, 4);
			soif-= Random.Range (1, 4);
			AEnvieDe (soif, faim);
			decompte2 = 10f;
		}
	}

	public void AEnvieDe(int ress1, int ress2){
		if (ress1 <= 35) {
			aSoif = true;
		} else {
			aSoif = false;
		}
		if (ress2 <= 35) {
			aFaim = true;
		} else {
			aFaim = false;
		}
	}
		
	public Vector3 RngZone(){
		return new Vector3 (Random.Range (0, 101), 1f, Random.Range (0, 101));
	}

	public void RecupZoneAExplo(){
		zoneEau = GameObject.FindGameObjectsWithTag ("Eau");
		zoneNourriture = GameObject.FindGameObjectsWithTag ("Nouriture");
	}

	public void RecupEnnemy(){
		if (alliPerso == "Nouvelle Aldes") {
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("Phoenix"));
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("Tesla"));
		}else if (alliPerso == "Phoenix") {
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("Tesla"));
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("NewAldes"));
		}else if (alliPerso == "Tesla") {
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("NewAldes"));
			ennemi.AddRange (GameObject.FindGameObjectsWithTag ("Phoenix"));
		}
	}

	public void ChoixZoneMini (GameObject go, GameObject[] zonestest) {
		Vector3 position = go.transform.position;
		int i;
		float mini = 50000;

		for (i = 0; i < zonestest.Length; i++) {
			Vector3 diff = zonestest[i].transform.position - position;
			float curDistance = diff.sqrMagnitude;
			if (curDistance < mini) {
				mini = curDistance;
				Vector3 zoneChoisi2 = zonestest [i].transform.position;
				zoneChoisi = new Vector3 (zoneChoisi2.x, 1.0f, zoneChoisi2.z);
			}
		}
	}

	public void ChoisirZoneExplorable(GameObject go){
		chrono = 0f;
		attente = Random.Range (1.5f, 5.1f);
		if (aSoif) {
			ChoixZoneMini (go, zoneEau);
		} else if (aFaim) {
			ChoixZoneMini (go, zoneNourriture);
		} else {
			zoneChoisi = RngZone ();
		}
		act = actionEnCours.Marcher;
	}

	public void Marcher(GameObject t){
		if (act == actionEnCours.Marcher) { // Si on a choisi une zone on y va  (zoneChoisi != null)
			t.transform.LookAt (zoneChoisi);
			t.transform.position = Vector3.MoveTowards (t.transform.position, zoneChoisi, Time.deltaTime * vitesse);
			if (CheckDistance (t) <= 1f) {
				act = actionEnCours.attendre;
			}
		}
	}

	public float CheckDistance(GameObject t){
		return Vector3.Distance (t.transform.position, zoneChoisi);
	}

	public void Delay () {
		if (chrono < attente) {
			if (decompte > 0) {
				decompte -= Time.deltaTime;
			} else if (decompte < 0) {
				chrono++;
				decompte = 1f;
			}
		} else {
			//Debug.Log ("Test reussi !!!");
			act = actionEnCours.choisirZone;
		}
	}

	public float conversion (float b){
		return b / 255;
	}

	public void AttributionCouleur(){
		couleursCorp [0] = new Color (conversion (255), conversion (255), conversion (255), conversion (255)); 
		couleursCorp [1] = new Color (conversion (122), conversion (61), conversion (6), conversion (255)); 
		couleursCorp [2] = new Color (conversion (94), conversion (94), conversion (94), conversion (255)); 
		couleursCorp [3] = new Color (conversion (206), conversion (205), conversion (205), conversion (255));
		couleursCorp [4] = new Color (conversion (116), conversion (105), conversion (251), conversion (255));
		couleursCorp [5] = new Color (conversion (118), conversion (115), conversion (16), conversion (255));
		couleursCorp [6] = new Color (conversion (251), conversion (194), conversion (194), conversion (255));
	}

	public void SpecificiteRace(GameObject t){
		Renderer rend =  t.GetComponent <Renderer> ();
		race = (races)Random.Range (0, 7);
		if (race == races.koala) {
			vie =5;
			vitesse =2;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[0];
			rend.material.color = actualCoulleur;
		} else if (race == races.ecureuil) {
			vie =5;
			vitesse =4;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[1];
			rend.material.color = actualCoulleur;
		}else if (race == races.chacal) {
			vie =5;
			vitesse =5;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[2];
			rend.material.color = actualCoulleur;
		}else if (race == races.loup) {
			vie =6;
			vitesse =7;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[3];
			rend.material.color = actualCoulleur;
		}else if (race == races.requin) {
			vie =6;
			vitesse =6;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[4];
			rend.material.color = actualCoulleur;
		}else if (race == races.loutre) {
			vie =6;
			vitesse =3;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[5];
			rend.material.color = actualCoulleur;
		}else if (race == races.marmotte) {
			vie =4;
			vitesse =2;
			soif = Random.Range (30, 101);
			faim = Random.Range (30, 101);
			actualCoulleur = couleursCorp[6];
			rend.material.color = actualCoulleur;
		}
	}

	public Persos (){

		}
	}
et du coup pour instancier ces perso en vrai je met le script ci-dessous sur un prefab et j'instancie le prefab sur le dernier script en bas :)

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Hero : MonoBehaviour {

	public Persos hero;
	private Color myColor;
	public bool isEnnemy = false;


	// Use this for initialization
	void Awake () {
		hero = new Persos ();
		hero.Lancement (this.gameObject);
		hero.act = Persos.actionEnCours.choisirZone;
		nommage ();
	}

	void Start(){
		hero.RecupEnnemy ();
	}

	public void nommage(){
		hero.prenom = Nommage.nomme ();
		Debug.Log (Nommage.prenomMasculin.Count);
	}

	public void Dead(){
		if (hero.vie <= 0) {
			Debug.Log ("Je suis mort " + this.gameObject.name);
			Destroy (gameObject);
		}
	}

	// Update is called once per frame
	void Update () {
		hero.ConsomeRess3 ();
		hero.TestEtat (this.gameObject);
		hero.Attaque (this.gameObject);
		Dead ();
	}
}

et enfin:

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class GenGame : MonoBehaviour {
	
	public GameObject eau; // Point d'eau
	public GameObject nourriture; // Point de nouriture
	public GameObject Balli;
	public int nEau, nNou, nCorp, nBa; // Nombre de point de ressources (eaus, nouritures, joueurs)
	int mapsizeX; // Taille de la map vecteur X
	int mapsizeZ;  // Taille de la map vecteur Z
	public int[,] map; // Tableau de vecteur X.Z etat de la case...

	public GameObject heroR;      // Rangement dans la hierarchie du projet (un R a la fin)
	public GameObject solsR;       
	public GameObject eauR;        
	public GameObject nourritureR;
	public GameObject BalliR;

	public GameObject corp;   // Corp du joueurs
	public GameObject go1;


	public void Awake() {
		TileMap tm = go1.GetComponent <TileMap> ();
		mapsizeX = (int)tm.tileSize * tm.size_x;
		mapsizeZ = (int)tm.tileSize * tm.size_z;
	}


	public void Start() {
		GenerateMap ();
		DefNombreRessources ();
		GenerateRessources (eau, nEau);
		GenerateRessources (nourriture, nNou);
		GenerateRessources (Balli, nBa);
		GenerateHero (corp, nCorp);
	}


	public void GenerateMap(){
		map = new int[mapsizeX, mapsizeZ];

		for (int x = 0; x < mapsizeX; x++) {
			for (int z = 0; z < mapsizeZ; z++) {
				map [x, z] = 0;
			}
		}
	}

	public void DefNombreRessources() {
		nEau = Random.Range (1, 6);
		nNou = Random.Range (1, 6);
		nCorp = Random.Range (12, 26);
		nBa = 3;
	}

	public void GenerateHero(GameObject go, int n){
		float y = 1.0f;
		bool ressPosee = false;

		for (int i = 0; i < n; i++) {
			ressPosee = false;
			while (ressPosee == false) {
				int x = Random.Range (3, mapsizeX-2 );
				int z = Random.Range (3, mapsizeZ-2 );
				if (map [x, z] == 0) {
					GameObject go2 = Instantiate (go, new Vector3 (x, y, z), Quaternion.identity)as GameObject;
					ressPosee = true;
					map [x, z] = 3;
					go2.transform.parent = heroR.transform;
				}
			}
		}
	}

	public void GenerateRessources(GameObject go, int n) {
		float y = 0;
		bool ressPosee = false;

		if (go == eau) {
			y = 0.25f;
		} else if (go == nourriture) {
			y = 0.5f;
		} else if (go == Balli) {
			y = 0.5f;
		}
		for (int i = 0; i < n; i++) {
			ressPosee = false;
			while (ressPosee == false) {
				int x = Random.Range (3, mapsizeX-2 );
				int z = Random.Range (3, mapsizeZ-2 );
				if (map [x, z] == 0) {
					GameObject t1 = Instantiate (go, new Vector3 (x, y, z), Quaternion.identity)as GameObject;
					map [x, z] = 1;
					ressPosee = true;
					if (go.name == eau.name) {
						t1.transform.parent = eauR.transform;
					} else if (go.name == nourriture.name) {
						t1.transform.parent = nourritureR.transform;
					}else if (go.name == Balli.name) {
						t1.transform.parent = BalliR.transform;
					}
				}
			}
		}
	}
}
avec cette version tout fonctionne mais j'aime pas la maniere dont je creer les perso je prefere la maniere que je vous ai montrer en exemeple mais sa marche pas ^^ du coup je sais pas quoi faire continuer comme je fais ou reussir a comprendre comment faire au mieux :oops:

amphibia
Messages : 52
Inscription : 21 Juin 2016 23:16

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par amphibia » 15 Juil 2016 23:28

Salut,

Si j'ai bien compris, tu veux ajouter un script en tant que component pour ton gameobject, il faut utiliser addComponent, voici un bout de code que j'utilise pour ajouter un script présent dans mes assets sur un de mes gameobjects :

Code : Tout sélectionner

System.Type balleScript = System.Type.GetType(Resources.Load("..."));
Balle balle = (Balle)ball.AddComponent(balleScript);
C'est pas parfait mais ça fonctionne chez moi :-D

mykado
Messages : 26
Inscription : 11 Oct 2013 22:15

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par mykado » 16 Juil 2016 00:10

Une autre approche (peut être un peu bourrin...), tu ajoutes tout les scripts correspondant à tout tes cas de figures et au moment de l'instanciation, ça dans le start () tu actives/desactive les scripts nécessaires avec un :

Code : Tout sélectionner

GetComponent<MyScript>().enabled = true;
Dernière édition par mykado le 16 Juil 2016 12:54, édité 1 fois.

desolox
Messages : 36
Inscription : 13 Juil 2016 22:55

Re: [DB] [c#] lié une instanciation de classe a une prefab

Message par desolox » 16 Juil 2016 06:25

Merci a vous pour vos réponses :) mais je comprend pas ^^ je n'ai pas encore était assez clair ?
amphibia a écrit :Si j'ai bien compris, tu veux ajouter un script en tant que component pour ton gameobject,
non pas du tout c'est presque le contraire ^^ je souhaite créer une instanciation de ma classe Hero et réussir a mettre ce héro dans un GameObject.

Code : Tout sélectionner

Hero hero_instancier = new Hero();
GameObject go = instanciate (go, transform.position, transform.rotation);
// j'aimerai lié ces 2 chose sans faire ce que je fais en ce moment comme montrer dans mes exemples a savoir:
go.addcomponent<Hero>(); // je veux add hero_instancier et non le script Hero en entier sinon a quoi bon instancier des classes autant mettre le script direct c'est la que je coince... 
il doit y avoir un truc que je comprend pas j'ai du passer a cote d'un point important dans les tutos que je suis car dans tout les exemples que je cherche c'est toujours pareil ils instancie leurs object/class donc ils creer des hero_instancier (j'ai vu faire avec des voitures des fruits des banks etc... mais personne ne montre quoi en faire après pour y rendre concret ...

vraiment désolé de vous embêter avec cela je vois bien que je dois être un boulet pour vous :( mais je comprend pas et sa m’embête beaucoup :oops:

Répondre

Revenir vers « (C#) CSharp »