我刚刚开始统一编程,我不明白为什么这个 foreachloop 不起作用。对于字典中的每个元素,我希望它首先打印该项目的名称,然后根据玩家是否买得起该项目打印一条消息。由于某种原因,它在每次迭代时打印项目名称,但仅在第一次迭代时打印消息。
这是我的代码:
void Start()
{
Dictionary<string, int> itemInventory = new Dictionary<string, int>()
{
{ "Potion", 5 },
{ "Antidote", 7 },
{ "Aspirin", 1 }
};
int playerGold = 12;
foreach (KeyValuePair<string, int> kvp in itemInventory)
{
Debug.LogFormat("Item: {0} - {1}g", kvp.Key, kvp.Value);
if (kvp.Value <= playerGold)
Debug.LogFormat("You can afford this!");
else
Debug.LogFormat("Sorry, you're too broke to afford this!");
}
}
和this是打印到控制台的内容:
元素:药水 - 5g
你买得起!
元素:解毒剂 - 7g
商品:阿司匹林 - 1g
所以我只是不确定为什么它没有每次都打印消息!
最佳答案
您的屏幕截图中没有足够的信息 - 只是一个提示 - 但我相信您在控制台窗口中打开了“折叠”按钮。这会将相似的输出分组,这样您就不会一遍又一遍地收到相同调试输出的垃圾邮件。
编辑:尝试查找屏幕截图,因为我当前没有在此机器上安装 Unity,我在 Unity Answers 上发现了类似的问题,且答案相同。
来源:https://answers.unity.com/questions/1837643/debuglog-prints-only-sometimes.html
关于c# - foreach 循环仅在第一次迭代中执行所有代码,在后续迭代中选择性地执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69320683/