[Unity Script Templates ] 打造專屬的Unity腳本樣板






是否對於Unity預設的Script Template感到稍微厭倦了呢?
如果能夠自訂腳本的樣板就好了,Unity有這樣的功能嗎?


最近也有了這樣的疑問,於是研究了一下如何客製化Unity的Template。


因為VS強大的功能性,現在也越來越多人也開始改用VS撰寫script,
本文也會一併提到如何修改VS Unity Script Template。

接著就開始進入正文吧!


1.修改Template

以Unity預設安裝路徑為例,預設的Template存放在以下路徑:
C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates


開啟資料夾之後,我們會看到一些文字檔,這些就是Unity預設的腳本樣板了。
修改樣板的方式很簡單,直接修改這些文字檔就可以了。


我們以最常用到的Unity C# Script來舉例,
對應的檔名是81-C# Script-NewBehaviourScript.cs.txt
(在修改Template之前,最好將整份資料夾備份起來方便日後還原。)



以文字編輯器開啟可以看到如下的內容。



#SCRIPTNAME# 是Unity新增腳本時用來同步命名的固定格式,這個地方要避免更動到。
其他地方則可以修改成自己想要的格式。


在下方的圖例中我移除了Start函式、Update函式與System.Collections的引用,
並且在最上方新增了腳本描述的註解。



存檔之後就完成了Template的調整,任何Template的修改都必須重新啟動Unity才能夠初始化。


在變更這些檔案的時候可能會收到修改權限不足的通知。
我們可以對著整個ScriptTemplates資料夾以
右鍵點選>>內容>>安全性
接著在上方的群組或使用者名稱給予指定的對象適當的修改權限。

下面的圖例是樣板修改後的效果。



2.擴充Template

我們常用的Template絕對不會只有一種,
如果只能修改一個Template對開發的助益並不會很大。


這時候我們可以透過新增檔案的方式來擴充自己的Template。
首先說明一下Unity的Template檔名命名規則。


索引是用來排序的,與MenuItem一樣,數字越小排序會越上面。
第一層可以視作腳本的分類。
第二層則是定義命令列的名稱,與第一層必須使用兩個底線 ( _ ) 分隔開來。
檔名副檔名就不贅述了,修改時注意一下就好。


在下面圖例中,我將預設的81-C# Script-NewBehaviourScript.cs.txt
修改檔名為81-C# Script__Default-NewBehaviourScript.cs.txt

並且新增了三個文字檔
81-C# Script__MarsCode1-NewMarsCode1.cs.txt
81-C# Script__MarsCode2-NewMarsCode2.cs.txt
91-C# Interface-NewInterface.cs.txt



重新啟動Unity之後可以看到Unity的Create命令列已經產生變更了。



3.修改Visual Studio的Unity腳本樣板

VS有自己專屬的Unity Script Template,不與Unity的腳本樣板共用。
所以需要另外修改。

不過目前只找到C# MonoBehaviour與C# Editor Script共兩個檔案可以修改。

以VS 2017為例,這兩個Template的檔案路徑如下:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\Visual Studio Tools for Unity\ItemTemplates\CSharp\1033\CSharp MonoBehaviour

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\Visual Studio Tools for Unity\ItemTemplates\CSharp\1033\CSharp Editor Script

我們要修改的檔案副檔名為*.cs。

修改完之後,也要記得重新開啟VS。


4.使用Visual Studio的Unity腳本樣板

要在VS新增Unity Script有兩種方式。

第一種方式是在方案總管中對著要新增腳本的資料夾
以右鍵點選>>加入>>類別



接著點選想要新增的檔案就可以了。



第二種方式則是透過Unity專案總管,首先點選上方工具列的
檢視>Unity專案總管


在下方的圖例中我們可以看到能夠使用的指令碼只有兩種,


C#編輯器指令碼必須在指定的資料夾檔名
為Editor的情況下才能使用。




5.使用Code Snippets(程式碼片段)

既然提到了VS,也順便在此介紹一下VS的Code Snippets功能。

程式碼片段是為了能夠快速生產重複性極高的code,
在VS之中,我們常用的功能都已經內建了程式碼片段。

尤其是switch迴圈,在處理enum條件判斷的時候非常好用。

建立snippet的方法在微軟的Developer Network已經有非常完整的描述,
本文就不另外詳述了,下方連結是程式碼片段的介紹。
MSDN - 程式碼片段

當我們自訂好snippets之後,可以參考下面圖例將這些程式碼片段加入到VS之中。



自訂的snippets並不限於放在哪個路徑,方便管理就可以了。
(任何snippets的修改都必須重新啟動VS予以初始化)



如果上面的圖例還是不太好想像這些功能的便利性,可以參考下方的示範影片。




6.總結

在開發中結合自訂的Templates與Snippets可以省去一些繁瑣的操作,
可以更快速的產出自己需要的code。

目前對於在VS中使用Unity Template的感想是:
對於新增的檔案即使去修改檔名也不會同步到class name,
必須要手動去修改。

而且只有兩個樣板可以調整,這些都是個人覺得比較不足的地方。

目前我還是覺得直接在Unity新增腳本後,
再到VS撰寫程式碼會比較有效率一點!


[補充1]
有朋友提到多人協作的檔案同步問題。

我們可以將範圍縮小到ScriptTemplates這個資料夾
做一個小型的版控就可以了。



[補充2]
自訂的Script Template也可以放置在 Aessets/ScriptTemplates 資料夾底下。



延伸閱讀
[Unity Script Templates ] 自訂腳本樣板的Keyword

留言

熱門文章