如何从派生 class 调用构造函数

How to call constructor from derived class

假设我有一个 Item 基础 class

public class Item
{
    var SomeVariable;
    var OtherVariable;
    
    public Item(some parameter)
    {

    }
}

和派生的 class 称为 Gun

public class Gun : Item
{
    var SomeVariable;
    public Gun(Some Parameter)
    {

    }

}

Item class 构造函数在 Inventory 中表示为实际项目。就像当玩家拿起 GameObject 并附上 Item class 时,它将使用方法 Add Item

添加到 Inventory
public bool AddItem(Item _item, int _amount)
{
    //add Item to Inventory object
}

如您所见,方法 Add Item 使用 Item 作为参数,因此当玩家 Gun GameObject 拾取时,它不会添加到 inventory 我需要更改系统的工作方式还是可以修复它?

以这种方式从派生的 class 调用基本构造函数:

public class Gun : Item
{
    var SomeVariable;
    public Gun(Some Parameter) : base(Some Parameter)
    {
    }
}

但不清楚实际问题是什么,因为您不需要在 AddItem 中初始化传递的 Item。只需将其放入您的库存实例即可。假设你有它的一个实例:

public bool AddItem(Item item, int amount)
{
    inventory.Add(item, amount); // just guessing
}

So when a Gun GameObject pickup by player it won't added to inventory do I need to change how the system work or it can be fixed ?

我想我现在理解你的误会了。由于 Gun 实际上是一个 Item,您可以使用 Gun 实例调用 AddItem。这就是继承的优点之一。

AddItem(new Gun(Some Parameter), 1);