所以我正在做一个游戏,我目前正在处理库存系统,我创建了一个Item和一个Inventory类,我比较了Inventory类中物品的一些属性,当我试图访问Item类中的ID字符串时,我得到了一个stackoverflow错误,这里是inventory和item类:
public class item
{
public string id { get; set; }
public int amount;
public int stacksize;
}
public class inventory
{
public bool open = false;
item[] items = new item[43];
//first 30 inv
//next 5 hotbar
//next 4 armor
//next 4 equipment
public GameObject invScreen;
public void printInv()
{
foreach (item n in items)
{
PlayerController.print(n.id + " | " + n.amount);
}
}
public void addItem(item add)
{
int i = 0;
foreach(item x in items)
{
item f = x;
if (f.id == add.id)
{
if (add.amount + f.amount <= f.stacksize)
{
items[i].amount += add.amount;
f.amount = 0;
}
else
{
f.amount = (add.amount + f.amount) - f.stacksize;
}
}
i++;
}
i = 0;
foreach(item x in items)
{
item f = x;
if (f.id == "filler")
{
if (add.amount + f.amount <= f.stacksize)
{
items[i].amount += add.amount;
f.amount = 0;
}
else
{
f.amount = (add.amount + f.amount) - f.stacksize;
addItem(f);
}
}
i++;
}
}
public void swap(int item1, int item2)
{
item x = items[item1];
item y = items[item2];
items[item1] = y;
items[item2] = x;
}
public void init()
{
int i = 0;
foreach(item v in items)
{
item e = new item();
e.stacksize = 1;
e.amount = 1;
e.id = "filler";
items[i] = e;
i++;
}
}
}
我知道我的代码可能没有优化,也没有组织,所以很抱歉。
我试着搜索可能导致无限循环的代码,但我没有找到任何东西,所以这就是为什么我在这里。
1条答案
按热度按时间w46czmvw1#
好的,我已经解决了,谢谢你,不需要更多的答案:D