作为一个习惯于偷懒的程序,重复性的无聊内容是最让人无奈的事,就比如我们创建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大神的博客:

Unity3D研究院编辑器之创建Lua脚本模板(十六)

 

这样合计合计,综合各种方法,我们就可以安心大胆的偷懒了!

凡此种种,重复性的劳动总能找到偷懒的方法的!