您的位置:首页 > 移动开发 > Unity3D

【Unity开发技巧】Unity脚本自动添加注释头

2017-12-04 16:30 417 查看
原理就是为新建的脚本文件写入注释内容

方法一:

将如下脚本放置Editor目录下即可

using UnityEditor;
using UnityEngine;
using System.IO;

public class AddFileHeadComment : UnityEditor.AssetModificationProcessor
{

// 添加脚本注释模板
private static string str =
"/**\r\n"
+ "*Copyright(C) 2017 by #COMPANY#\r\n"
+ "*All rights reserved.\r\n"
+ "*ProductName: #PRODUCTNAME#\r\n"
+ "*Author: #AUTHOR#\r\n"
+ "*Version: #VERSION#\r\n"
+ "*UnityVersion: #UNITYVERSION#\r\n"
+ "*CreateTime: #CreateTime#\r\n"
+ "*Description: \r\n"
+ "*/\r\n";

/// <summary>
/// 此函数在asset被创建完,文件已经生成到磁盘上,但是没有生成.meta文件和import之前被调用
/// </summary>
/// <param name="newFileMeta">newfilemeta 是由创建文件的path加上.meta组成的</param>
public static void OnWillCreateAsset(string newFileMeta)
{
// 只修改C#脚本
string newFilePath = newFileMeta.Replace(".meta", "");
if (newFilePath.EndsWith(".cs"))
{
string scriptContent = str;
scriptContent += File.ReadAllText(newFilePath);
// 替换字符串为系统时间
scriptContent = scriptContent.Replace("#CreateTime#", System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
//这里实现自定义的一些规则
scriptContent = scriptContent.Replace("#SCRIPTFULLNAME#", Path.GetFileName(newFilePath));
scriptContent = scriptContent.Replace("#COMPANY#", PlayerSettings.companyName);
scriptContent = scriptContent.Replace("#PRODUCTNAME#", PlayerSettings.productName);
scriptContent = scriptContent.Replace("#AUTHOR#", "Tony");
scriptContent = scriptContent.Replace("#VERSION#", "1.0");
scriptContent = scriptContent.Replace("#UNITYVERSION#", Application.unityVersion);
File.WriteAllText(newFilePath, scriptContent);
}
}
}

--------------------------------华丽的分割线--------------------------------

方法二:

1.首先找到Unity的安装目录下文件夹ScriptTemplates下的“81-C# Script-NewBehaviourScript.cs”脚本;

Windows路径:D:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates

Mac地址:/Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates/

  说明:Unity中的脚本创建使用的是模板拷贝,拷贝的就是这个文件夹下的脚本。

2.打开里面的 81-C# Script-NewBehaviourScript.cs,这个是创建C#脚本的模板,在里面添加注释内容,

如下:

/**
*Copyright(C) 2015 by #COMPANY#
*All rights reserved.
*ProductName:  #PRODUCTNAME#
*FileName:     #SCRIPTFULLNAME#
*Author:       #AUTHOR#
*Version:      #VERSION#
*UnityVersion:#UNITYVERSION#
*CreateTime:   #CreateTime#
*Description:
*History:
*/

using UnityEngine;
using System.Collections;

public class #SCRIPTNAME# : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}
}


3.修改后保存,然后进入Unit编辑器,在Editor文件夹下创建脚本:

AddFileHeadComment.cs

using UnityEditor;
using UnityEngine;
using System.IO;

public class AddFileHeadComment : UnityEditor.AssetModificationProcessor
{
/// <summary>
/// 此函数在asset被创建完,文件已经生成到磁盘上,但是没有生成.meta文件和import之前被调用
/// </summary>
/// <param name="newFileMeta">newfilemeta 是由创建文件的path加上.meta组成的</param>
public static void OnWillCreateAsset(string newFileMeta)
{
// 只修改C#脚本
string newFilePath  = newFileMeta.Replace(".meta", "");
if (newFilePath.EndsWith(".cs"))
{
string scriptContent = str;
scriptContent += File.ReadAllText(newFilePath);
// 替换字符串为系统时间
scriptContent = scriptContent.Replace("#CreateTime#", System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
//这里实现自定义的一些规则
scriptContent = scriptContent.Replace("#SCRIPTFULLNAME#", Path.GetFileName(newFilePath));
scriptContent = scriptContent.Replace("#COMPANY#", PlayerSettings.companyName);
scriptContent = scriptContent.Replace("#PRODUCTNAME#", PlayerSettings.productName);
scriptContent = scriptContent.Replace("#AUTHOR#", "Tony");
scriptContent = scriptContent.Replace("#VERSION#", "1.0");
scriptContent = scriptContent.Replace("#UNITYVERSION#", Application.unityVersion);
File.WriteAllText(newFilePath, scriptContent);
}
}

}


4.保存脚本,脚本使用的原理就是在Unity保存脚本的时候对##的关键字进行真实信息的替换,达到时间和公司,作者等信息的准确自定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Unity开发技巧