第五章
筆記:使用類別、結構和物件導向程式設計(OOP)
目標與重要性
- 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。
- OOP 原則:
- 封裝(Encapsulation):限制對物件變數和方法的訪問權限。
- 繼承(Inheritance):子類別繼承父類別屬性和方法。
- 多型(Polymorphism):允許子類別覆寫父類別方法。
1. 類別的基本定義與使用
- 類別是參考型別(Reference Type),可作為藍圖來創建物件。
- 定義類別:
public class ClassName {
// 變數
// 建構子
// 方法
} - 實例化類別:
ClassName instance = new ClassName();
2. 類別成員
- 變數(欄位):存儲類別屬性資訊,可設置初始值。
- 建構子:
public ClassName(string name) {
this.name = name;
} - 預設建構子:由 C# 自動生成,將變數設置為型別預設值。
- 自定義建構子:接受參數,用於初始化物件。
- 方法(功能):執行操作或行為,通常通過物件調用。
3. 結構的基本定義與使用
- 結構是值型別(Value Type),用於存儲簡單且不頻繁變化的數據。
- 定義結構:
public struct StructName {
public string name;
public int value;
public StructName(string name, int value) {
this.name = name;
this.value = value;
}
} - 實例化結構:
StructName instance = new StructName("Name", 100);
4. 物件導向設計的核心
- 封裝(Encapsulation):
- 設置變數或方法為 private,只能在類別內訪問。
- 通過 public 方法來控制外部訪問。
- 繼承(Inheritance):
public class ChildClass : ParentClass { }
- 子類別繼承父類別的所有 public 和 protected 成員。
- 可使用 base 關鍵字調用父類別的建構子。
- 多型(Polymorphism):
public virtual void Method() { }
public override void Method() { } - 父類方法可使用 virtual 關鍵字標記,允許子類使用 override 修改行為。
5. 類別與 Unity 的結合
- 組件(Component)與物件(GameObject):
Transform transform = gameObject.GetComponent<Transform>();
- Unity 中的物件由多個組件組成,每個組件是類別的實例。
- 使用 GetComponent<T>() 獲取組件實例。
- 尋找與設置組件:
- 使用 GameObject.Find() 獲取場景中的物件。
- 或者拖放物件到檢查器中進行賦值。
6. 總結
- 掌握類別和結構的基礎知識及其在 Unity 中的應用。
- 學會通過 OOP 原則設計模組化、可重用的程式。
- 下一步:將這些技術應用到 Unity 遊戲場景中,設計互動行為。
第六章
筆記:Unity 遊戲開發基礎
1. 遊戲設計基礎
- 遊戲設計的重要元素:
- 概念:確定遊戲的核心想法和類型。
- 核心機制:角色在遊戲中的可執行互動(如跳躍、射擊、解謎等)。
- 控制方案:玩家操控角色的按鍵或輸入方式。
- 故事:提供情感連結的遊戲敘事背景。
- 藝術風格:整體視覺風格。
- 勝敗條件:規定如何達成勝利或失敗。
- 設計文件:
- 遊戲設計文檔(GDD):描述遊戲的玩法、氣氛和故事。
- 技術設計文檔(TDD):記錄硬體需求與程式結構。
- 單頁文檔:簡潔呈現遊戲核心概念,適用於宣傳。
2. 建構遊戲場景
- 環境設計流程:
- 創建場景基礎:使用平面物件(如地板)作為基礎。
- 物件調整:透過縮放(Scale)、旋轉(Rotation)、定位(Position)設置物件位置和大小。
- 材質(Materials): 創建材質並應用到物件上,調整顏色或貼圖。
- 白模設計(White-boxing): 使用基本幾何圖形構建場景初稿,後續可替換為更精緻模型。
- 清理階層結構:
- 將相關物件分組到父物件下,保持層級結構整潔。
- 父物件的原點(Local Space)影響子物件的位置和旋轉參照。
3. Prefabs 的使用
- Prefab 定義:
- 預製件是可重用的物件模板,保存其所有子物件、組件與屬性。
- 編輯 Prefab 可影響場景中的所有實例。
- 實踐:
- 創建防禦塔(Barrier)Prefab,並添加到場景的每個角落。
- 更新 Prefab 並應用更改,使所有實例同步更新。
4. 動畫與燈光
- 燈光(Lighting):
- 實時燈光:即時計算,適用於動態場景,但耗費資源。
- 預計算燈光:靜態光源,提升效能但缺乏動態反應。
- 主要燈光類型: 方向光(Directional Light):模擬太陽光。 點光源(Point Light):從中心向外擴散。 聚光燈(Spotlight):聚焦特定區域。 面光源(Area Light):矩形區域發光。
- 動畫:
- 程式控制動畫: 通過 Transform.Rotate 方法執行物件旋轉。 使用 Time.deltaTime 確保動畫在不同設備上保持平滑。
- Unity 動畫系統: 動畫視窗(Animation):創建動畫片段並設定關鍵幀。 動畫控制器(Animator):管理動畫片段和過渡。