unity 遊戲製作大綱
開始介面
- 遊戲資料的儲存,和場景之間遊戲資料的傳遞使用 PlayPrefabs;
- 場景的分類:
2.1 開始場景
2.2 角色選擇介面
2.3 遊戲執行的實景,包括村莊、野獸等等
角色建立面板
使用 PlayPrefabs 建立預製體,然後再通過指令碼例項化生成物體。
利用 PlayPrefabs 來記錄選擇的角色型別以及角色名字等資訊。
遊戲執行場景
角色系統
角色系統是最核心的一個部分.因為涉及很多狀態的切換,並且還要多個指令碼間協調執行,所以交換狀態資訊是很有必要的.一開始我沒意識到這一點,所以花了特別多的時間來重構我的角色指令碼.事實上,直到最後我都沒能優化好,因為在這個地方卡太久了.其實學到這個程度,需要的不再是對API的掌握,而是程式碼系統的架構合理不合理.
雖然意識到這一點,但是確實對這個練習專案沒有太多激情了.之後我要加強這方面的意識,適當地學習一下架構,如何更好地優化程式碼.
1. 角色移動和攝像機跟隨
建立角色預製體,掛載角色的運動指令碼,實現點選特效、主角朝向、主角移動等等各方面效果。
角色運動還有一個很關鍵的地方就是 Animation 的設定。這個暫時還沒做,等做出來的時候專門寫一篇部落格記錄一下.
攝像機跟隨可以分為三個部分完成:
其一,攝像機設定與主角的固定視角。當不涉及旋轉視角和拉近拉遠操作時,攝像機以一固定的角度和距離跟隨主角。
其二,攝像機拉近與拉遠視角操作。
其三,攝像機旋轉視角。旋轉視角分為水平旋轉和垂直旋轉。
2. 角色攻擊及使用技能
角色攻擊有一些屬性需要注意:
- 攻擊間隔
- 攻擊距離
- 攻擊力度
- 攻擊動畫
使用技能也要按照上面的屬性來分配.
任務系統
分為以下幾個步驟:
1.建立任務NPC.任務NPC管理任務面板的出現和消失.
2.建立任務面板.任務面板的指令碼分為接受任務,提交任務,關閉任務面板等功能.其中任務的接受和提交涉及到任務資訊的改動,提交任務的獎勵要求任務面板的指令碼執行人物資訊改變的函式.
揹包系統
揹包系統坑還挺多,專門寫了一篇文章記錄.這裡我主要記錄下揹包系統的主要思路:
- 物品資訊管理和錄入;
- 建立揹包和格子,以及物品的預製體,並綁上相應指令碼.
- 指令碼功能要細化和分離,如預製體指令碼管理預製體自身的移動,格子指令碼管理格子資訊,揹包指令碼統籌整個全域性.
商店系統
商店系統一個最重要的地方就是商品資料的匯入.在這個專案中我們用txt來儲存資料,並且用一個公有指令碼讀取資料入一個Info類中,這個類儲存我們所有的商品資訊.
商店系統的另一個地方就是商品資訊的展示,包括在Game檢視中展示商品圖片和資料.這個專案要求商品資訊在滑鼠指向物品時出現,所以繼承了一些介面去實現這個方法.
裝備系統
裝備系統和揹包系統在指令碼上有很多相似的功能,這樣子反而會引發一些坑.如何處理幾個程式碼之間的耦合是一個問題.當然,學習前期最重要的還是完成為主,不要去管太多的細節,等到整體的結構已經完成的時候再去完善細節.
專案中指令碼主要是針對揹包中裝備的穿戴和卸下.在此處我遇到的有幾個坑,那些坑我都寫在了另一篇部落格上面了.
技能系統
技能系統是一個和之前相比更麻煩的模組,而且這個模組也確實學到了很多新的東西.在這個模組中,我用到了比較多的動態載入的思路,包括:建立預製體,繫結指令碼,尋找場景物體等等.同時,因為動態載入比較麻煩,所以還經常性需要判斷是否成功,寫了不少報錯的程式碼.
技能系統的核心是以下幾點:
- 技能面板的顯示,老生常談吧,根據不同的角色型別動態載入不同的技能預製體;
- 技能快捷鍵的設定,應用到了動態載入圖片,射線穿透判斷的思路.這裡的射線穿透和之前揹包物體的拖動有所不同,我額外寫了一篇記錄裡面的問題.
- 技能系統最難的應該是技能的複雜度太大,當你按下一個技能的時候要判斷這個技能的型別,根據技能的型別來實現不同的功能;還要判斷釋放技能的位置是否在怪物目標上.比如主動群體技能是要判斷觸發體是否觸碰到怪物的.說起來不難,但是寫起來比較複雜.(這一點很有必要寫一篇筆記)
怪物系統
怪物系統在這個專案中其實只需要做到兩點:
- 隨機巡邏.
- 受傷反擊.
教程中為了處理這兩點,使用了一個狀態值來控制狀態的改變.本質上,怪物與角色都是關於狀態的切換問題,區別只是角色的狀態切換更復雜一點.