2017-06-12 68 views
0

我的代码存在问题,我找不到解决方案。我有我的代码三个变量:C#使用一个值检查两个值,每帧更改一次

  • FoodNeeded是需要
  • FoodAddedPerMinute是食物的每分钟增加
  • 人口人口量量的食物量

FoodNeeded变量正在改变每一帧。这取决于人口,但是,该变量将始终保持高于0

如果FoodAddedPerMinute变量是大于0,它应该这样做:

Food_Added_PerMinute = Food_Added_PerMinute - Food_Needed * Time.deltaTime/60; 

但是,如果FoodAddedPerMinute是更大然后0,它应该这样做:

Food_Added_PerMinute = Food_Added_PerMinute + Food_Needed * Time.deltaTime/60; 

但是,如果它是0呢?那么我试过> =和< =但它保持循环并保持在零(或一个大量的十进制数)。

编辑: 我对这两个计算整个的一点是,因为如果FoodAddedPerMinute不大于0,应该积少成多。因为如果你做例如-2 + 1,你会得到-1。但如果我使用-2 - 1,我得到-3,这是不正确的。

如果foodNeeded是增长,在FoodAddedPerMinute应该减少,如果foodNeeded是减少,应该增长。但是,foodNeeded不能小于零。原因是因为我使用这个:Food_Needed = PlanetPopulation/100000;

这是循环问题

enter image description here

这种情况发生时的数量是大于0(if语句) enter image description here

当数是这种情况不大于0(else语句) enter image description here

+5

在这两种情况下你做同样的计算?这是故意的吗?你可以发布循环代码吗?到目前为止还不清楚 –

+0

您在两种情况下都发布了相同的代码两次。 “ – HimBromBeere

+0

”但是,如果它是0呢?“你真的想如何处理这种情况?没做什么?或者我们应该为您决定(没有任何背景)如何处理这种情况?=! –

回答

2
if(Food_Added_PerMinute > 0) 
{ 
    Food_Added_PerMinute = Food_Added_PerMinute - Food_Needed * Time.deltaTime/60; 
} 
else 
{ 
    Food_Added_PerMinute = Food_Added_PerMinute + Food_Needed * Time.deltaTime/60; 
} 

这算什么,你期待

+0

是的,这就是我在我的代码 –

+0

中所做的事情,你可以发布你的if语句 –

+0

@RaulFernandez,你是否已经用调试器遍历了你的代码?它应该给你一个想法,在每个循环中发生什么 –

1

好了,从你指定什么,你应该能够与任何一个if语句或switch语句来实现这一目标。我将在下面以if语句的形式提供一个示例,如果您仍然看到您需要发布循环代码的问题,则此逻辑应该可以正常工作。

if (Food_Added_PerMinute > 0) { 
    Food_Added_PerMinute = Food_Added_PerMinute - Food_Needed * Time.deltaTime/60; 
} 
else { 
    Food_Added_PerMinute = Food_Added_PerMinute + Food_Needed * Time.deltaTime/60; 
} 

如果这不能解决您的问题,请编辑您的问题以包含您的框架代码。使用调试器遍历代码并确认在您的条件下发生了什么,并将手表添加到Food_Added_PerMinute以检查它是否已被设置,这也值得使用。

+0

更好的是要问'if(Food_Added_PerMinute == 0){...} else {...}' – MiOnIs

+1

@MiOnIs,是的,我认为你是对的。我有些误解了海报的原始问题。我认为他也想把0作为一个特例来处理。 –

相关问题