编辑:我一直在考虑如何给予一个人;博士在这里。怎么样:Inspector正在寻找一个BaseObject。如何让检查器允许我分配派生自BaseObject的DerivedObject。
我正在尝试制作通用库存系统。我已经尝试过Brackey的库存系统,但是想要扩展它以包含除“物品”之外的东西。我希望有一个“Key”或“Weapon”类继承Item作为基础,而Brackey的Inventory有许多布尔字段,用于确定它是否能够装备或者它是否是武器。我可以这样做,我的问题是如何在编辑时创建这些项目,当我的脚本期望基类型:项目时。
从头开始我有一个Item(Fields:string ItemName),我有Key:Item(New Fields:string AuthorityLevel)
我有一个Pickup脚本,我将其作为组件应用于GameObjects。在该脚本中,我可以给它一个Item属性,当GameObject与之交互时,我可以调用Pickup.GetItem()方法。然后获取Item属性并将其添加到Inventory对象。
如何获取Item属性来保存对继承自Item的Key对象的引用? PickUp脚本的检查器只显示Item Property的“ItemName”,而不是Key Item的AuthorityLevel字段。
我有点失落。我发现在运行时很容易实现它,因为创建项目的脚本,知道要创建的特定项目,并可以将其分配给新创建的GameObject的PickUp脚本。但是在编辑时,很难告诉检查员我希望Pickup脚本保存对Key或继承自Item的任何其他对象的引用。
答案 0 :(得分:1)
我知道这已经快 7 岁了,但对于任何搜索此内容的人来说:
我认为这里没有任何实际问题,List<Item>
可以存储对从 Item 继承的任何类的引用。
因此,拥有一个类类型的数组或列表允许引用派生类的任何对象。
示例:
public class Item
{
//some attributes
}
和
public class Weapon : Item, IEquippable, IAttack //etc
{
//weapon stuff
}
只能存储在
List<Item> items = new List<Item>();
答案 1 :(得分:0)
从基类B派生出D类
class D : public B
{
//staff or nothing
}