2023-07-28|閱讀時間 ‧ 約 3 分鐘

Unity C# | While & Do-While

一、前言

  這篇文章將會講述 While 迴圈與 Do-While 迴圈。

二、 While

  這是一個比較簡易使用的迴圈,但是也比較有危險,使用的時候要特別注意迴圈是否有明確的架構,不會無限運作導致系統當機。

1. 架構

int ValueA = 0;
while(ValueA < 10)
{
   //Do something
}

  撰寫 While 迴圈,需要一個判斷式,與一個 break 用於跳出迴圈。

2. 判斷式

  ValueA < 10 是這個 While 迴圈的判斷式,只要符合這個條件,就會執行迴圈內的動作,在 While 迴圈中,只要符合迴圈的條件,就可以無限制地繼續執行下去,也因此判斷式會是整個迴圈的重點。

3. 注意事項與風險

  如果沒有設計好迴圈的判斷式,那程式就會陷入無限迴圈,這對於程式撰寫來說是很危險的狀態,如果沒有撰寫良好的判斷式,會導致迴圈停不下來,持續的執行直到電腦崩潰。

  尤其是新手容易放在 Update 中使用,導致每一幀都新增一個額外的迴圈,導致一秒出現60多個 While 迴圈,如果這些迴圈不會停止,那遊戲開始沒一秒不到系統就會過熱,直接當機,很快就崩潰了。

三、Do-While

  有些時候,我們並不希望一開始就檢測是否符合判斷式,而是希望程式可以先執行一遍,再去判斷是否有達成條件,Do-While 就是為了解決這樣的問題而存在,先執行一遍程式,再去判斷是否達成條件。

1. 架構

do
{
  //Do Something.
} while (ValueA < 10);

  撰寫 Do-While 迴圈,需要先撰寫一個 Do 關鍵字、程式碼區塊,並且在程式碼區塊的後方添加上 While 迴圈,並且直接上分號;作為結尾。

2. 判斷式

  ValueA > 10 就是此 While 迴圈的判斷式,跟 Whlie 迴圈完全一樣,不過 這個判斷式會在 Do 關鍵字執行以後才會運作,如果不符合條件會跳出迴圈;如果符合條件則會重覆 Do 裡面的事情,但無論怎麼說都會先執行一次 Do 裡面的事情。

3. 注意事項與風險

  Do-While 迴圈跟 While 的風險完全一樣。

四、額外的跳出迴圈-break

if(ValueA > 10)
{
break;
}

  我們可以使用一些方式提前跳出迴圈,除了好好撰寫判斷式之外,就是使用 break 關鍵字來跳出迴圈,這可以防治 While 迴圈的弊端,提前用 if 判斷式去判斷執行了幾次,有沒有超出既定的設計。

  但無論判斷式與 break 寫得多麼的精細與精湛,如果把它包裝在 Update 裡面,那程式無論如何都會崩潰。

四、後記

  最近我已經習慣早上起來撰寫文章,這可以大幅降低我請假休息的可能性,對於文章更新有非常好的幫助。

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.