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
0會員
6內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
uka的沙龍 的其他內容
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
Unity 2022 與 C# 程式設計:第一章完整詳細摘要
## 存取修飾詞詳解 在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種: 1. **Public**: 任何腳本都可以無限制地訪問 2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private
深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
Unity 2022 與 C# 程式設計:第一章完整詳細摘要
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
物件導向(OOP),不僅提供了更結構化的程式碼組織方式,還有助於提高程式碼的可讀性、可重用性和可維護性。本文將介紹物件導向概念中的類別、對象、繼承、封裝和多型,並透過具體範例來展示這些概念如何在實際編程中應用。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
這篇文章介紹了面試時以及開始工作後可能會遇到的問題,包括物件導向OOP、SOLID 設計原則、測試方式,以及 Cookie、Session 與 Cache 的相似處與不同處。提供了豐富的相關資訊。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本書大多數的內容都以 OO 的概念出發,詳列了許多設計的臭味道,也有大量的例子。個人雖然不會這樣寫程式,但仍是覺得受益良多,至少在 code review 時能更清楚知道該怎麼描述問題。不過,即便不是用 OO 的概念,有些章節還是可以帶來一些想法,用 OO 概念寫程式的人更不該錯過這本好書。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
物件導向(OOP),不僅提供了更結構化的程式碼組織方式,還有助於提高程式碼的可讀性、可重用性和可維護性。本文將介紹物件導向概念中的類別、對象、繼承、封裝和多型,並透過具體範例來展示這些概念如何在實際編程中應用。