[Résolu] Sélectionner un script dans un script

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Phoenix
Messages : 30
Inscription : 03 Sep 2018 17:49

[Résolu] Sélectionner un script dans un script

Message par Phoenix » 03 Sep 2018 18:22

Bonjour,
je vous envoie ce message parce que je suis coincé dans le développement de mon jeu. J'aimerais pouvoir sélectionné un script et l'envoyer dans un autre script qui gère les programmes. Je ne sais pas si je suis assez clair :-D mais je vous laisse un schémas explicatif ci-dessous.
Merci d'avance
Cordialement
Image
Dernière édition par Phoenix le 08 Oct 2018 19:04, édité 1 fois.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Sélectionner un script dans un script

Message par djulio74 » 04 Sep 2018 06:55

Salut, en effet c'est pas vraiment très clair ton explication. Va falloir développer un peu ;-)

sinon là comme ça, je dirais de regarder du coté de "GetComponent" , qui permet entre autre à un script d’accéder aux variables d'un autre script.
Mais sans en savoir plus pas facile.

Comme dit, explique un peu plus ton idée, je tenterai de t'y apporter une marche a suivre. ;-)

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Phoenix
Messages : 30
Inscription : 03 Sep 2018 17:49

Re: Sélectionner un script dans un script

Message par Phoenix » 05 Sep 2018 17:59

Salut,
Je te remercie pour ta réponse et je vais essayer de développer un peu. En faite j'ai un script lié avec des boutons sur unity et je veux que quand l'utilisateur appuie sur un des boutons un script soit sélectionné et envoyé sur un autre script et les autres désactiver ou effacer.
Tous les scripts sélectionable ont les mêmes variables, il faut juste que le script qui reçoit l'information soit capable de se modifier selon la sélection.
Merci
Cordialement

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Sélectionner un script dans un script

Message par Alesk » 05 Sep 2018 18:29

Ton script 3 devra être une classe étendant Monobehavior

et dans ce cas, tu peux utiliser

Code : Tout sélectionner

this.gameObject.AddComponent<Script3>();
Et si tu veux supprimer le script en cours

Code : Tout sélectionner

Destroy(this);
Mais sincèrement ce n'est pas la méthode la plus propre...

Que veux tu faire concrètement avec ces scripts ?

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Sélectionner un script dans un script

Message par djulio74 » 05 Sep 2018 18:44

Ok, pas beaucoup plus clair, ou du moins pas dans des terme qui me sont habitué. ::d

En gros apparemment t'as des boutons auxquels tu as assigné des scripts. On vas partir de ce postula.
Ces script sont de simple variable assigné au script qui gère les boutons? ou des script déjà appliqué a d'autre GameObject ou au même GameObject? ( que tu récupère avec GameObject.GetComponent(Myscript) )

toujours un peu vague.
Phoenix a écrit :
05 Sep 2018 17:59
boutons sur unity et je veux que quand l'utilisateur appuie sur un des boutons un script soit sélectionné et envoyé sur un autre script et les autres désactiver ou effacer.
Envoyé un script sur un autre script?!
sur un autre GameObject tu veux dire? ( voir addComponent)
Mofifier la variable d'un script depuis un autre? Voir ici

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Phoenix
Messages : 30
Inscription : 03 Sep 2018 17:49

Re: Sélectionner un script dans un script

Message par Phoenix » 05 Sep 2018 19:38

Bonjour,
Je vais cette fois ci vous expliquer tous les détails. Je veux faire une sorte de rpg avec des spells. Quand l'utilisateur démarre le jeu il tombe sur une scène où il doit choisir un spell. Quand il l'a choisi la scène change et il se retrouve dans le jeu avec une barre de sélection prédéfini suivant le spell choisi. Donc je ne sais pas comment faire ça.
Voilà c'est tout ce que je peux vous dire.
Salutations

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Sélectionner un script dans un script

Message par djulio74 » 05 Sep 2018 20:03

ah ok!! lol, un peu plus simple comme ça. Le comment je verrais la chose :

je ferais un Array pour chaque Spell, contenant chaque objet/sors/elément,/script etc correspondant au spell. ( Spell1, speel2 .. speelN);
un Array ActiveSpell.
pour chaque bouton, définir le Spell associer. puis une truc du genre:

Code : Tout sélectionner

if( bouton1) { ActiveSpell = Spell1;}
if( bouton1) { ActiveSpell = Spell1;}
....
if( boutonN) { ActiveSpell = SpellN;}
Mais au lieu de d'avoir grand nombre de script, un pour chaque élément de Spell, Je pene ce seait mieude tout mettre un seul script, une fonction pour action désiré. Comme ça une fois ta scène chargée et et ta barre de sélection prédéfini, chaque bouton de ta barre lancera une fonction du script. Je suis pas le mieux calé mais je peux faire un exemple si tu veux.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Phoenix
Messages : 30
Inscription : 03 Sep 2018 17:49

