Unity C# | Switch & enum

更新於 發佈於 閱讀時間約 4 分鐘
前言
  本篇文章將會介紹Switch和Enum,Switch這是一個等同開關的陳述式,相較於頻繁的「if」和「else if」,是一個在眾多方案中切換的一個好用法;Enum是具名常數,可以輔助並提升程式設計的易讀性。

Switch

  這個英文的中文翻譯是「開關」,不過跟電燈開關相比,應該會更接近於汽車的開關,有多種不同的方案,並且同時間只能控制其中一項。
  在「JA-Anything」中介紹程式的寫法如下:
int caseSwitch = 1;
void Start()
{
  Test ();
}
void test()
{
  switch (caseSwitch) 
  {   
    case 1:     
      Debug.Log("Case 1");     
      break;   
    case 2:     
      Debug.Log("Case 2");     
      break;   
    default:     
      Debug.Log("Default case");     
      break; 
  }
}
  通常會用在void函式,每次呼叫會使用不同的值,當我們要呼叫不同的方案時,直接修改caseSwitch即可。

Enum

  這一個英文的中文翻譯是「列舉」,用來列舉一組具名整數常數,效用跟Switch有點類似,不過是切換不同的「名稱」,說起來有點抽象,直接看一張圖會好理解很多。
來源:自製示範專案
Enum的結構可以儲存自訂義的中文或英文字符,測試過不能使用!@#或數字或空白作為開頭。
  

定義 enum

private enum testenum
{
    我,
    你,
}
  前面有提到,Enum是一組具名常數,這句話意指實際上enum類型屬於隱性常數,雖然呼叫的時候會使用中文或英文,不過實際上是呼叫背後的整數,而這些整數也可以被設定。
private enum testenum
{
  我=0,
  你=1,
  他=2
}
  上面是系統默認的設定方式,初始值為0,每多一項目+1,不過也可以設定成不同的樣子,譬如第一個為1之類的。

定義 enum

  前面我們定義好一組 enum 名稱叫做 testenum,接下來就可以宣告這組定義好的 enum。
private testenum playercall;

呼叫 playercall

這是一組被宣告為testenum的enum,名子叫做 playercall,裡面存有你我他三種不同的值。
if(playercall == testenum.他)
{
  Debug.Log("玩家指著他");
}

Switch與Enum之結合應用

  使用上面的Enum,先宣告一個欄位:
[SerializeField]
private testenum e;
  enum不能使用public,所以需要用private並在上方附加SerializeField,這樣才能在Unity中看到它,在使用這個名為e的Enum來撰寫一份Switch:
switch(e)
{
     case testenum.我:
       Debug.Log("犯人竟然是我");
       break;
     case testenum.你:
         Debug.Log("犯人竟然是你");
         break;
     case testenum.他:
         Debug.Log("犯人竟然是他");
         break;
}
  接下來只要修改e的值即可,可以使用Unity面板的控制方式,也可以寫下列程式修該e的值:
e = testenum.我;

後記

  值得一提的事情,這是我目前唯一看到在程式碼中出現中文的情況,否則通常在引號「""」中才能見到中文,而藉由Enum可以讓設計師直接在程式中看到中文字,這可能有一些特殊的應用也說不定。
為什麼會看到廣告
avatar-img
106會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
  本篇文章將會告訴你延時方法的呼叫方式,Invoke是一種讓函式(function)延時啟動的官方函式,通常用於延後幾秒鐘啟動或用InvokeRepeating定時啟動函式,遊戲中常用於怪物的定時召喚或延遲觸發機關等。
本篇文章將會講述UnityEditor的簡單使用方式,並且詳細介紹Unity客製化最核心的機制[MenuItem("")],就由範例與說明帶你快速搞懂Unity Editor到底在設計什麼。
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
本篇文章是Unity Component系列中的第一篇,將會介紹Unity Component中UGUI的Button的各項目介紹,不包含應用。
本文章將藉由我的經歷,講述普通人邁向遊戲設計師的歷程,首先簡單介紹遊戲設計師,再把這段時間的經歷分成五步,從職業基本認識到入門方式一步一步介紹,如果你對遊戲設計有興趣、摸索如何成為遊戲設計師,那我相信這篇文章會適合你。
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
  本篇文章將會告訴你延時方法的呼叫方式,Invoke是一種讓函式(function)延時啟動的官方函式,通常用於延後幾秒鐘啟動或用InvokeRepeating定時啟動函式,遊戲中常用於怪物的定時召喚或延遲觸發機關等。
本篇文章將會講述UnityEditor的簡單使用方式,並且詳細介紹Unity客製化最核心的機制[MenuItem("")],就由範例與說明帶你快速搞懂Unity Editor到底在設計什麼。
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
本篇文章是Unity Component系列中的第一篇,將會介紹Unity Component中UGUI的Button的各項目介紹,不包含應用。
本文章將藉由我的經歷,講述普通人邁向遊戲設計師的歷程,首先簡單介紹遊戲設計師,再把這段時間的經歷分成五步,從職業基本認識到入門方式一步一步介紹,如果你對遊戲設計有興趣、摸索如何成為遊戲設計師,那我相信這篇文章會適合你。
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
在設計表單的時候有幾種不同的元件,可以用來加快填寫表單的速度。而在這些元件中比較常見的 Checkbox 與 Toggle Switch 常常會讓我覺得有點像又有點不像,在製作表單的時候會有點不太確定在什麼情境下分別使用這兩種元件。在搜集資料後發現,真的有人將這兩個元件做了一些詳細的說明,所以決定整
※ switch用法: ​switch是 JavaScript 中的一個控制結構,是一種更結構化的方法來替代多個 if...else 語句,特別是當需要根據同一變數的多個值進行不同操作時非常有用。 ※ switch語法: switch 語句首先評估括號內的表達式 (expression)。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
這篇內容,將會講解什麼是變數範圍,以及與變數範圍相關的知識。包括變數範圍的簡介、實體變數、全域變數、局部變數、常數。
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
在設計表單的時候有幾種不同的元件,可以用來加快填寫表單的速度。而在這些元件中比較常見的 Checkbox 與 Toggle Switch 常常會讓我覺得有點像又有點不像,在製作表單的時候會有點不太確定在什麼情境下分別使用這兩種元件。在搜集資料後發現,真的有人將這兩個元件做了一些詳細的說明,所以決定整
※ switch用法: ​switch是 JavaScript 中的一個控制結構,是一種更結構化的方法來替代多個 if...else 語句,特別是當需要根據同一變數的多個值進行不同操作時非常有用。 ※ switch語法: switch 語句首先評估括號內的表達式 (expression)。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
IF,Switch,三元運算子語法說明 IF條件選擇結構說明 IF為布林條件,當()內條件式滿足True執行if區塊的程式碼,不滿足則執行else區塊的程式碼,若無else也行。