2017-06-12 72 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作爲一個特例來處理。 –

相關問題