自定义新建代码时的菜单在Unity中创建代码文件

自定义新建代码时的菜单在Unity中创建代码文件

自定义新建代码时的菜单

在Unity中创建代码文件的时候,实际流程就是复制了一份文本,然后修改了一下后缀名。

在Unity的安装目录下面开发学习,可以找到这个文件夹:

Unity\Editor\Data\Resources\ScriptTemplates。

这里面存放的,就是代码文本的模版。

这里写图片描述

可以看一下在Unity中对应的菜单结构

这里写图片描述

可以很容易的判断出,文件名的命名方式如下:

打开文件就可以直接编辑里面的内容了,但是个人建议不要直接在记事本中编辑,可以使用你目前的代码编辑器新建文件后替换,否则空行和缩进和预想的可能会有区别。

而个人推荐,不要去改动原有的文件,而是根据上面的文件命名规则,建立自己独有的菜单及代码文本。

这里写图片描述

如上图所示unity修改代码,我自己新建了三个文本文件,优先级设置为11~13,共同使用名为“XZ”的一级菜单音效,二级菜单则根据文件特性命名。在Unity中效果就是酱紫(需要重启一下Unity):

这里写图片描述

然后你就可以根据个人习惯去修改自己的代码模板了。

代码模板的修改和自定义标签

你可以根据个人需要,加上文件说明,删掉没用的注释。添加常用的命名空间等。

/*
 * FileName:    #SCRIPTNAME#
 * Author:      #AUTHORNAME#
 * CreateTime:  #CREATETIME#
 * Description:
 * 
*/
using UnityEngine;
using System.Collections;
public class #SCRIPTNAME# : MonoBehaviour
{
    void Start()
    {
    }
    void Update()
    {
    }
}

--[==[
FileName:   #SCRIPTNAME#
Author:     #AUTHORNAME#
CreateTime: #CREATETIME#
Description:
--]==]
#SCRIPTNAME# = {
}
#SCRIPTNAME#.__index = #SCRIPTNAME#

上面就是我的C#和lua代码的模板,#SCRIPTNAME#这个标签在文件创建后会自动替换成文件的名称。而#AUTHORNAME#和#CREATETIME#这两个标签则是我自定义的,因为这个不是固定字符串,需要在文件创建的时候生成。

在UnityEditor中有许多很实用的类,这里我们需要用到UnityEditor.AssetModificationProcessor。这个类的详细说明可以查询Unity的API。代码如下:

/*
 * FileName:    ScriptInitializer
 * Author:      熊哲
 * CreateTime:  2016/08/08 10:49
 * Description:
 * 用于初始化脚本文件,使用前请先修改Unity的脚本模板
 * 文件请放置于Editor文件夹下
*/
using System.IO;
namespace XZUnityEditor
{
    public class ScriptInitializer : UnityEditor.AssetModificationProcessor
    {
        public static void OnWillCreateAsset(string path)
        {
            path = path.Replace(".meta", "");
            if (path.ToLower().EndsWith(".cs") || path.ToLower().EndsWith(".lua"))
            {
                string content = File.ReadAllText(path);
                content = content.Replace("#AUTHORNAME#", "熊哲");
                content = content.Replace("#CREATETIME#", System.DateTime.Now.ToString());
                File.WriteAllText(path, content);
            }
        }
    }
}

这段代码网上很多地方都有,本人修改不多,但是实在不知道原始出处。

这个类继承UnityEditor.AssetModificationProcessor后,在有资源创建时,会自动调用其中的OnWillCreateAsset(string path)方法unity修改代码,这个方法传入的参数是资源对应的meta文件路径(Unity里所有的资源都有对应的meta文件)。把该路径中的“.meta”后缀去掉就是你所创建的文件了。使用File.ReadAllText(path)读取文件,替换掉你自定义的标签后写回,代码的初始化也就完成了。

文章来源:https://blog.csdn.net/xmousez/article/details/52858339