[RESOLU] ArgumentException: The Object (prefab) you want to instantiate is null. (pb dans un tuto)

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
Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

[RESOLU] ArgumentException: The Object (prefab) you want to instantiate is null. (pb dans un tuto)

Message par Chandala » 07 Août 2019 20:32

Bonjour, bonsoir à toutes et à tous ! :cote:

A peine inscrite que je vous embête déjà avec un souci que je n'arrive pas à régler depuis 4 jours :0
J'ai vérifié sur le forum ainsi que sur le net en général si quelqu'un avait déjà rencontré ce problème mais à chaque fois la situation ainsi que le code utilisé sont trop différents et/ou la résolution ne fonctionne pas, rajoute d'autres problèmes.

Pour faire simple, j'ai commencé à suivre cette série de tutos sur YT afin de créer une Visual Novel « Test » et me faire la main dessus : https://www.youtube.com/playlist?list=P ... j5NpzKedU6

Tout se passe bien jusqu'à la 5ème vidéo « Character Management » où il est question de créer un prefab contenant le sprite d'un personnage (en un seul ou en multi layers, soit pour avoir une image complète du perso soit pour avoir le corps + l'expression à part) ainsi que trois scripts (Character Management, Character et characterTesting) permettant de définir le personnage (nom, body, expression notamment) et de le faire parler à l'endroit convenu (ici la SpeechBox) avec son nom qui apparait dans la SpeakerNameBox.

Lorsque je lance le jeu, l'erreur suivante apparait :
ArgumentException: The Object you want to instantiate is null.
UnityEngine.Object.CheckNullArgument (System.Object arg, System.String message) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:381)
UnityEngine.Object.Instantiate (UnityEngine.Object original, UnityEngine.Transform parent, Boolean instantiateInWorldSpace) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:262)
UnityEngine.Object.Instantiate[GameObject] (UnityEngine.GameObject original, UnityEngine.Transform parent, Boolean worldPositionStays) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:300)
UnityEngine.Object.Instantiate[GameObject] (UnityEngine.GameObject original, UnityEngine.Transform parent) (at C:/buildslave/unity/build/Runtime/Export/UnityEngineObject.bindings.cs:295)
Character..ctor (System.String _name, Boolean enableOnStart) (at Assets/Scripts/Core/Character.cs:46)
CharacterManager.CreateCharacter (System.String characterName, Boolean enableOnStart) (at Assets/Scripts/Core/CharacterManager.cs:60)
CharacterManager.GetCharacter (System.String characterName, Boolean createCharacterIfDoesNotExist, Boolean enableCreatedCharacterOnStart) (at Assets/Scripts/Core/CharacterManager.cs:47)
characterTesting.Start () (at Assets/TEST/scripts/characterTesting.cs:12)
J'ai cru comprendre que du coup Unity ne trouvait pas le chemin jusqu'au prefab, possiblement à cause d'une erreur de frappe ou d'un emplacement erroné, pourtant mon prefab est dans le dossier Resources > Prefabs :0 (et même en le mettant directement dans le dossier « Resources » ça n'y change rien).

Le prefab et sa localisation :
Image

La ligne de code qui pose problème (la 46), script Character :
Image
(Je mets directement une image du code histoire de vous montrer les couleurs que j'obtiens, comment se fait-il qu'elles soient différentes de celles présentes dans le tuto par exemple ? :0 )

Et la proposition de résolution de MVS :
Image
(qui m'ajoute surtout + d'erreurs ensuite dont je me passerais bien ! :hehe: )

Avec ou sans espace pour le Instantiate(); le problème demeure.

Ce que j'ai testé :

J'ai été revoir la vidéo précédente où il était question de créer les panels pour la SpeechBox et la SpeakerNameBox et comme une idiote, j'ai réalisé que je les avais crées dans des GameObjects vides (d'où le manque de Rect Transform que j'avais pu rencontrer plus tôt, mais un simple rajout de Rect Transform au GameObject avait réussi à pallier le problème).

A partir de là, j'ai réécrit progressivement les trois scripts de la 5ème vidéo tout en faisant bien attention cette fois-ci de créer le clone du prefab au bon moment avant de reprendre la programmation des scripts le clone ne s'est jamais créé et le problème du prefab null est resté constant :0

Le texte du personnage ne s'affiche juste pas quand je lance le jeu, la SpeechBox et la SpeakerNameBox se ferment correctement quand j'appuie sur espace MAIS pas toujours. Parfois je rencontre cette nouvelle erreur dans le script Character :
NullReferenceException
Character.get_enabled () (at Assets/Scripts/Core/Character.cs:17)
Character.Say (System.String speech, Boolean add) (at Assets/Scripts/Core/Character.cs:27)
characterTesting.Update () (at Assets/TEST/scripts/characterTesting.cs:24)

Code : Tout sélectionner

    public bool enabled {get{ return root.gameObject.activeInHierarchy;} set{ root.gameObject.SetActive (value);}}
Et je terminerai avec ce que j'ai actuellement niveau scripts sur le Core et le Tester :
Image

Image

Voilà, navrée pour le pavé, j'espère vraiment avoir fourni tous les éléments possibles pour vous donner une idée du problème car vraiment je ne sais plus quoi faire de plus à moins de recommencer complètement tout le tuto depuis le début :triste1:

Je suis aussi désolée si jamais la console répond très clairement à mes interrogations mais je ne comprends vraiment pas ce qu'elle m'indique sur ce coup-là ^^'

En tout cas, je vous remercie d'avance pour votre attention ! :merci:
Dernière édition par Chandala le 07 Août 2019 22:19, édité 1 fois.
- Ce qu'un réverbère pense des chiens.

Avatar de l’utilisateur
Alesk
Messages : 2214
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] ArgumentException: The Object (prefab) you want to instantiate is null. (pb dans un tuto)

Message par Alesk » 07 Août 2019 21:52

Yo !

Il semblerait que ton prefab dans le dossier "Resources", soit là

Code : Tout sélectionner

"Prefabs/Character["+_name+"]"
et toi tu vas le chercher ici

Code : Tout sélectionner

"Characters/Character["+_name+"]" 
;)

Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

Re: [DB-AL] ArgumentException: The Object (prefab) you want to instantiate is null. (pb dans un tuto)

Message par Chandala » 07 Août 2019 22:18

... Mon Dieu, tout ça pour ça !! ::d J'étais sûre que ça serait un truc tout bête mais à ce point !

J'arrivais juste pas à lire que le Characters de "Characters/Character[...]" indiquait le dossier, allez savoir pourquoi je le lisais comme une écriture possible pour le nom du prefab recherché *facepalm*

AHLALALALA !

Merci beaucoup Alesk ! :coeur: Je vais ENFIN pouvoir avancer dans ce tuto grâce à ton aide ! :cote:
- Ce qu'un réverbère pense des chiens.

Répondre

Revenir vers « (C#) CSharp »