Page 1 sur 1

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

Publié : 07 Août 2019 20:32
par Chandala
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:

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

Publié : 07 Août 2019 21:52
par Alesk
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+"]" 
;)

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

Publié : 07 Août 2019 22:18
par Chandala
... 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: