Learning C# by Developing Games with Unity 第五、六章筆記整理

更新 發佈閱讀 7 分鐘

第五章

筆記:使用類別、結構和物件導向程式設計(OOP)

目標與重要性

  • 類別與物件導向程式設計(OOP):學習創建自定義類別,了解變數、建構子、方法,以及類別與結構之間的差異。
  • OOP 原則
    1. 封裝(Encapsulation):限制對物件變數和方法的訪問權限。
    2. 繼承(Inheritance):子類別繼承父類別屬性和方法。
    3. 多型(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. 遊戲設計基礎

  • 遊戲設計的重要元素
    1. 概念:確定遊戲的核心想法和類型。
    2. 核心機制:角色在遊戲中的可執行互動(如跳躍、射擊、解謎等)。
    3. 控制方案:玩家操控角色的按鍵或輸入方式。
    4. 故事:提供情感連結的遊戲敘事背景。
    5. 藝術風格:整體視覺風格。
    6. 勝敗條件:規定如何達成勝利或失敗。
  • 設計文件
    • 遊戲設計文檔(GDD):描述遊戲的玩法、氣氛和故事。
    • 技術設計文檔(TDD):記錄硬體需求與程式結構。
    • 單頁文檔:簡潔呈現遊戲核心概念,適用於宣傳。

2. 建構遊戲場景

  • 環境設計流程
    1. 創建場景基礎:使用平面物件(如地板)作為基礎。
    2. 物件調整:透過縮放(Scale)、旋轉(Rotation)、定位(Position)設置物件位置和大小。
    3. 材質(Materials): 創建材質並應用到物件上,調整顏色或貼圖。
    4. 白模設計(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):管理動畫片段和過渡。
留言
avatar-img
uka的沙龍
0會員
6內容數
uka的沙龍的其他內容
2025/01/12
筆記:角色移動、相機控制與碰撞 1. 角色移動的基礎 移動方式選擇: Transform 組件:簡單易用,直接改變物件的位置與旋轉。 Rigidbody 物理效果:通過施加力實現真實移動,但需配置物理屬性。 現成組件或 Prefab:如 Unity 的 Character Control
2025/01/12
筆記:角色移動、相機控制與碰撞 1. 角色移動的基礎 移動方式選擇: Transform 組件:簡單易用,直接改變物件的位置與旋轉。 Rigidbody 物理效果:通過施加力實現真實移動,但需配置物理屬性。 現成組件或 Prefab:如 Unity 的 Character Control
2024/11/05
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
2024/11/05
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
2024/10/22
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
2024/10/22
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
Thumbnail
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
這篇文章將會講述 Unity 自帶參數的功能,在撰寫時要怎麼進行封裝。
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
Thumbnail
一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
Thumbnail
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
使用者自訂的資料型別
Thumbnail
使用者自訂的資料型別
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News