Bonjour,
Après avoir chercher un peu partout sur internet et après avoir trituré le problème dans tous le sens,
je vous présente mon code, je ne sais ni si c'est une étourderie, ni si c'est dû au fonctionnement de Unity/C# ...
Alors le contexte :
Je récupère des données brut de ma db puis les affiches sur une page web.
Je récupère ensuite le contenu de cette page web, puis j'associe ces données à un tableau d'objet "Produit".
Tout fonctionnait à merveilles , jusqu'à que j'ai eu besoin de récupérer une de ces données via un autre script.
Au début, je me suis dit, pas de soucis, je récupère le script depuis mon nouveau script, puis accède normalement à mes fameuses données.
Je commence par faire ce que j'avais en tête dans mon nouveau script :
Quelque chose dans l'esprit... (notons que je passe ici par un getter alors que les variables membres de Produit sont publiques ... ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Datas scrDatas = GameObject.Find("panneau").GetComponent<Datas>(); Debug.Log(scrDatas.produits[4].getId());
Bref, jusque là tout vas bien, la console m'affiche le bon id... Je me dis : "parfait".
Je commence donc à faire une petite boucle :
Et là , c'est le drame :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for(int i=0; i< scrDatas.produits.Length; i++) { UnityEngine.Debug.Log(scrDatas.produits[i].getId()); }
NullReferenceException: Object reference not set to an instance of an object
Alors que tous mes ID s'affichent correctement dans la console.
Et à partir d'ici, j'ai essayé pas mal de chose, mettre mon "panneau" en variable public puis l'assigné via l'éditeur,
créer un nouvel objet pour chaque étape ( GameObject panneau, Datas script puis Produit[] prodClone ), passer par des getters.
Puis finalement pour "moins" me prendre la tête je me suis dis : "Bon bah tant pis je fais une méthode membre a Datas qui me retourne le nombre de pages".
Et là même soucis ...
Voilà voilà, donc si vous avez une idée pour m'aider à résoudre ce problème je suis preneur !
Merci d'avance !
EDIT :
Bon finalement ce n'était qu'une étourderie, le tableau.Length me retournait 8 alors qu'il n'y avait en fait que 7 élément ( de 0 à 6 )...
Après une nuit de sommeil et les idées plus clairs, tout devient plus simple
Seul point que je n'arrive pas à soulever c'est ce retour... Peut-être que lors de mes déclarations, je récupère et donc insère une ligne vide de ma page web?
Je ne vois pas pourquoi la methode .Length me retournerait le nombre d'élément +1...
Merci en tout cas !
Partager