Learning C# by Developing Games with Unity 第四章筆記整理

更新於 2024/11/05閱讀時間約 6 分鐘

## 存取修飾詞詳解


在 C# 中有四種主要的存取修飾詞,但作為初學者,你最常用到的是以下兩種:


1. **Public**: 任何腳本都可以無限制地訪問

2. **Private**: 只能在它們被創建的類別(稱為包含類別)中訪問。任何沒有存取修飾詞的變數預設都是 Private


另外兩種進階的修飾詞特性如下:


- **Protected**: 可從其包含類別或衍生自該類別的型別中訪問

- **Internal**: 只能在當前組件中使用(組件是自動生成的檔案,它將程式碼、資源等所有內容打包在一起)


更新 LearningCurve 的步驟:

1. 將 CurrentAge 前面的存取修飾詞從 public 改為 private 並儲存檔案

2. 回到 Unity,選擇 Main Camera,觀察 LearningCurve 部分的變化


由於 CurrentAge 現在是 private,它在 Inspector 視窗中不再可見,只能在 LearningCurve 腳本中通過程式碼訪問。點擊 Play 後,腳本仍會和之前一樣運作。


## 使用型別


在變數中指定特定型別是一個重要的選擇,它會影響變數整個生命週期中的每一個互動。由於 C# 是所謂的強型別(strongly typed)或型別安全(type-safe)語言,每個變數都必須有一個資料型別,沒有例外。相比之下,像 JavaScript 這樣的程式語言是非型別安全的。


### 常見的內建型別


C# 中的所有資料型別都源自(或稱為衍生自)一個共同的祖先: System.Object。這種層次結構稱為通用型別系統(Common Type System, CTS),意味著不同型別有許多共享的功能。以下是一些最常見的資料型別選項:


```csharp

public class LearningCurve : MonoBehaviour

{

private int CurrentAge = 30;

public int AddedAge = 1;

public float Pi = 3.14f;

public string FirstName = "Harrison";

public bool IsAuthor = true;


void Start()

{

ComputeAge();

Debug.Log($"A string can have variables like {FirstName} inserted directly!");

}


void ComputeAge()

{

Debug.Log(CurrentAge + AddedAge);

}

}

```


注意事項:

- 處理字串型別時,實際的文字值需要放在一對雙引號內

- float 值需要以小寫 f 結尾,如 Pi 的例子所示

- bool 變數在 Unity 中顯示為核取方塊(勾選表示 true,未勾選表示 false)


### 字串插值


數字型別的行為與你在學校學到的數學一樣,但字串有所不同。通過在開頭加上 $ 字元(稱為字串插值),可以直接在文字中插入變數和字面值。你已經在 LogFormat() 除錯中使用過插值字串,加上 $ 字元讓你可以在任何地方使用它們!


字串插值示例:

```csharp

Debug.Log($"A string can have variables like {FirstName} inserted directly!");

```


### 型別轉換


由於變數只能保存其宣告型別的值,但有時我們需要組合不同型別的變數。在程式設計術語中,這些稱為轉換,主要有兩種:


1. **隱式轉換**:自動進行,通常是當較小的值可以無需四捨五入就能放入另一個變數型別時:

```csharp

int MyInteger = 3;

float MyFloat = MyInteger; // 自動轉換為 3.0f


Debug.Log(MyInteger); // 顯示 3

Debug.Log(MyFloat); // 顯示 3

```


2. **顯式轉換**:當轉換過程中可能會丟失變數資訊時需要進行。例如,將 double 值轉換為 int 值時,需要通過在要轉換的值前加上目標型別的括號來明確轉換:

```csharp

int ExplicitConversion = (int)3.14; // 結果為 3

```


### 推斷宣告


C# 可以從指派的值推斷變數的型別。例如,var 關鍵字可以讓程式知道資料型別需要由其值來決定:


```csharp

var CurrentAge = 32; // 推斷為 int 型別

```


雖然這在某些情況下很方便,但不建議過度使用推斷變數宣告。這會讓你的程式碼增加許多猜測的成分,而程式碼應該要清晰明確。推斷變數宣告真正應該只在測試程式碼且不知道儲存的資料型別時使用。一旦知道了資料型別,建議將變數宣告改為特定型別以避免後續的執行時期錯誤。

    avatar-img
    0會員
    4內容數
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    uka的沙龍 的其他內容
    深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
    C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
    Unity 2022 與 C# 程式設計:第一章完整詳細摘要
    深入探討變數、型別和方法 正確撰寫 C# 程式碼 基本語法規則 程式碼行就像句子一樣,需要有某種分隔或結束字符。每一行 C# 程式碼(稱為陳述式)必須以分號結尾,以便程式碼編譯器處理。 例如,一個簡單的變數可以這樣寫: ```csharp public string FirstNam
    C#編程基礎筆記 1. 變量(Variables) - 變量是編程的最基本單位 - 技術上是計算機內存中存儲值的一小部分 - 實際上是一個容器,可以存儲不同類型的信息 - 變量必須有唯一的名稱 - 充當值的佔位符 示例: ```csharp public int Current
    Unity 2022 與 C# 程式設計:第一章完整詳細摘要
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
    Thumbnail
    這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
    Thumbnail
    這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
    Thumbnail
    這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
    Thumbnail
    此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
    Thumbnail
    本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
    Thumbnail
    TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
    Thumbnail
    這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
    Thumbnail
    在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    這篇內容,將會講解什麼是表達式(Expression),什麼是陳述式(Statement)。有了這些概念,各位會更容易理解,要如何設計程式碼。
    Thumbnail
    這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
    Thumbnail
    這篇內容,將會用一個簡單的範例,來解釋物件(Object)和實體(Instance)的差別。包括Instance的簡介、ID、物件改變會影響實體。
    Thumbnail
    這篇內容,將簡單介紹Asset Browser、Workspace、Inspector、Code Browser,作為入門的介面導覽。
    Thumbnail
    此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
    Thumbnail
    本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
    Thumbnail
    TypeScript是一種由Microsoft開發和維護的開源編程語言。它是JavaScript的超集,主要擴展了JavaScript的語法,增加了靜態類型檢查和其他特性,使得開發大型應用程序更為方便和可靠。
    Thumbnail
    這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
    Thumbnail
    在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。