gpt4 book ai didi

c# - 我在 C# 中有一个 for 循环我只想运行一次

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:21 25 4
gpt4 key购买 nike

我有一个 for 循环,在遍历数组时只需要调用一次。

    public void ChangeClassButton()
{
Debug.Log("Changed Class");
for (int i = 0; i < activeDrum.Length && !changeClassBool; i++)
{
Debug.Log(activeDrum[i]);
changeClassText.text = activeDrum[i];
OscMessage oscM = Osc.StringToOscMessage("/changeClass" + i);
Debug.Log(Osc.OscMessageToString(oscM));
oscHandler.Send(oscM);
changeClassBool = true;
if (i >= activeDrum.Length)
{
i = 0;
}
}
}

我有一个单独的函数,在设定的时间后将 changeClassBool 设置回 false。

我试图在按下按钮时进行迭代,但当我在游戏中按下按钮时,它只是遍历整个数组。对我做错了什么有什么建议吗?

最佳答案

for 循环可能不是解决此问题的最佳方法。在调用方法时只增加值怎么样?

private int count = 0;

public void ChangeClassButton()
{
Debug.Log("Skiftede klasse");
if(!changeClassBool){
{
Debug.Log(activeDrum[count]);
changeClassText.text = activeDrum[count];
OscMessage oscM = Osc.StringToOscMessage("/changeClass" + count);
Debug.Log(Osc.OscMessageToString(oscM));
oscHandler.Send(oscM);
changeClassBool = true;
if (count >= activeDrum.Length)
{
count = 0;
} else{
count++;
}
}
}

另外,至于为什么它现在不起作用。您提到您在一定时间后将 changeClassBool 设置为 false。但是这个循环是立即运行的,这意味着它会在一帧内完成,无论循环有多大。如果您想在循环中等待,可以将其设置为 coroutine并添加一个 yield return null 让它等待一帧。

但是,如果您唯一想做的就是每次单击按钮时都执行此操作,则仅使用计数器而不是循环会更简单且更稳定。

关于c# - 我在 C# 中有一个 for 循环我只想运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com