[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
留言
張貼留言