本節書摘來異步社群《unity 遊戲案例開發大全》一書中的第6章,第6.3節,作者: 吳亞峰 , 杜化美 , 于複興 責編: 張濤,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
unity 遊戲案例開發大全
在6.2小節介紹了遊戲開發前的策劃和準備工作。本節将簡單介紹遊戲的架構。讀者通過這一節可以進一步了解遊戲的開發思路,對整個開發過程也會更加熟悉。
在unity中,場景開發是開發遊戲的主要工作。每個場景包含了多個遊戲對象,其中某些對象還被附加了特定功能的腳本。本遊戲包含了5個場景,接下來對這幾個場景中重要遊戲對象上挂載的腳本進行簡要的介紹。
主菜單場景
主菜單場景“zhujiemian”是轉向各個場景的中心場景,在該場景中可以通過單擊不同的功能按鈕進入其他界面,如遊戲界面、設定界面、選關界面等。
該場景中的主錄影機挂載了腳本“mymainmenu.cs”,其主要功能是響應玩家的觸摸事件,如單擊按鈕、滑動螢幕等。每個選關按鈕上都挂載了腳本“choose.cs”,該腳本的主要功能是在選關按鈕下方的星星闆上繪制本關已經獲得的星星。
遊戲關卡場景
本遊戲中包含四個遊戲關卡,分别對應四個遊戲場景:“level1”、“level2”、“level3”、“level4”。每個場景包含的腳本和設定基本相似,僅有罐子的種類和擺放方式不同。下面對遊戲關卡場景中個别重要的遊戲對象進行詳細介紹。
(1)主錄影機“main camera”用于在螢幕上呈現遊戲畫面,該遊戲對象上挂載了腳本“gamerule.cs”、“tishi.cs”。“gamerule.cs”用于判斷遊戲是否結束,并根據勝負情況生成相應的分數闆。“tishi.cs”腳本的功能是在每關開始前根據本關特色顯示遊戲提示闆。
(2)每個木球遊戲對象上都挂載了腳本“ball.cs”、“lizi.cs”,“ball.cs”腳本實作玩家滑動螢幕發球的功能,“lizi.cs”腳本主要功能包含球撞擊時顯示粒子系統、播放音效以及實作撞擊特殊罐子觸發的事件。
(3)每個可樂罐遊戲對象都挂載了“guanzi.cs”腳本,該腳本的主要功能是當罐子被球撞下平台時記錄下位置,并在該位置的上方顯示加分動畫并進行加分,動畫播放完後自動删除該罐子則可以達到節省遊戲資源的目的。
(4)控制闆ban對象挂載了腳本“gamecontrolpanel.cs”,該腳本的主要功能是擷取玩家手指的觸摸位置和觸摸方式(單擊或滑動)并通過3d拾取技術實作按鈕的觸摸監聽,如暫停遊戲、回複遊戲、遊戲靜音、傳回主菜單重新開始等。
(5)遊戲結束後,在主錄影機上挂載的“gamerule.cs”腳本作用下生成分數闆,分數闆上挂載了腳本“scoreboard.cs”,該腳本的主要功能是等到遊戲結束後計算本局遊戲得分與獲得的星星數量,将其顯示在分數闆上并儲存。
上一小節已經簡單介紹了遊戲的主要場景和使用到的相關腳本,為加深讀者了解,這一小節将介紹一下遊戲的整體架構。本遊戲中使用了很多腳本,接下來将按照程式運作的順序介紹腳本的作用以及遊戲的整體架構,具體步驟如下。
(1)單擊遊戲圖示進入遊戲後,經過加載首先來到了遊戲的主菜單場景zhujiemian,主菜單場景的主錄影機被激活,玩家滑動或單擊螢幕時,會觸發主錄影機上的mymainmenu.cs腳本,通過3d拾取技術響應玩家的操作。
(2)單擊“開始遊戲”按鈕,或者手指向左滑動,會進入遊戲的選關界面,在選關界面有一系列選關按鈕,分别代表本遊戲的所有遊戲關卡,選關按鈕上挂載的choose.cs腳本在各關卡分數闆上繪制對應關卡獲得的最多星星數。單擊不同的關卡按鈕會進入相應的遊戲關卡場景。
(3)單擊關卡一,進入遊戲場景“level1”,主錄影機被激活,當玩家點中木球并向上滑動螢幕時,球上挂載的腳本ball.cs會将手指滑動位移轉換為一個帶方向的力并施加在球上。球在飛行中的撞擊事件由腳本lizi.cs處理,負責在撞擊點生成粒子系統,播放音效以及撞擊特殊罐子的處理辦法等。
(4)當球撞倒可樂罐,可樂罐落下平台會撞到下方的“diban”觸發器遊戲對象,罐子上的腳本“guanzi.cs”激活,該腳本用于播放加分動畫并進行加分,同時當玩家看不到可樂罐時删除可樂罐遊戲對象達到節省遊戲資源的目的。
(5)當玩家單擊左上角的暫停按鈕,或點中控制闆向下拖拉時,控制闆上的gamecontrolpanel.cs腳本激活,使控制闆向下滑動,顯示出繼續、退出、靜音、重新開始功能按鈕,并關閉ball.cs腳本,使玩家暫時無法發球。單擊繼續按鈕,控制闆上移,并重新開啟ball.cs腳本。
(6)在遊戲進行過程中,主錄影機上挂載的“gamerule.cs”腳本始終根據遊戲規則判斷遊戲是否結束,在結束時根據遊戲的勝負情況生成相應的分數闆,并計算本局遊戲的得分和獲得的星星數量,在分數闆上繪制呈現。
(7)生成分數闆後,分數闆上挂載的腳本scoreboard.cs啟用,該腳本将分數轉換為紋理貼圖渲染到分數闆上并人為控制渲染順序,防止深層檢測失敗。同時該腳本還實作了分數闆上退出、重新開始、進入下一關按鈕的按鍵監聽。
(8)當進入某些特殊關卡(如關卡二和關卡三)時,有一些具有特殊功能的罐子。這時主錄影機上挂載的腳本“tishi.cs”會在遊戲開始時生成提示闆,提醒玩家該關卡中這些特殊罐子的作用。