Risposta
Vorrei iniziare rispondendo direttamente alla tua domanda:
funziona, posso ignorare l'errore?
Si potrebbe . Non dovresti , perché significa che qualcosa non va. Ci si abituerebbe a questo errore, ma potrebbe "nascondere" o causare un altro errore.
Attualmente hai un messaggio di errore e funziona ancora correttamente. Al contrario, non funziona e non ha (o meglio: non riconosce) un feedback perché, è molto peggio!
Consigli
Per scoprire da dove proviene, dividi tutto in più righe.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Un errore ti dice solo a quale linea è successo. Se l'errore si verifica in questo codice, il numero di riga ti dirà di più su quale parte è andata storta qui. Inoltre, consiglierei di utilizzare la versione generica di Resources.Load, che in realtà ci darebbe un passo in meno di cui preoccuparsi:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
Scoprendo perché
- Ora, un po 'di esperienza Unity ci dice che "L'oggetto che si desidera istanziare è nullo" è causato da
Instantiate().
- Quindi, questo significa che lo
prefabè null.
- Ciò significa che
Resources.Loadritorna null.
- La documentazione per
Resources.Load dice " Restituisce la risorsa pathse può essere trovata altrimenti restituisce null. "
- Ciò significa che non trova il percorso specificato (la stringa che ho chiamato
resourceLocation)
Qualcosa non va in questo percorso, quindi l'ovvio primo passo sarebbe quello di vedere che cosa effettivamente finisce con Debug.Log. Dato che "tutto funziona come previsto", è probabile che ci siano dei duplicati in cui una versione funziona e l'altra ti dà questo errore.
In tal caso, è consigliabile utilizzare la versione con 2 parametri di Debug.Log Debug.Log(resourceLocation, gameObject);. Ora, se fai clic sul messaggio di registro nell'editor Unity, selezionerà la GameObjectprovenienza.