(高情商:給大家的作業。 低情商:我懶得寫)
所以這期總結一下目前已有的內容,也是下一個階段的過渡篇,我會來介紹一下準備使用的C#語言和Unity引擎
這個系列僅僅包含Python最基礎的語法,中高級還需要各位自行研究。所以讓我們回到一切的開始,來看看一些寫得不好的地方
首先是主文件,沒什麼大問題。不過如果你用引擎的話,你甚至都不需要這麼寫,引擎(以下全部指代Unity,虛幻我不瞭解)都幫你做了,你只需要區分好調用順序(比如使用Execution order讓引擎設置或者你自己手動編寫調用順序)(有紅線是因為我還沒有搭建環境,是沒有什麼語法錯誤的)
到角色文件。首先這個命名就有問題,我當時不想寫Character ,就寫了man。實際寫的時候不要這麼幹,你的每一個文件名都必須有意義並且能讓你一眼明白是幹什麼的,否則後期引入更多東西會讓你自己都不知道自己的文件裡的內容
還有這個update函數。這是響應輸入的內容,最好和邏輯層分開。寫得也確實不簡潔,最好優化一下。不過練習的話能跑就行了(雖然這不是Python)
背景處理文件。有一點要說的是,不要使用中文做變量名,早期的引擎或者代碼編譯工具遇見中文路徑是有幾率崩潰的。當然現在基本不會了,不過英文命名是一種規範,實在不會也可以去查Update中切換背景寫了兩次,雖然不多,但是考慮如果未來有更多需求,最好封裝成靜態類,方便使用(C#中的靜態類與靜態方法)
敵人文件。此處只寫了一遍主要邏輯,剩餘的可以直接繼承。繼承時可以選擇繼承於普通類,抽象類或接口。普通類的情況就像現在這樣,所有怪物都確定用一套邏輯。而抽象類多用於一套邏輯不同子類不同實現的情況。接口就相當於一種能力,只是不負責實現
接口也可以用於統一,但是更適用於無數據的情況下
加上boss文件,其實我們可以發現角色,怪物和boss之間是有共同點的。把共同點抽象出來,再讓具體的子類繼承,會比現在更方便管理
(里氏替換原則,縮寫LSP...)
來到子彈。emmm...我已經不知道怎麼說了,這個部分純粹亂寫的,那時候我不知道向量,所以這套邏輯是我連蒙帶編,拼湊出來的。向量是遊戲開發必備知識,也不需要了解太深,你只需要知道:1.向量相加、減、乘、除的定義及實際應用
2.點乘與叉乘的用法(大概率不需要知道具體怎麼算的,瞭解一下原理就行了)
3.對應API的調用(Unity全給你封裝好了,用就完事了)狀態欄與文字。這裡基本都是方法,實現方式不唯一。就是調用要注意這裡調用的方式是讓狀態實例自己檢測角色血量的變化,你還可以讓角色抓取狀態實例的引用,並提供一個方法,讓角色自行調用我更推薦使用事件。全局事件過多時還可以搭建一個事件中心,統一管理,儘量解耦。
差不多也就這樣了,最後提一嘴對象池,這是遊戲優化性能最基本的方法之一,可以節省創建和銷燬遊戲物體的性能但是就算使用了對象池,同時存在的遊戲物體一多也會卡。(我曾經試過四個狂戰士+散彈槍M3+散彈增多天賦,非常“快樂”)據說ECS(Entity-component-system)框架可以解決問題,因為運行一個Entity的性能消耗遠小於運行一個gameobject。但我也沒試過,交給各位實踐了這個階段差不多就這樣了。Python 是一門優秀的語言,去年已經超過Java,成為全球最受歡迎的語言。適用於人工智能,算法分析,網絡爬蟲......但根據我這幾個月的經驗,不要用Python 做遊戲,至少不要只用Pygame庫來寫(這好像是我在這個系列第一次用加粗、傾斜、下劃線的字體)。可以學習C++(虛幻,也是很多引擎的首選編寫語言),C#(Unity,學起來挺簡單的,也叫“C版JS”)
至於下個階段系列叫什麼,我是取不出一個新名字了,可能下一期又變回【1】了春節快樂!(好像有點晚啊……)