前往
大廳
主題

[Unity] List 自動擴充Enum的做法

%%鼠 拒收病婿 | 2023-06-03 17:38:08 | 巴幣 5446 | 人氣 645

前言:

雖然內容有點少,讓...讓我洗一篇Unity相關的文章吧 XD
程式碼在個人網站觀看效果較好~


Partial Class

什麼是Partial Class?

Partial Class 是在 C# 中,定義一個類別被分成的部分,每個部分可以在不同的檔案中定義,而這些部分會被編譯器合併成一個類別。這樣做的好處是可以讓多人同時開發同一個類別,而不會互相干擾。例如,當有一個非常大的類別時,我們可以將其保存在多個檔案中,以便更輕鬆地處理類別的各個部分。
Partial class也常被用在gernerated code。今天我就來透過實作介紹一下它。

自動擴充Enum

C#的enum是一種值型別,它是一個命名的整數型別。它可以用來定義一組命名的整數常數。這些常數可以用作變量或屬性的值。如果在程式碼定義enum別的變數,Unity就會幫我們以下拉清單的方式讓我們可以在inspector做操作。
enum協助我們便利的呼叫它有定義的常數,但每次想在裡面新增一個常數時就得打開腳本去做修改。除了不直覺外,當有多個人有新增常數的需求時,就得委託負責該腳本的人去做修改,不然程式碼可能在修改的過程中產生衝突。
下面的例子是我做了一個音效管理合集ScriptableObject。ScriptableObject是Unity中的一個類別,它是一個可編輯的資源,用來存儲資料,例如遊戲中的設置和配置等。 我希望每個音效有自己的標籤(tag),這樣要播放的時候就只需要透過標籤找到對應的音效。我可以用陣列去儲存標籤,或做成enum,前者在inspector的新增/刪減操作簡單,不需要修改到程式碼;後者則是取用時候簡單。

要如何兼具兩者特質呢?  我的作法是先建立空的partial類別 (避免初始狀態下編譯器報錯):


接著在ScriptableObject以List儲存音效清單,並在更動時自動將清單上的內容寫成一個AudioType類別下的enum參數文字腳本。
結果:
在Scriptable Object的清單下新增項目如下。

自動產生的腳本內容:
public static partial class AudioType{public enum tags { Test,dsds,dfddd,} }

如此一來,在其他腳本上就能直接取用。


後記:
謝謝七七贊助 ,愛你們(´▽`ʃ♡ƪ)

送禮物贊助創作者 !
0
留言

創作回應

多古尼爾拉布拉布拉格
好厲害
2023-06-03 20:25:37
%%鼠 拒收病婿
並沒有
2023-06-05 11:05:05
樂小呈
原來腳本也可以用 IO 噢 [e17]
2023-06-03 21:05:11
%%鼠 拒收病婿
歸根到底都是文字檔,比較有問題的是runtime產生的東西,unity好像會鎖住git,要觸發一些機制讓他刷新或是專案重開才會登錄到git上。
2023-06-05 11:06:16
追蹤 創作集

作者相關創作

更多創作