主題

【遊戲開發心得】在用過Python的Pygame及Unity後的心得

佑紙 | 2021-07-21 23:43:17 | 巴幣 1014 | 人氣 228

最近在把遊戲由Python 移植到Unity 上面
要熟悉一下C# 語言及Unity 環境
我想分享一下用過這兩種開發工具的心得
這只是心得分享不是教學
要真正學習還是要去其他地方找資料
這篇心得同時對於未學過寫程式的人會蠻難懂的

兩者我所使用的工具:

PYTHON
- 程式編輯器: Notepad
- 程式語言: python
- 使用的類別庫: pygame

UNITY
- 程式編輯器: Visual Studio 2019
- 程式語言: C#
- 使用的類別庫: Unity 內建

先說結論, 我個人使用後推薦 UNITY
畢竟它還是很經典且廣泛的遊戲引擎
之後我會用一些不同面向分析兩者

效能
肯定是UNITY效能比較好
畢竟是由大公司開發, 優化肯定比較好
但是要遊戲開發者自己也要合理開發
不然效能還是會被拖慢

程式語言差異
都是物件導向程式語言
其中最大的差異是python 是弱型別語言, C# 則與之相反
兩者各有優缺點, 但以我而言要開發大型專案還是選用強型別語言比較好

python優點
一個程式檔案中能夠像程序導向語言一樣直接執行該module, 連class 或main()也不用宣告
寫程式較為自由, 變數不須宣告型態, 其中陣列類別(List)裡面的元素可混用任何型態, 甚至將類別class(意思是指未宣告成物件的class本身)放進變數中, 而function本身也可以放進變數
甚至字典(Dict)的key和value也能混用型態
這導致在運用上非常靈活, 能夠有特殊應用, 並且程式結構定義不用太嚴謹
多型的宣告方法比較方便, 只要在參數後方補上預設值, 甚至能以字典形式傳入參數, 或是後來在該Function中判別型態即可
物件能夠輕鬆的以字典形式改寫資料
內建蠻好用的string (python沒有char) 函式
並且能用pip 或是anaconda 直接安裝別人提供的類別庫

python缺點
容易把錯誤的型態丟入參數, 而且這種錯誤經常發生, 可以說是最常發生的bug了
容易因為打錯字後來出錯
程式有錯通常要執行到該行程式碼才會出現錯誤
公開隱蔽常常被忽略, 通常都變成public(可以說宣告方式比較特別)
(這些都可能能用好的編輯器避免)

C#優點
類別及資料結構定義嚴謹, 並且抽象靜態公開隱蔽定義非常清楚
不會因為變數型態丟錯, 執行到一半跳錯誤, 在編譯過程中就會擋下
(這些非常重要)
提供特殊的取得子及設定子語法(Setter Getter)很好用

C#缺點
變數要宣告型態, 陣列元素不太能混用( 看類別是否有繼承或介面 )
要花較多時間在定義類別及各種資料結構
程式一定要包在類別或struct中, 不能有不屬於任意類別的function
頂多是以static存在

開發工具比較
pygame
能用python的pip install 安裝
功能較簡單, 只內建2D遊戲功能
類別定義較單純好懂
使用 while的方式讓遊戲不斷刷新
有個大缺點, 不內建UI (Label, Button等類別)
裡面內建的Text是用font的渲染功能而已
適合小遊戲

Notepad
檔案小, 不包含編譯功能
但是適用多種語言, 並且能自訂不同語言中不同關鍵字的字型顏色及大小
它會自動擷取 "當下" 編輯的檔案中的字段, 將它們變成能自動完成的字段
我用來編輯python, 不自動支援提示function參數有哪些的功能, 那些可能要另外設定
如果沒有此功能常常要翻回去看之前的function如何定義的
因為python 變數沒有固定型態, 編輯器很難做到幫你檢查該變數儲存的物件有哪些成員
遊戲UI要自己用程式碼去描述

Unity
如果你有用 Unity賺錢要付費使用
功能強大, 2D 3D 遊戲功能都有
並且提供跨平台開發
提供很多以GUI編輯遊戲的功能
例如 inspector 能編輯物件的成員變數
或是能以流程圖的方式編輯動畫切換
還有能用內建類別 "場景" 能直接編輯遊戲初始有哪些物件存在
編輯UI能用拖曳的方式擺放
能自動把遊戲資源(圖片音效等)封裝起來, 不須附加在執行檔旁邊
適合各類大小遊戲
有內建的功能, 可以安裝別人提供的類別庫及其他開發工具

Visual Studio 2019
檔案較大, 因為用來編輯C#
它會自動收集專案其他程式碼檔案的資訊
並完整的提供自動完成字段, 並提示function的參數需要什麼
甚至提供編輯時自動檢查錯誤的功能
有時候會建議邊編輯者一些命名規則
或是發現哪些變數宣告後沒使用


總結:
不論用何種方式開發
物件導向的類別, 繼承, 介面等基礎要熟悉後才會好開發
會發現Unity內建的功能其實都是用類別去延伸, 並提供API能讓Unity的編輯器對接
如果之前寫程式是習慣都用編輯程式碼開發軟體的話, 剛開始用Unity可能會要習慣一下用圖形介面編輯的方式, 習慣後會發現也蠻好用的
所以還是比較推薦 Unity
不過弱型別的Python 還是有許多很很方便的地方
只是在開發遊戲上, Unity 占了很多優勢

創作回應

is樂小呈
加油[e12]
2021-07-24 20:02:28

相關創作

更多創作