C 開發Unity遊戲教程之判斷語句

2021-09-08 11:10:15 字數 3655 閱讀 6590

玩家在遊戲時,無時無刻不在通過判斷做出選擇。例如,正是因為玩家做出的選擇不同,才導致遊戲朝著不同的劇情發展,因此乙個玩家可以對乙個遊戲百玩不厭!既然提到了這一點,藉此機會本章就來說明,在指令碼中實現遊戲為玩家提供更多選擇的方法。

圖5-1  《仙劍奇俠傳》遊戲的劇情與攻擊方式的選擇

玩家在玩遊戲的過程中,總是在做出一些選擇,而這些選擇直接影響了遊戲的執行路徑。玩家的選擇效果是遊戲體現出來的,但是遊戲實現這一效果的內在原因是,遊戲**指令碼中新增了允許玩家進行選擇的判斷語句。

上一節說明了,指令碼中的判斷語句對於遊戲的重要性,但是列舉的例子還是太抽象了。讀者無需為此感到困惑,作者可以在此處列舉些更實際的例子:玩家是否按下了遊戲檢視中的特定按鈕,或者鍵盤上的特定按鍵,玩家是否擊敗了小怪等等。這些都是遊戲指令碼中需要使用判斷語句的地方。

在生活中,人類習慣使用「是」和「否」做出判斷,但在遊戲的指令碼中,通常是使用「真」和「假」來做出判斷的。本小節將以指令碼中最常用的if語句來說明,在指令碼中做出判斷的方法。

1.if語句

在指令碼中,if語句的書寫格式如下,表示的遊戲執行流程如圖5-2所示。

圖5-2  if語句表示的遊戲執行流程圖

2.需要判斷的部分

這部分**可以是表示式,也可以是方法。但是無論如何,這個部分應該可以明確的給出true或者false。true和false實際上是布林型別的資料(在第2章中曾以**的形式列出)。也就是說,從需要判斷的部分裡,可以得到乙個資料,而這個資料是布林型別的。至於表示式,它既可以是邏輯表示式,又可以是關係表示式,如圖5-3所示。

圖5-3  判斷部分的構成和結果

3.邏輯表示式

構成邏輯表示式的邏輯運算子有3種:!(非)、&&(與)和||(或),這種表示式的運算結果如表5.1所示。

表5.1  邏輯表示式的運算結果

注釋:a和b是參與邏輯運算的兩個資料。

4.關係表示式

構成關係表示式的關係運算子有6種,它們的名稱、使用示例及功能如表5.2所示。

表5.2  關係運算子、使用示例及功能

請按照下面的步驟,完成遊戲示例的製作:

(1為遊戲場景新增3個遊戲物件:directional light、sphere和plane。調節各遊戲物件在遊戲場景中的位置、朝向和大小,如圖5-4所示。得到的遊戲場景和遊戲檢視,如圖5-5所示。

圖5-4  設定各遊戲物件transform元件下的屬性

圖5-5  在scene和game檢視裡,檢視各遊戲物件的相對位置,以及遊戲檢視效果

sphere是玩家在遊戲中需要操作的遊戲物件,而plane則是為了模擬遊戲中的「地面」而存在。

(2在hierarchy檢視裡選中sphere物件,然後單擊component|physics|rigidbody命令,即可為sphere物件新增剛體(rigidbody)元件,如圖5-6所示,此元件將使得sphere物件如現實世界一般,會受到重力的影響。如果sphere在空中的話,那麼它就會因為收到重力的影響而下墜。

圖5-6  為sphere物件新增的剛體元件

(3開啟指令碼myscript,並新增下面的**:

將此指令碼賦予main camera物件。

圖5-7  input.getmousebutton()的幫助資訊

(4執行遊戲,由於球體最初在空中,此時球體只是受到了重力的影響,因此會向下墜落,直到降落到「地面」上為止。如果玩家此時按下滑鼠左鍵的話,就會給球體施加乙個向上的力,這個力比重力大,因此小球會向上運動。也就是說,當玩家按下滑鼠左鍵以後,小球會向上運動。但是小球向上運動的範圍是有限的,達到了這個限度以後,就不會再繼續上公升了,如圖5-8所示。

圖5-8  遊戲示例執行效果

除了if語句以外,c#還提供了一些其它的判斷語句,本小節會做簡要介紹。如果需要的話,讀者可以查閱專門講解c#語法的書籍,然後將它們靈活的運用在遊戲指令碼的編寫當中。

1.if-else語句

此種型別的語句與if語句的區別是,當判斷部分的結果為false時,會執行另乙個語句。此種語句表示的遊戲執行流程如圖5-9所示。

圖5-9  if-else語句表示的遊戲執行流程圖

2.if-else-if語句

此種型別的語句,屬於多重判斷語句,也就是說,需要判斷的部分不止一處,且每處的判斷都會導致不同的執行流程,如圖5-10所示。

圖5-10  if-else-if語句表示的遊戲執行流程圖

3.swtich語句

此種型別的語句,所表示的遊戲執行流程,與if-else-if語句類似,它們二者可以互換。儘管流程是類似,但是給**閱讀者的直觀感受卻是不同的,如圖5-11所示。

圖5-11  switch語句表示的遊戲執行流程圖

C 開發Unity遊戲教程之Unity中方法的引數

出現在指令碼中的方法,無論是在定義的時候,還是使用的時候,後面都跟著一對括號 有意義嗎?看起來最多也就是起個快速識別方法的作用吧。既然c 的語法規定方法就應該這麼寫,肯定是有一定道理的。如果是上公升到戰略意義的道理,連作者也不是很明白,但是作者知道這對括號裡可以新增 引數 要說明引數的作用,就必須從...

C 開發Unity遊戲教程之遊戲物件的屬性變數

通過對上一章的學習,讀者應該了解到了,遊戲物件上的屬性與指令碼中的變數,建立聯絡的方式就是將指令碼賦予遊戲物件。上一章只是簡單的介紹了指令碼中的變數,讀者一定不過癮,現在好了,作者將使用一整章的篇幅介紹變數與屬性。在unity中,遊戲場景中遊戲物件的屬性,可以在inspector檢視裡檢視,想看哪個...

C 開發Unity遊戲教程之使用指令碼變數

本章前面說了那麼多關於變數的知識,那麼在指令碼中要如何編寫關於變數的 有規章可循嗎?答案是有的。本節會依次講解變數的宣告 初始化 賦值和運算。要想在指令碼中使用變數,就必須先宣告 declare 這就意味著,需要先告訴unity,有這樣乙個變數存在,然後才可以在unity中使用這個變數。那麼,該如何...