Баг связанный с NullReferenceException в unity
При написании скрипта для инвентаря, когда я запускаю сцену, начинает появляться ошибка NullReferenceException из-за того, что "якобы" юнити не может вернуть спрайт предмета, и поэтому персонаж не может двигаться. Я думаю это баг, т.к при перезапуске скрипта на ItemAssets всё начинает работать и персонаж двигается (https://youtu.be/1Y6KPayRaRQ записал видео, чтобы понятно было). Я просто не понимаю, что делать, т.к это очень мешает.
Ошибка вылезает в этой части кода:
public Sprite GetSprite()
{
switch (itemType)
{
default:
case ItemType.Apple:
return ItemAssets.Instance.AppleSprite;
case ItemType.Bacon:
return ItemAssets.Instance.BaconSprite;
case ItemType.Bread:;
return ItemAssets.Instance.BreadSprite;
case ItemType.Fish:
return ItemAssets.Instance.FishSprite;
case ItemType.Steak:
return ItemAssets.Instance.SteakSprite;
case ItemType.Onion:
return ItemAssets.Instance.OnionSprite;
}
}
А это скрипт, который висит на объекте ItemAssets, и который приходится перезапускать:
public class ItemAssets : MonoBehaviour
{
public static ItemAssets Instance { get; private set; }
private void Awake()
{
Instance = this;
}
public Transform pfItemWorld;
public Sprite AppleSprite;
public Sprite BaconSprite;
public Sprite BreadSprite;
public Sprite FishSprite;
public Sprite SteakSprite;
public Sprite OnionSprite;
}
UPD:.

Ответы (1 шт):
можно написать дебаг.лог() и на эвейке и на гетCпрайт. И практически наверняка увидишь что при нуллРефЕксепшн гетспрайт вызывается ДО евейка.
aepot в коментариях все правильно написал - реализовать через перетаскивание спрайтов в инспектор это не очень хорошая практика. Это допустимо, но нежелательно ибо порождает много проблем. Например такие как здесь.
Но, даже, если настроить сейчас что бы все работало, во время разработки будет периодиески что-то отваливаться с таким подходом. Желательно спрайты/префабы доставать кодом из ассетов - тогда проблем будет значительно меньше.