Accéder à une fonction (au nom identique) dans chaque nouvelle scène chargée

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
Jayme65
Messages : 47
Inscription : 31 Jan 2017 00:43

Accéder à une fonction (au nom identique) dans chaque nouvelle scène chargée

Message par Jayme65 » 18 Sep 2017 21:53

Bonjour,

Mon application peut lancer différentes scènes (rien d'exceptionnel ;) )
J'ai une classe 'GameManager' globale qui s'occupe de lancer les différentes scènes.
Je veux, depuis ce 'GameManager' pouvoir dire ShowHello() et que le résultat puisse être différent selon la scène (dans une scène ce sera un texte en Helvetica 20pts rouge qui sera affiché à gauche...dans une autre ce sera un texte en Geneva 60pts bleu qui sera affiché à droite.

Je comptais donc avoir dans chaque scène un gameobject 'SceneManager' auquel serait attaché un script 'sceneSettings.cs' qui lancerait la méthode voulue:

Code : Tout sélectionner

SceneSettings SSettings = null;
//Lors d'un changement de scène:
SSettings = GameObject.Find("SceneManager").GetComponent<SceneSettings>();
SSettings.ShowHello();
...mais voilà, je ne peux avoir dans la solution qu'une seule classe 'SceneSettings' et donc un seul script nommé 'SceneSettings.cs'

J'espère que jusqu'à là j'ai réussi à me faire comprendre ;)

Ma question est donc celle-ci:
Comment puis-je accéder depuis mon 'GameManager' (statique) à un script qui porterait le même nom (puisque'il faut bien que je le type une fois pour toute) (GameObject.Find("SceneManager").GetComponent<SceneSettings>();)...mais dans des scènes différentes!?

Merci à vous de m'avoir lu jusqu'à là et éventuellement de m'aider...j'ai moi-même eu beaucoup de difficultés à décrire le plus simplement possible mon problème, donc merci à celui qui a suivi ;)

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Accéder à une fonction (au nom identique) dans chaque nouvelle scène chargée

Message par simonj » 18 Sep 2017 22:58

Hello,

- Soit tu joues sur les paramètres du SceneSettings.cs dans l'éditeur. C'est à dire que tu possèdes qu'un seul script mais que les variables de ce scripts vont changer dans les différents scènes.
- Soit tu te fais différentes classes qui hérites toutes de SceneSettings.cs. C'est à dire que tu te fais une classe SceneSettingsBleu.cs qui hérite de SceneSettings.cs et qui surcharge la fonction que tu veux dans la classe SceneSettings.cs. Et le GetComponent<SceneSettings>() devrais quand même te trouver le component même si c'est une classe fille et non pas la classe mère.

Woilà !

PS : Bien sûr les 2 solutions ne sont pas antinomique. Tu peux très bien réaliser les deux en même temps selon tes besoins ;)

Jayme65
Messages : 47
Inscription : 31 Jan 2017 00:43

Re: Accéder à une fonction (au nom identique) dans chaque nouvelle scène chargée

Message par Jayme65 » 19 Sep 2017 00:23

simonj,

Un grand merci pour ta réponse, je vais aller voir du côté de l'héritage!

Merci!! :)

Répondre

Revenir vers « (C#) CSharp »