Как сделать словарь для инициализации спрайтов?

Как переписать и использовать данный GetSprite() под Dictionary<ItemType, Sprite>, чтобы не использовать отдельное поле под каждый спрайт:

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;
    }
}

И данный класс со спрайтами тоже:

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;

}

Ответы (1 шт):

Автор решения: aepot
public class ItemAssets : MonoBehaviour
{
    public static ItemAssets Instance { get; private set; }

    private void Awake()
    {   
         Instance = this;
    }

    public Transform pfItemWorld;

    public Dictionary<string, Sprite> Sprites = new Dictionary<string, Sprite>();   
}

Добавить или обновить элемент

ItemAssets.Instance.Sprites["Apple"] = ...

Получить элемент

Sprite apple = ItemAssets.Instance.Sprites["Apple"];

Как вы уже поняли, метод GetSprite() и энумератор ItemType - не нужны.

→ Ссылка