IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Unity Discussion :

erreur script variable static


Sujet :

Unity

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut erreur script variable static
    salut tout le monde

    voila j'essaye d’utiliser les variable static voici mon script


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public class CommandeMenuPrincipale : MonoBehaviour {
     
     
     
     
     
    	public GameObject Variable;
     
    	// Use this for initialization
    	void Start () {
     
     
    		Variable.GetComponent<CoroutineCanvasDisplay> ();
     
    	}
     
    	// Update is called once per frame
    	private void Update () {
     
     
     
     
     
    		if (Input.GetKeyDown(KeyCode.A)) {
     
    		Variable = CoroutineCanvasDisplay .compenentVideo.clip = CoroutineCanvasDisplay.video [0]; ;
     
     
    		}
     
     
    	}
    voici mon erreur Console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error CS0029: Cannot implicitly convert type `UnityEngine.Video.VideoClip' to `UnityEngine.GameObject'


    "CoroutineCanvasDisplay" est le nom de mon script viser pour appliquer la variable "compenentVideo" et la variable "video" qui est de type VideoClip que je veut lire quand j'appuis "KeyCode.A"

    ces variable l'a sont bien déclarer dans l'autre Script En tant que static

    est ce que vous pouvais m'aidez a résoudre cette erreur

    Et Merci D'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Le problème n'est pas du tout static ou pas, c'est litéralement la traduction de l'erreur : une variable de type UnityEngine.Video.VideoClip ne peut pas être convertie en type UnityEngine.GameObject.
    Pourquoi vouloir stocker un videoclip dans un GameObject ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    Citation Envoyé par lyokoguerier Voir le message
    ces variable l'a sont bien déclarer dans l'autre Script En tant que static
    merci d'écrire correctement en Français car la je ne comprends rien du tout à ce qui est écrit , plein de fautes d'orthographe...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    je vous remercie pour vos repense et surtout a toi Bousk

    alors je suis très désoler pour mon orthographe


    Citation Envoyé par Bousk Voir le message
    Pourquoi vouloir stocker un videoclip dans un GameObject ?
    je veut tout simplement accédez a la variable de mon premier script pour donner son exécution a partir ce script

    est ce qu'il y a une façon propre pour y accédez ??? parce-que je suis débutant en c#

    et merci d'avance

  5. #5
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Salut,

    Déjà ça fait quelque temps que j'ai pas ouvert Unity et fait du C# mais tu n'as pas un = de trop la dans ta ligne de code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable = CoroutineCanvasDisplay .compenentVideo.clip = CoroutineCanvasDisplay.video [0]; ;
    Il faut voir ce que tu as en tête mais:
    dans ton script "CoroutineCanvasDisplay" tu fais une fonction "ChargementVideoToto" pour charger la video (ou les videos besoin) et tu l'appelles dans ton CommandeMenuPrincipale dans tes lignes de codes (en ayant lié/déclaré le script biensur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (Input.GetKeyDown(KeyCode.A)) {
     
    		CoroutineCanvasDisplay.ChargementVideoToto();
     
     
    		}

    ou tout simplement si ton architecture te le permets, tu fais tout directement dans ton CommandeMenuPrincipale sans besoin d'appeler un autre script

    TontonNico
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    je te remercie beaucoup pour ton aide

    alors j'ai le même souci toujours cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error CS0029: Cannot implicitly convert type `UnityEngine.Video.VideoClip' to `UnityEngine.GameObject'
    mais par contre quand je vire ma variable dans ma ligne l'erreur disparait mais je peut pas lancer ma Ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CoroutineCanvasDisplay .compenentVideo.clip = CoroutineCanvasDisplay.video [0];
    et j'ai cette erreur console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NullReferenceException: Object reference not set to an instance of an object
    CoroutineCanvasDisplay.ChargementVideoToto () (at Assets/My Script/CoroutineCanvasDisplay.cs:48)
    CommandeMenuPrincipale.Update () (at Assets/My Script/CommandeMenuPrincipale.cs:56)
    et quand j'ajoute ma variable la première erreur revient

    donc je tourne en rond

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable = gameObject.GetComponent<CoroutineCanvasDisplay> ();

    voila mon test de fonction du premier script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void ChargementVideoToto (){
     
    		compenentVideo.clip = video [1]; 
     
    	}
    et voici le Deuxième qui lance cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public GameObject Variable ;
     
    void Start () {
     
     
                    Variable = CoroutineCanvasDisplay .compenentVideo.clip = CoroutineCanvasDisplay.video [0];
     
    	}
     
     
    		if (Input.GetKeyDown(KeyCode.A)) {
     
    		  CoroutineCanvasDisplay.ChargementVideoToto ();
    		}
    ca reste toujours le même souci

    est ce qu'il y a une solution a ce problème

    et merci d'avance

  7. #7
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Si tu as fait ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void ChargementVideoToto (){
     
    		compenentVideo.clip = video [1]; 
     
    	}
    d'ailleurs au passage je n'ai jamais utilisé les videos mais vu que tu charges la video, il ne faudrait pas faire un .play sur le videoplayer ou quelque part pour lire le clip que tu as chargé? ou ça se lance tout seul quand tu charges?

    et que tu call cette fonction de ton autre script quand tu appuies sur A (qui s'occupe donc de charger et lire la vidéo), à quoi te sert ta ligne de code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Variable = CoroutineCanvasDisplay .compenentVideo.clip = CoroutineCanvasDisplay.video [0];
    Quelle est l'utilité de cette "variable" et de cette déclaration/affectation?


    Sinon la question est tout bête mais pour une première étape, tu as réussis à faire un script simple ou tu lances ta vidéo? tu la stop? tu la mets en pause? tu maitrises tout ça? Du genre un simple script avec des vidéos attachées dessus:

    Si j'appuie sur A, ça charge et lance la vidéo 1
    Si j'appuie sur B, ça charge et lance la vidéo 2
    Si j'appuie sur espace: si un clip est en lecture dans mon lecteur alors je mets pause sinon si le clip était déjà en pause alors je continue et si j'avais aucun clip de charger ou une erreur alors ça me l'indique dans la console
    Si j'appuie sur N, si un clip est en lecture alors ça le relance depuis le début

    Avant de vouloir faire des call ou une coroutine le mieux est déjà de bien explorer et de maitriser les aspects de base

    TontonNico
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  8. #8
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    je te remercie beaucoup pour ton aide

    ah je sais faire un coroutine mais il s'agit d'un menu de sélection et la coroutine va se terminer (ce que je ne veut pas)

    pour ce qui est de touche "A" "B" etc... je veut me servir de la même touche La Touche "A"

    (pour lancer cette vidéo depuis mon premier script) = mon system actuelle de mon jeux ne me permet pas)

    c'est que j'apprent bien avec vous Le "call" c'est nouveaux pour moi peut-tu me donner un exemple pour cette methode ??? de mon cas actuelle ???

    et merci d'avance

  9. #9
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Le "call" est juste le fait d'appeler une void ou un coroutine, pas de soucis

    Ma remarque sur le fait de tester avec les touches A,B,C, mettre pause, chargez une autre vidéo etc va surtout dans le sens ou une fois que l'on maitrise bien une fonction on peut voir plus facilement ou se situe le soucis dans les autres script.
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  10. #10
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    je vous remercie pour vos repense

    alors j'ai fait le "call" mais ca reste toujours le même problème

    voici mes script

    Le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public static VideoPlayer compenentVideo ; 
    	public static VideoClip [] video ;
     
    void Awake(){
     
     
    		compenentVideo = GetComponent<VideoPlayer>();
     
    }
     
    void Start () {
     
    		compenentVideo.clip = video [0]; 
     
     
     
    		}
     
    public static void  ChargementVideoToto (){
     
    		compenentVideo.clip  = video [1];
     
    	}
    Le dexieme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public CoroutineCanvasDisplay _sriptA ;
     
    void Start () {
    		_sriptA = GetComponent<CoroutineCanvasDisplay> ();
    }
     
    if (Input.GetKeyDown(KeyCode.A)) {
     
    		  CoroutineCanvasDisplay.ChargementVideoToto ();
    		}
    voici les erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NullReferenceException: Object reference not set to an instance of an object
    CoroutineCanvasDisplay.Start () (at Assets/My Script/CoroutineCanvasDisplay.cs:37)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NullReferenceException: Object reference not set to an instance of an object
    CoroutineCanvasDisplay.ChargementVideoToto () (at Assets/My Script/CoroutineCanvasDisplay.cs:51)
    CommandeMenuPrincipale.Update () (at Assets/My Script/CommandeMenuPrincipale.cs:57)
    j'ai remarque que la variable de "call" qui est donc mon 1ere script "CoroutineCanvasDisplay" que j'avais spécifier après le lancement du jeux se vide de son contenu

    est ce que vous pouver me faire le correctif sur mes script pour maitriser cette syntax ???

    et j'ai déjà utiliser ma touche "A" pour charger ma 1ere vidéo est ce que le bug viens de l'a


    et merci d'avance

  11. #11
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Vu les messages d'erreur je dirais que tes échoues, tu as bien tout qui sont liés à tes gameobjets?

    et surtout dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (Input.GetKeyDown(KeyCode.A)) {
     
    		  CoroutineCanvasDisplay.ChargementVideoToto ();
    		}

    Et a quoi fait référence le CoroutineCanvasDisplay? tu as rien de déclaré de ce nom la si je ne dis pas de bêtise

    Je suis têtu et je vais surement me répéter mais si tu mets tout sur un seul gameobjet avec un seul script, tu arrives à faire ce que tu veux sans bug? c'est la première étape

    TontonNico
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  12. #12
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    Genial comme solution bravo je vous félicite

    Le Problème est résolut

    Après avoirs essayer de lancer ma fonction "ChargementVideoToto ();" depuis le premier script

    j'ai constater que mes variable ne sont initialiser sous "GetComponent" parce-que tout Simplement parce-que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static VideoPlayer compenentVideo ; 
    	public static VideoClip [] video ;`
     
    // Il faut pas les mettre en  "static" 
     
    public VideoPlayer compenentVideo ; 
    public  VideoClip [] video ;`
     
    // et comme ca marche parfaitement
    je ne sais pas pourquoi tu m'a fait pas ce correctif mais bon ca marche maintenant et en plus le "call" du deuxième script marche aussi

    une petite question de curiosité est ce que seul le videoplayer qui n'est donc pas compatible avec variable static ???


    et tout cela grâce pour votre aide et tes conseils


    je vous remercie beaucoup

  13. #13
    Membre expérimenté Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    Septembre 2017
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 398
    Points : 1 320
    Points
    1 320
    Par défaut
    Pour la question sur le static aucune idée désolé ^^
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  14. #14
    Nouveau membre du Club
    Inscrit en
    Août 2013
    Messages
    202
    Détails du profil
    Informations forums :
    Inscription : Août 2013
    Messages : 202
    Points : 27
    Points
    27
    Par défaut
    Je vous remercie pour ta franchise

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/08/2005, 12h33
  2. [VB.NET] Erreur script client
    Par Sadneth dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/03/2005, 08h33
  3. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  4. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36
  5. Variable static avec thread
    Par oxor3 dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 27/08/2004, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo