问题是我有一个土豆类,当我通过库存使用它时,它应该使用马铃薯,只有马铃薯。相反,它将游戏中的每一个马铃薯都取下来,有没有办法让所有的马铃薯都拥有自己的代码实例呢?
public class Food : Item {
public float healthHealedOnUse;
public int uses;
}//name ect is in the Item base class
我用于库存的代码:
public void UseItem(){
if (item != null) {
if (item is Food) {
Debug.Log ("using "+item.name);
PHH.Heal (((Food)item).healthHealedOnUse);
((Food)item).uses--;
if(((Food)item).uses < 1){
ClearSlot();
}
} else {
item.Use ();
}
影响所有的土豆,而不仅仅是我点击的土豆。
添加到广告资源
public List<Item> items = new List<Item>();
public bool add(Item item){
if (items.Count >= space) {
Debug.Log ("Inventory Full");
return false;
} else {
items.Add (item);
onItemChangedCallback.Invoke ();
return true;
}
}
玩家拾取项目脚本
void PickUp(){
Debug.Log ("Picking up " + item.name+"!");
bool wasPickedUp = Inventory.instance.add (item);
//Debug.Log(wasPickedUp);
if (wasPickedUp == true) {
Destroy (gameObject);
}
将代码添加到广告资源广告位
public void AddItem(Item newItem){
item = newItem;
icon.sprite = item.icon;
icon.enabled = true;
removeButton.interactable = true;
}
我如何在库存广告位中显示商品
Inventory inventory;
public GameObject Inventoryui;
public Transform itemsParent;
InventorySlot[] slots;
void Start () {
Inventoryui.SetActive (false);
inventory = Inventory.instance;
inventory.onItemChangedCallback += UpdateUI;
slots = itemsParent.GetComponentsInChildren<InventorySlot> ();
}
public void ToggleInventory(){
Inventoryui.SetActive (!Inventoryui.activeSelf);
}
void UpdateUI(){
Debug.Log ("Updating UI");
for (int i = 0; i < slots.Length; i++) {
if (i < inventory.items.Count) {
slots [i].AddItem (inventory.items [i]);
} else {
slots [i].ClearSlot ();
}
}
}
答案 0 :(得分:1)
...将其作为可编辑物品
您的&#34;每个参考都是相同的&#34;问题
您需要:
Potato
对象,但是所有的土豆堆都是ItemStack
的一个实例,其中包含对理想化的马铃薯实例的引用。)