C# Unity库存堆垛功能不正常
我是Unity的初学者 我试图建立一个库存系统,如果你有4个木材,它不会占用4个库存空间,只有1个有数字4 当我正常得到4块木头,打开清单时,它工作正常,带有木头图标和数字4。当我使用inspector添加到公共列表时,它只是复制了第一个条目。这就是我要说的。代码如下:C# Unity库存堆垛功能不正常,c#,unity3d,C#,Unity3d,我是Unity的初学者 我试图建立一个库存系统,如果你有4个木材,它不会占用4个库存空间,只有1个有数字4 当我正常得到4块木头,打开清单时,它工作正常,带有木头图标和数字4。当我使用inspector添加到公共列表时,它只是复制了第一个条目。这就是我要说的。代码如下: public void OpenInventory() { inventoryPanel.SetActive(true); Dictionary<string, int> stuff = new D
public void OpenInventory()
{
inventoryPanel.SetActive(true);
Dictionary<string, int> stuff = new Dictionary<string, int>();
stuff = new Dictionary<string, int>();
//updating inventory slots on screen
for (int i = 0; i < inv.Count; i++)
{
if (!stuff.ContainsKey(inv[i]))
{
stuff.Add(inv[i], 1);
}
else
{
stuff[inv[i]] = stuff[inv[i]] += 1;
}
}
for (int i = 0; i < stuff.Count; i++)
{
uiSlots[i].GetChild(0).gameObject.GetComponent<Image>().sprite = Resources.Load<Sprite>("Sprites/" + inv[i]) as Sprite;
uiSlots[i].GetChild(1).GetComponent<Text>().text = stuff[inv[i]].ToString();
}
}
public void OpenInventory()
{
inventoryPanel.SetActive(真);
Dictionary stuff=新字典();
stuff=新字典();
//更新屏幕上的库存插槽
对于(整数i=0;i
在我进行更改(工作正常)之前:
现在,当我在inspector中更改库存并刷新库存屏幕时:
我真的不知道发生了什么,特别是因为如果我再做同样的事情,一切都不会改变 让我们看一下这个代码片段
for(inti=0;i
在您的例子中,stuff.Count==2
,对吗?木头和巨魔。因此,您的for
循环中的i
将迭代0,1
,这意味着inv[i]
将始终是木头!明白了吗?inv
的第一个和第二个元素都是木头,所以在你的库存中有两个木头槽就不足为奇了
以下是我的建议,请使用foreach
:
int walker=0;//表示插槽的索引。
foreach(stuff中的var项)
{
uiSlots[walker].GetChild(0.gameObject.GetComponent().sprite=Resources.Load(“Sprites/”+item.Key)作为精灵;
UISlot[walker].GetChild(1.GetComponent().text=item.Value.ToString();
沃克++;
}
foreach
可以迭代所有类型的集合。将inv
中的项目放入stuff
dict的过程也可以转换为foreach
表达式,如:
foreach(存货中的var项目)
{
如果(!stuff.ContainsKey(项目))
{
添加(第1项);
}
其他的
{
填充[项目]+;
}
}
你应该得到更多的声誉!谢谢你教我更好的编码礼仪并解决了我的问题!:D