如何解决库存用户界面在更新金额方面表现异常
所以我有一个项目类,一个库存类和UIController脚本。当玩家在战场上越过该物品时,应该将其添加到库存中;如果他/她拥有该物品,则应将其数量增加一。
我遇到的问题是,UI上的数字是随机的,有时其他项目只是使用新的广告位而增加金额。我已经添加了上面提到的三个脚本。
public Item()
{
amount = 0;
}
public int GetItemAmount()
{
return amount;
}
public void IncreaseAmount(int amt)
{
amount += amt;
}
public void SpawnItem()
{
Instantiate(prefab);
}
public Inventory()
{
inventory = new List<Item>();
}
// Add item to inventory. if item is already in inventory,increase amount.
public void AddItem(Item item)
{
if (inventory.Count == 0)
{
inventory.Add(item);
}
else
{
for (int i = 0; i < GetInventory().Count; i++)
{
if (this.inventory[i] == item)
{
inventory[i].IncreaseAmount(1);
break;
}
else
{
inventory.Add(item);
}
break;
}
}
}
void Start()
{
player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
inventoryItems = CreateInventoryItemUI(itemSlotImage);
}
private void Update()
{
var playerItems = player.inventory.GetInventory();
for (int i = 0; i <= playerItems.Count ; i++)
{
//Debug.Log("The value of i is : " + i);
if (playerItems[i] != null)
{
inventoryItems[i].GetComponentInChildren<Image>().sprite = playerItems[i].imageIcon;
var amountUI = inventoryItems[i].transform.Find("ItemSlotAmount").GetComponent<Text>();
amountUI.gameObject.SetActive(true);
amountUI.text = playerItems[i].GetItemAmount().ToString();
Debug.Log("The items being added will be: " + amountUI.text);
inventoryItems[i].gameObject.SetActive(true);
}
}
}
我想我只是另一双眼睛。我调试并检查了增加额方法的参考,该参考仅在库存脚本中使用。
任何想法都会很有帮助。
解决方法
您正在检查添加的Item是否与列表中的对象完全相同,如同一参考文献中所述。我假设这可能不是您想要的,否则请发布代码的一部分,调用AddItem。
两个建议:
首先,将Id属性添加到Item并比较要添加的项目是否具有相同的ID,而不是比较引用。
第二,如果您使用字典而不是用于存储项目的列表,这可能会更干净,更高效。试试看!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。