Re: Sélectionner un script dans un script

Message par Phoenix » 05 Sep 2018 20:12

Merci beaucoup j'essayerai demain parce que je n'ai pas accès à mon ordinateur pour le moment. Merci encore
Salut

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Sélectionner un script dans un script

Message par djulio74 » 05 Sep 2018 20:56

petit essai rapide en javascript.
au clavier "a" , "z, ou "e" pour choisir un spell, et de 1 a 3 pour exécuter l'action correspondante au spell choisis.

Code : Tout sélectionner

#pragma strict

private var Spell0 : Function[] ;
private var Spell1 : Function[] ;
private var Spell2 : Function[] ;

private var ActiveSpell : Function[] ;

function Start () {

	ActiveSpell = new Function[0] ;

	Spell0 = new Function[3];
	Spell0[0] = Action1;
	Spell0[1] = Action2;
	Spell0[2] = Action3;
	
	Spell1 = new Function[3];
	Spell1[0] = Action4;
	Spell1[1] = Action5;
	Spell1[2] = Action6;
	
	Spell2 = new Function[3];
	Spell2[0] = Action7;
	Spell2[1] = Action8;
	Spell2[2] = Action9;
	
	

}

function Update () {

	// Touches "a", "b", ou "c" du clavier pour selectionner un Spell;
	// Touches de 1 a 3 pour lancer le sort correpondant au spell
	// ici dans l'Update pour l'exemple, mais a implenter dans une fonction "OnGui" par exemple
	
	
	// choix du spell//
	if( Input.GetKeyDown("a")){
		ActiveSpell = Spell0;
		print( " premier spell selectionné");
	}
	if( Input.GetKeyDown("z")){
		ActiveSpell = Spell1;
		print( " deuxieme spell selectionné");
	}
	if( Input.GetKeyDown("e")){
		ActiveSpell = Spell2;
		print( " troisieme spell selectionné");
	}
	
	// lancement de sort	
	if( ActiveSpell.Length>0){
	
		if( Input.GetKeyDown("1") ){
			ActiveSpell[0]();
		}
		if( Input.GetKeyDown("2") ){
			ActiveSpell[1]();
		}
		if( Input.GetKeyDown("3") ){
			ActiveSpell[2]();
		}
	}
}



function Action1(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action1 Lancée");
}
function Action2(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action2 Lancée");
}
function Action3(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action3 Lancée");
}
function Action4(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action4 Lancée");
}
function Action5(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action5 Lancée");
}
function Action6(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action6 Lancée");
}
function Action7(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action7 Lancée");
}
function Action8(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action8 Lancée");
}
function Action9(){
	// n'importe quoi qui correponde a l'action voulue //
	print(" action9 Lancée");
}

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Sélectionner un script dans un script

Message par Alesk » 05 Sep 2018 21:00

Il faut penser ton projet avec des classes qui héritent d'autres classes, pour affiner de plus en plus les spécificités de tes sors.

Exemple :

Tu créés une classe générique nommée "Action", cette classe aura par exemple une propriété nommée "valeur" de type float et une autre nommée "cible" de type "Personnage" (qui doit être une autre classe à toi, assignée aux personnages), et une méthode nommée "Appliquer"

Ensuite tu fais d'autres classes qui héritent de cette classe action, par exemple :
- Attaque
- Soin

Tu peux alors détailler un peu plus, les attaques avec d'autres classes qui héritent de "Attaque" :
- Physique
- Magique

Etc... à toi de voir ce qui est le plus pratique.

Ensuite, pour chaque classe où ça s'avère pertinent, tu remplis la méthode "Appliquer" avec le code qui correspond à ce que tu veux faire, par exemple pour du soin, ça donnerait :

Code : Tout sélectionner

cible.vie += valeur;
Alors que pour une attaque physique :

Code : Tout sélectionner

cible.vie -= valeur;
Et une attaque magique :

Code : Tout sélectionner

cible.mental -= valeur;
Etc... Je te recommande de lire la doc C# au sujet de l'héritage dans les classes
https://docs.microsoft.com/fr-fr/dotnet ... nheritance

Il faut apprendre à structurer ta hiérarchie de classe en partant du plus petit dénominateur commun, et en détaillant petit à petit à chaque "étage".
ça te donnera quelque chose de très souple et facile à améliorer.

Si tu fais des tas des script uniques pour chaque action, tu vas avoir des tonnes de lignes de codes dupliquées partout pour rien et ce sera un enfer à maintenir.

Répondre

Revenir vers « Scripting »