Répondre
Permettez-moi de commencer par répondre directement à votre question:
cela fonctionne, puis-je ignorer l'erreur?
Tu pourrais . Vous ne devriez pas, car cela signifie que quelque chose ne va pas. Vous vous habitueriez à cette erreur, mais cela pourrait "se cacher" ou provoquer une autre erreur.
Actuellement, vous avez un message d'erreur et cela fonctionne toujours correctement. Inversement, cela ne fonctionne pas et n'a pas (ou plutôt: ne reconnaît pas) de rétroaction pourquoi, c'est bien pire!
Conseil
Pour savoir d'où cela vient, divisez le tout en plusieurs lignes.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Une erreur vous indique uniquement à quelle ligne cela s'est produit. Si l'erreur se produit dans ce code, le numéro de ligne vous en dira plus sur la partie qui a mal tourné ici. De plus, je vous conseille d'utiliser la version générique de Resources.Load
, qui nous donnerait en fait une étape de moins à craindre:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
Découvrir pourquoi
- Maintenant, un peu d'expérience Unity nous dit que «l'objet que vous souhaitez instancier est nul» est provoqué par
Instantiate()
.
- Donc, cela signifie que
prefab
c'est null
.
- Cela signifie donc des
Resources.Load
retours null
.
- La documentation de
Resources.Load
indique " Renvoie l'actif à path
s'il peut être trouvé sinon renvoie null. "
- Cela signifie donc qu'il ne trouve pas le chemin donné (la chaîne que j'ai appelée
resourceLocation
)
Quelque chose ne va pas avec ce chemin, donc la première étape évidente serait de voir ce qu'il finit par être, avec Debug.Log. Comme "tout fonctionne comme prévu", il est probable qu'il y ait duplication là où une version fonctionne et l'autre vous donne cette erreur.
Dans ce cas, c'est une bonne idée d'utiliser la version à 2 paramètres de Debug.Log Debug.Log(resourceLocation, gameObject);
. Maintenant, si vous cliquez sur le message du journal dans l'éditeur Unity, il sélectionnera d' GameObject
où il vient.