Как сделать словарь для инициализации спрайтов?
Как переписать и использовать данный 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 - не нужны.