Odpowiedź
Zacznę od bezpośredniej odpowiedzi na pytanie:
to działa, czy mogę zignorować błąd?
Państwo dało . Nie powinieneś , bo to znaczy, że coś idzie nie tak. Przyzwyczaiłbyś się do tego błędu, ale może on „ukryć się” lub spowodować kolejny błąd.
Obecnie masz komunikat o błędzie i nadal działa poprawnie. Odwrotnie, nie działa i nie ma (a raczej: nie rozpoznaje) informacji zwrotnej, dlaczego, jest znacznie gorzej!
Rada
Aby dowiedzieć się, skąd to się bierze, podziel to wszystko na kilka linii.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Błąd mówi tylko, w której linii to się wydarzyło. Jeśli błąd wystąpi w tym kodzie, numer linii powie Ci więcej o tym, która część poszła tutaj źle. Radzę też użyć ogólnej wersji Resources.Load
, która dałaby nam o jeden krok mniej do zmartwienia:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
Dowiedz się dlaczego
- Teraz trochę doświadczenia Unity mówi nam, że „Obiekt, który chcesz utworzyć, ma wartość zerową” jest spowodowany
Instantiate()
.
- Oznacza
prefab
to , że jest null
.
- To oznacza
Resources.Load
zwroty null
.
- Dokumentacja
Resources.Load
mówi „ Powroty aktywo na path
razie można go znaleźć w przeciwnym razie zwraca NULL. ”
- Oznacza to, że nie znajduje podanej ścieżki (ciąg, który wywołałem
resourceLocation
)
Coś jest nie tak z tą ścieżką, więc oczywistym pierwszym krokiem byłoby sprawdzenie, czym tak naprawdę jest, dzięki Debug.Log. Ponieważ „wszystko działa zgodnie z przeznaczeniem”, prawdopodobne jest, że w miejscu, w którym działa jedna wersja, zachodzi pewne powielanie, a druga daje ten błąd.
W takim przypadku dobrym pomysłem jest skorzystanie z 2-parametrowej wersji Debug.Log Debug.Log(resourceLocation, gameObject);
. Teraz, jeśli klikniesz komunikat dziennika w edytorze Unity, wybierze GameObject
skąd pochodzi.