创建变量以存储从同一类继承的类的对象

时间:2020-07-29 05:07:24

标签: c# class inheritance

我正在尝试创建一个可以存储不同类型物品的库存。

如果我仅对每个图块使用一个变量作为库存,并且不尝试将每种类型的物品归为一类,是否有办法解决此问题?

这是我已经开始做的一些代码:

瓷砖类:

public class Tile
{
    public Item inventory;
}

物品类别:

using UnityEngine;

public class Item
{
    public itemType type;
}

public enum itemType
{
    crop,
    tool,
    cooker,
    dish
}

感谢您的关注。

编辑:这是通过使用polymorphysm解决的,将派生的类强制转换为基类。

2 个答案:

答案 0 :(得分:1)

您可以创建所有项目都实现的界面。这样,您可以让许多类实现接口并将其实例设置为Tile类中的type变量

IItem接口

public interface IItem
{
    public itemType type {get; set;}
}

Item类实现接口

public class Item : IItem
{
    public itemType type {get; set;}
}

瓷砖课

using UnityEngine;

public class Tile
{

    public List<itemType> allowedItems;

    public IItem inventory;

    public virtual void interact (IItem item, PlayerInteraction player)
    {
        foreach (itemType allowedItem in allowedItems)
        {
            if (allowedItem != item.type)
            {
                continue;
            }
            if (inventory == null && item != null)
            {
                player.setItem(inventory)
                inventory = item;

            }
        }
    }
}

答案 1 :(得分:0)

您可以将基类或接口存储在Text(test_str, style: TextStyle(fontFamily: 'Phoenician'), 中,也可以将通用方法添加到基类型/接口中,也可以仅将其pattern match添加到基类/接口中。

以下代码基于my discussion with OP

Tile