作為一個習慣於偷懶的程序,重復性的無聊內容是最讓人無奈的事,就比如我們創建Unity腳本之后,需要手動調整生成的新腳本的格式、編碼、內容;如果我們要編寫的是編輯器或者服務器端腳本,需要修改的內容就會更多等等,因此我們要尋求一種偷懶的解決辦法,針對這個問題,之前也使用過一些解決辦法,今天就索性總結一下:
1、找到Unity版本對應的安裝路徑,修改對應的腳本模板:
XXX\Editor\Data\Resources\ScriptTemplates\下的模板,直接修改其格式、編碼,這樣之后在使用時,就可以省略其修改;如果需要修改其內容,則可以在腳本模板中使用一些通配符,然后在腳本生成中進行替換處理,比如我們將模板修改如下:
// Created by #DEVELOPER# on #CREATEDATE#.
using UnityEngine;
using System.Collections;
public class #SCRIPTNAME# : MonoBehaviour
{
#region Some Comment
#endregion
void Start ()
{
}
void Update ()
{
}
}
然后針對性的寫一個Editor進行處理,監聽創建事件:
using UnityEngine;
using UnityEditor;
using System.Collections;
public static void OnWillCreateAsset (string _path)
{
_path = _path.Replace(".meta", "");
int tIndex = _path.LastIndexOf(".");
string tFile = _path.Substring(tIndex);
if(tFile != ".cs" && tFile != ".js" && tFile != ".boo")
{
return;
}
tIndex = Application.dataPath.LastIndexOf("Assets");
_path = Application.dataPath.Substring(0, tIndex) + _path;
tFile = System.IO.File.ReadAllText(_path);
tFile = tFile.Replace("#CREATEDATE#", System.DateTime.Now.ToString("d")).Replace("#DEVELOPER#", PlayerSettings.companyName);
System.IO.File.WriteAllText(_path, tFile);
AssetDatabase.Refresh();
}
該Editor腳本可以打包成unity,放入對應的XXX\Editor\Standard Packages\下,以后每次使用時,直接導入。
2、針對MonoDevelop工具本身進行擴展,XXX\MonoDevelop\Addins\目錄下,放入擴展的插件,可以參考下
MonoDevelop file templates for Unity C# scripts,本身提供了可下載的插件,我們可以進行自身定制:不過由於MonoDevelop相對於VS的不足,因此,可能需要由擴展Mono改為擴展VS工具。
3、實現自身的腳本模板:此時我們仍然有較大的靈活性:
1)Unity本身是個很好的工具,給我們提供了很靈活的接口:
讓我們先觀察下XXX\Editor\Data\Resources\ScriptTemplates\下的模板命名,分析下命名規則,其實是有規律的,所有的模板命名都符合:
編號(可能是顯示順序)—創建時要顯示在Unity中的問題—腳本創建之后默認的命名 . 腳本的擴展名 . txt
因此,我們可以將自己的模板放置在本目錄下(Unity需要重啟),這樣在Unity創建時,選擇我們自身的模板就可以按需創建了;同時結合方法2,我們就可以更懶了。
2)我們也可以選擇自己創建模板,這里我們可以參考MOMO大神的博客:
這樣合計合計,綜合各種方法,我們就可以安心大膽的偷懶了!
凡此種種,重復性的勞動總能找到偷懶的方法的!