天天看點

《Unity 5.x遊戲開發實戰》一2.2 Unity中的C#腳本

本節書摘來異步社群《unity 5.x遊戲開發實戰》一書中的第2章,第2.2節,作者: alan thorn 譯者: 李華峰 責編: 胡俊英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

為遊戲定義邏輯、規則和行為的時候,往往需要使用到腳本。如果想将那些靜态的、無生命的場景和對象轉換成為可以進行互動的環境和對象,那麼開發人員就需要編寫代碼。這些代碼定義了這些物體在遇到了指定情況之後,應該做出什麼樣的反應。金币采集遊戲也需要編寫代碼才能實作所有的功能。這個遊戲需要實作3個主要的 功能:

能夠感覺玩家是否收集到金币;

在遊戲進行中,能夠及時了解到玩家收集的金币數量;

能确定遊戲時間是否已經結束。

在unity中并沒有包含一個能實作上述功能的子產品。是以必須自己來編寫一些代碼來實作這些功能。unity中支援兩種語言,即unityscript語言(有時候稱之為javascript語言)和c#語言。這兩種語言功能都很強大,但是本書中主要采用的是c#語言。這是因為從發展的趨勢來看,javascript的使用率将會逐漸下降。現在開始對這個主要功能進行程式設計。首先在項目(project)面闆的空白區域單擊滑鼠右鍵,然後在彈出的上下文菜單中依次選擇“create | c# script”,就可以建立一個新的腳本檔案。另外,也可以從應用程式菜單處依次選擇“assets | create | c# script”來建立一個新的腳本檔案,如圖2.11所示。

《Unity 5.x遊戲開發實戰》一2.2 Unity中的C#腳本

當建立了腳本之後,需要為腳本起一個描述性的名字。本書起的名字為“coin.cs”。在unity中,每一個腳本檔案都對應一個與其同名的類。是以,“coin.cs”檔案對應的就是“coin”類。這個“coin”類将封裝一個金币的所有行為,并最終會附加到場景中的金币上,如圖2.12所示。

《Unity 5.x遊戲開發實戰》一2.2 Unity中的C#腳本

在對象檢查(inspector)面闆中輕按兩下coin.cs,就可以使用monodevelop打開這個檔案。monodevelop是一款unity自帶的第三方ide應用,它可以實作對遊戲中的代碼進行編寫和修改。當一個檔案在monodevelop中打開之後,它的内容就會如代碼示例2.1所示的在monodevelop中顯示出來。

注意 代碼示例的下載下傳

可以按照如下步驟來下載下傳這些檔案:

使用電子郵箱位址在頁面上注冊,如果已經注 冊過了,那麼直接登入即可;

找到并使用滑鼠單擊位于頁面頂端的“support”;

單擊“code downloads & errata”;

在搜尋search框中輸入要下載下傳資源的書的名字;

選擇要下載下傳資源的書;

在下拉菜單中選中購買本書的地點;

單擊“code download”。

将這些檔案下載下傳了之後,要确定解壓縮軟體已經更新到了最新的版本:

winrar / 7-zip for windows;

zipeg / izip / unrarx for mac;

7-zip / peazip for linux。

預設情況下,所有新建立的類都派生自“monobehavior”類,這個類中定義了一些對所有元件都通用的函數。“coin”類具有兩個自動生成的函數,也就是start()和update()。這些函數都是由unity自動調用的事件。當遊戲對象(關聯了這個遊戲腳本)在場景中建立時,就會調用start()函數。update()函數會在每一幀被附加了遊戲腳本的對象中調用一次。start()函數主要用來實作代碼的初始化,update()函數主要用來實作那些随着事件推移的行為,例如運動和變化。現在,将新建立的腳本檔案與場景中的金币對象進行管理,可以從項目(project)面闆處将“coin.cs”檔案拖曳到金币對象上。當完成以後,一個新的金币元件就被添加到了遊戲對象上。這意味着這個腳本已經關聯到了遊戲對象上,如圖2.13所示,一個關聯了腳本的遊戲對象。

《Unity 5.x遊戲開發實戰》一2.2 Unity中的C#腳本

當一個腳本與一個遊戲對象關聯到一起之後,這個腳本就作為這個遊戲對象的一個元件而存在。一個腳本檔案可以添加到多個遊戲對象上,甚至可以被多次添加到同一個遊戲對象上。每個元件都代表着一個單獨而且不同的類的執行個體化。當一個腳本以這種方式添加進來之後,unity會自動地調用它的函數,例如start()和update()。可以在start()函數中加入一個debug.log語句來确認腳本是否能正常工作,這個語句在場景中的遊戲對象被建立時在指令行視窗輸出一個調試資訊。檢視如下所示的代碼示例2.2。

如果按下工具欄上的“play”鍵,或者按下鍵盤上的“ctrl + p”組合鍵,來運作這個向遊戲對象上添加了前面的那個腳本的遊戲,就會在控制台視窗中看到一條内容為“object created”的資訊,每當這個類進行執行個體化的時候,都會輸出一次(見圖2.14)。

《Unity 5.x遊戲開發實戰》一2.2 Unity中的C#腳本

現在已經為coin類建立了最基本的腳本,并且已經将這個腳本成功附加到了金币對象上。接下來,繼續編寫一些函數,這些函數将會記錄采集過的金币資訊。