Activer une fonction située dans un autre script.

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
cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Activer une fonction située dans un autre script.

Message par cortoh » 11 Mai 2018 08:58

Bonjour,

Je voudrais activer une fonction située dans un autre script, pour cela j'ai ciblé le script et la fonction de cette façon:

Code : Tout sélectionner

`Ani_Camera.turn_Cam_Right();
La fonction ciblée:

Code : Tout sélectionner

public static void turn_Cam_Right ()
 {

	son_Turn_Game.GetComponent<AudioSource>().Play();
	GetComponent<Animation>().Play("Ani_Cam_1");	
	vCamera = 1;	

}
mais apparement il est nécessaire de mettre la fonction ciblée en public static ce que j'ai effectué mais j'ai un message d'erreur:
Assets/Scripts/Ani_Camera.cs(82,7): error CS0120: An object reference is required to access non-static member `Ani_Camera.vCamera'
Est-ce-que ma façon de procéder n'est pas la bonne, vous pouvez m'expliquer comment faire ?

Merci à vous.

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

Re: Activer une fonction située dans un autre script.

Message par Moi 1971 » 11 Mai 2018 13:06

Bonjour ,
est-ce que tu as été voir la doc et par exemple :
https://unity3d.com/fr/learn/tutorials/ ... ng/statics

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: Activer une fonction située dans un autre script.

Message par cortoh » 11 Mai 2018 23:30

Bonsoir,
Oui, j'ai consulté le lien, mais je n'ais pas tout saisi, j'ai bien compris la méthode pour utiliser une fonction extérieur il suffit de mettre cette fonction en public static j'ai d'ailleur fait le test avec un Debug.Log("test_fonction_static"); dans la fonction et j'ai bien le Debug en retour, donc en l'état c'est facile et rapide et pas bien compliqué, cela dit ma fonction ici:

Code : Tout sélectionner

public int vCamera;
public AudioSource son_Turn_Game;

public static void turn_Cam_Right ()
 {
	son_Turn_Game.GetComponent<AudioSource>().Play();
	GetComponent<Animation>().Play("Ani_Cam_1"); // Les animations sont  contenues dans le gameObject lié au script	
	vCamera = 1;	

}
appelle plusieurs éléments et variable, c'est là que je n'arrive pas finaliser cette usine à gaz, cela dit en finalité j'ai trouvé une autre façon d'opérer pour activer cette fonction sans la mettre en static mais bon j'aurais bien aimé piger le truc.


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

Re: Activer une fonction située dans un autre script.

Message par Moi 1971 » 12 Mai 2018 09:45

Bonjour,
la solution est donnée par " dan44180", elle était aussi visible dans l'exemple que je t'ai donné et le plus important : Elle était dans le message d'erreur : "error CS0120: An object reference is required to access non-static member `Ani_Camera.vCamera"
La prochaine fois il faut lire le message d'erreur et le comprendre.
Pour comprendre => Google "Unity3d C# error CS0120"
Et tu tombe sur https://support.unity3d.com/hc/en-us/ar ... is-CS0120-

Maintenant, es-tu certain de savoir à quoi sert la notion de "static" en dév?

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: Activer une fonction située dans un autre script.

Message par cortoh » 12 Mai 2018 12:57

Bonjour,
Oui effectivement j'avais fini par comprendre que toutes les variables devaient êtres également en static.

Répondre

Revenir vers « (C#) CSharp »