gpt4 book ai didi

c# - 我可以减少这些代码行吗让双键按下在两个 if/else if 选项之间切换

转载 作者:行者123 更新时间:2023-12-04 10:53:51 24 4
gpt4 key购买 nike

我想将其减少到尽可能少的代码行。

这在 Unity 中使用 C# 代码,但问题更多是关于基本重构。还没有计时器,我只是想写代码打印计时器开始/计时器停止到 Unity 控制台。

void Update()
{
pressSpacebar();
}

void pressSpacebar()
{
if (Input.GetKeyDown("space"))
{
if(!timerIsRunning)
{
StartTimer();
}
else if (timerIsRunning)
{
StopTimer();
}
}
}

bool timerIsRunning;

void StartTimer()
{
timerIsRunning = true;
print("Timer Running");
//to check if bool changed (and not just the text)
print(timerIsRunning);
}

void StopTimer()
{
timerIsRunning = false;
print("Timer Stopped");
print(timerIsRunning);

}

最佳答案

好的,所以对于初学者来说,我会删除 Update()方法,因为它只调用 pressSpacebar()这是毫无意义的。直接在任何地方调用它Update()需要。
另外,我删除了 else if因为它不需要。要么在 if 语句中返回 true 然后 break或者没有。删除代码行,不确定它在技术上是否值得。最后,因为您的其他方法在进行重大更改方面没有做太多事情,所以我将它们移到了您的 pressSpaceBar() 中。方法,假设您不需要其他 StartTimer()EndTimer()代码中的其他地方。在我的示例中,我将两种方法替换为一种可以交换并有效执行相同操作的方法。

选项 1:方法 StartTimer() 和 EndTimer() 其他地方未使用。

    void pressSpacebar()
{
if (Input.GetKeyDown("space"))
{
//Source: @Enigmativity
//Sets by using the not operator. Acts as a switch.
timerIsRunning = !timerIsRunning;
print(timerIsRunning);
}
}

选项 2:方法 StartTimer() 和 EndTimer 在别处使用。
void pressSpacebar()
{
if (Input.GetKeyDown("space"))
{
TimerManager();
}
}


//INFO: Replaced startTimer() & stopTimer() with this to switch.
void TimerManager()
{
//Source: @Enigmativity
//Sets by using the not operator. Acts as a switch.
timerIsRunning = !timerIsRunning;
print(timerIsRunning);
}

关于c# - 我可以减少这些代码行吗让双键按下在两个 if/else if 选项之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59329160/

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