如何从派生 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);
假设我有一个 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);