motkot
@motkot
Программирование C#.

Как сделать добавление предмета, не зная какой это точно класс?

Есть несколько классов, обозначающие что это за предмет, например:

using UnityEngine;

[CreateAssetMenu(fileName = "Weapon name", menuName = "Items/Weapon")]
public class Weapon : ScriptableObject
{
    public ItemProp MainProp;

    public int Damage;
    public int Firerate;

    public int Strength;
}

ИЛИ

using UnityEngine;

[CreateAssetMenu(fileName = "Resource name", menuName = "Items/Resource")]
public class CraftResources : ScriptableObject
{
    public ItemProp MainProp;
}


Есть класс Items:

public class Items 
{
    public static List<Weapon> Weapons = new List<Weapon>();
    public static List<CraftResources> Resources = new List<CraftResources>();
    public static List<Tool> Tools = new List<Tool>();
    public static List<Armor> Armors = new List<Armor>();

    public static int MaxItemsCount;

    public void AddItem()
    {
    }
}


Я добавил метод AddItem и у меня проблема, как добавить предмет в нужную категорию? Я вообще думал сначало вместо кучи классов создать один Item, но как тогда в Scriptable object его настраивать, да и в лист такой не запихнешь. Может мне как то по умному изменить?
  • Вопрос задан
  • 35 просмотров
Пригласить эксперта
Ответы на вопрос 1
ReyGrau
@ReyGrau
Junior Unity Developer
Сделай базовый класс наследованный от ScriptableObject, от него наследуй предметы, потом в классе Items используй switch:
switch (Базов класс предмета)
{
   case Weapon weapon:
      Weapons.Add(weapon); 
      break;
   case CraftResources craftResources :
      Resources.Add(craftResources);
      break;
   ...
}

Может есть способ и лучше, но я сам только джун, так что вот так:)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы