c# - foreach 循环仅在第一次迭代中执行所有代码,在后续迭代中选择性地执行代码

标签 c# unity-game-engine

我刚刚开始统一编程,我不明白为什么这个 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 上发现了类似的问题,且答案相同。

enter image description here

来源:https://answers.unity.com/questions/1837643/debuglog-prints-only-sometimes.html

关于c# - foreach 循环仅在第一次迭代中执行所有代码,在后续迭代中选择性地执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69320683/

相关文章:

c# - 统一 : Handling inheritance with JSONUtility. ToJSON

unity-game-engine - Hololens:如何渲染元素仅在 AR 中可见,但在混合现实捕获中不可见

c# - linq 作为列名的数据集问题

c# - C# 生成的 CSV 中出现奇怪的换行符

c# - 这个测试名称是不是有点过头了

c# - 如何将消息反序列化为强类型对象,然后为该消息动态调用运行时分配的处理程序

c# - Unity,编辑器时间脚本,在游戏对象上添加到场景事件

c# - 如何将游戏对象移动到具有特定标签的随机对象

xcode - 可接受的内存泄漏量

c# - 如何在 C# 中取消 CellEnter/CellLeave 事件?