[RESOLU] [DB-AL] Accéder à un script depuis un script du StandardAssets

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
EdLooping
Messages : 49
Inscription : 07 Juin 2017 01:53

[RESOLU] [DB-AL] Accéder à un script depuis un script du StandardAssets

Message par EdLooping » 25 Juil 2017 16:51

Bonjour,
J'ai une scène où j'ai le ThirdPersonCharacter du StandardAssets.
J'ai fais un panneau de commandes dans mes options pour que le joueur puisse changer les touches.
J'ai créé un Empty qui me sert de Controller pour tout mon jeu.
Le soucis que j'ai c'est que je ne sais pas comment accéder au script de mon Controller depuis le script du ThirdPersonCharacter.

Je sais accéder à un script depuis un autre :

Code : Tout sélectionner


    private GameObject Controller;    
    private CommandesController CommandesControllerScript;
                
    void Start () {
        
        Controller = GameObject.FindWithTag("TagController");        
        CommandesControllerScript = Controller.GetComponent<CommandesController>();
                         
        }
        
        
Je sais également accéder à un script du StandardAssets depuis le script de mon controller en ajoutant devant le namespace :

Code : Tout sélectionner


    private GameObject Character;    
    private UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl ThirdPersonUserControlScript;
                    
    void Start () {
        
        Character = GameObject.FindWithTag("TagCharacter");        
        ThirdPersonUserControlScript= Character .GetComponent<UnityStandardAssets.Characters.ThirdPerson.ThirdPersonUserControl>();
                        
        }        
                
Mais je ne sais pas comment accéder au script de mon controller depuis le script du ThirdPersonCharacter.
Mon controller n'a pas de namespace particulier. Comment y accéder ? Merci
Dernière édition par EdLooping le 25 Juil 2017 18:11, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB-AL] Accéder à un script depuis un script du StandardAssets

Message par boubouk50 » 25 Juil 2017 17:16

Hum, si le script est attaché à ton GameObject, il te suffit de donner le nom exact entre les < >, pas besoin du nameSpace.
S'il ne le trouve pas, c'est que le script n'est pas attaché au gameObject tagué ou bien que tu vas chercher le mauvais gameObject.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

EdLooping
Messages : 49
Inscription : 07 Juin 2017 01:53

Re: [DB-AL] Accéder à un script depuis un script du StandardAssets

Message par EdLooping » 25 Juil 2017 17:26

Non ça marche pas c'est justement le problème.
Si je mets le code suivant dans un script que je créé ça marche, mais si je le mets dans un script du Standard Asset il va pas me le retrouver :

Code : Tout sélectionner


private GameObject Controller;
private CommandesController CommandesControllerScript;

void Start () {

Character = GameObject.FindWithTag("TagController");
CommandesControllerScript = Controller.GetComponent<CommandesController>(); } 

J'ai pas fait d'erreur d'orhtographe ou d'assignement.

EdLooping
Messages : 49
Inscription : 07 Juin 2017 01:53

Re: [DB-AL] Accéder à un script depuis un script du StandardAssets

Message par EdLooping » 25 Juil 2017 17:33

J'ai lu qu'il fallait rajouter "UnityStandardAssets.ImageEffects".
J'ai essayé de le mettre au début de mon script :

Code : Tout sélectionner


using UnityStandardAssets.ImageEffects

Ou entre les <> de mon Component

Code : Tout sélectionner


Controller.GetComponent<UnityStandardAssets.ImageEffects.CommandesController>()

Mais ça ne marche pas non plus, il ne connait pas "ImageEffects".

J'ai suivi ce que dise les liens suivant et rien ne marche :
http://answers.unity3d.com/questions/86 ... ndard.html
http://answers.unity3d.com/questions/95 ... ets-c.html

EdLooping
Messages : 49
Inscription : 07 Juin 2017 01:53

Re: [DB-AL] Accéder à un script depuis un script du StandardAssets

Message par EdLooping » 25 Juil 2017 18:10

Bon j'ai réussi.
En fait ça vient du fait que les scripts du StandardAsset sont compilés en premier.

J'explique. Si on a deux scripts A et B. Le script A et accessible depuis le B que si celui-ci est compilé avant.
Or les scripts du StandarsAsset sont compilés en premier.
Pour résoudre ce problème il y a 3 solutions :

1. Mettre les scripts que vous créez dans le dossier du Standard Asset. Ainsi votre script sera compilé en même temps que ceux du StandardAsset et seront donc accessibles depuis ces derniers.

2. Changer le nom du dossier du StandardAsset. Ainsi Unity ne reconnaitra plus le dossier du StandardAsset et ne le compilera pas en premier mais en même temps que vos autres scripts.

3. Mettre le dossier du StandardAsset dans un autre dossier. C'est ce que j'ai fait. En général mes assets je les mets dans un dossier "Asset" ou "Package". Même principe que la solution 2.

Source :
https://stackoverflow.com/questions/362 ... controller
https://forum.unity3d.com/threads/c-scr ... der.30231/

Répondre

Revenir vers « (C#) CSharp »