Responder
Permítanme comenzar respondiendo su pregunta directamente:
funciona, ¿puedo ignorar el error?
Usted podría . No deberías , porque significa que algo va mal. Te acostumbrarías a este error, pero podría "esconderse" o causar otro error.
Actualmente tiene un mensaje de error y aún funciona correctamente. ¡Al revés, no funciona y no tiene (o más bien: no reconoce) comentarios por qué, es mucho peor!
Consejo
Para saber de dónde viene esto, divide todo esto en varias líneas.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Un error solo te dice en qué línea sucedió. Si el error ocurre en este código, el número de línea le informará más sobre qué parte salió mal aquí. Además, recomendaría usar la versión genérica de Resources.Load
, que en realidad nos daría un paso menos de qué preocuparnos:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
Averiguando por qué
- Ahora, un poco de experiencia de Unity nos dice que "El Objeto que quieres instanciar es nulo" es causado por
Instantiate()
.
- Entonces, eso significa
prefab
es null
.
- Entonces eso significa
Resources.Load
devoluciones null
.
- La documentación de
Resources.Load
dice " Devuelve el activo en path
si se puede encontrar, de lo contrario devuelve nulo " .
- Eso significa que no encuentra la ruta dada (la cadena que llamé
resourceLocation
)
Algo está mal con este camino, por lo que el primer paso obvio sería ver lo que realmente termina siendo, con Debug.Log. Como "todo funciona según lo previsto", es probable que haya alguna duplicación donde una versión funciona y la otra le da este error.
En ese caso, es una buena idea usar la versión de 2 parámetros de Debug.Log Debug.Log(resourceLocation, gameObject);
. Ahora, si hace clic en el mensaje de registro en el editor de Unity, seleccionará de GameObject
dónde vino.