自定义模板的一些问题

其实有很多文章都写了自定义模板,添加头部注释,例如这篇文章. 都是要找到untiy 自己的模板c# txt,然后写入相关的替代码,在匹配更换,其中的问题:

  1. 当换电脑,或者unity换了一个unity版本之后,又得重新找到模板,写入
  2. 无法添加多个模板

如何自定义模板

这里有两个方法 需要知道 ProjectWindowUtil.CreateAssetWithContentOnWillCreateAsset,可以查查API 手册
https://docs.unity3d.com/ScriptReference/AssetModificationProcessor.OnWillCreateAsset.html
https://docs.unity3d.com/462/Documentation/ScriptReference/ProjectWindowUtil.html

更新2021年10月



public class NewScriptTemplatesGenerate
{/// <summary>/// 创建模板/// </summary>[MenuItem("Assets/Create/My Behaviour Script", false, 80)]static void CreateMyMonoBehaviourScrtip(){CreateNewScript("NewBehaviourScript.cs", MyBehaviourScriptTemplate);}[MenuItem("Assets/Create/My C# Script", false, 80)]static void CreateMyScrtip(){CreateNewScript("NewScript.cs", MyScriptTemplate);}private static void CreateNewScript(string sctiptName, string scriptTemplate){try{ProjectWindowUtil.CreateAssetWithContent(sctiptName, scriptTemplate, EditorGUIUtility.IconContent("cs Script Icon").image as Texture2D);}catch (Exception ex){Debug.LogError("创建错误!!! " + ex.Message);}}/// <summary>/// 给脚本添加标题头  https://docs.unity.cn/cn/current/ScriptReference/AssetModificationProcessor.OnWillCreateAsset.html/// </summary>class AddFileHeadComment : UnityEditor.AssetModificationProcessor{/// <summary>/// 此函数在asset被创建,文件已经生成到磁盘上,生成了.meta文件没有正式创建完成之间调用(我觉得) 和import之前被调用/// </summary>/// <param name="newFileMeta">newfilemeta 是由创建文件的path加上.meta组成的</param>public static void OnWillCreateAsset(string newFileMeta){//把meta去掉string newFilePath = newFileMeta.Replace(".meta", "");//得到扩展名string fileExt = Path.GetExtension(newFilePath);if (fileExt != ".cs") return;string realPath = Application.dataPath.Replace("Assets", "") + newFilePath;string scriptContent = File.ReadAllText(realPath);//这里实现自定义的一些规则scriptContent = scriptContent.Replace("#SCRIPTNAME#", Path.GetFileName(Path.GetFileNameWithoutExtension(newFilePath)));//scriptContent = scriptContent.Replace("#COMPANY#", PlayerSettings.companyName);scriptContent = scriptContent.Replace("#AUTHOR#", "xxx");scriptContent = scriptContent.Replace("#DESC#", "desc");// scriptContent = scriptContent.Replace("#VERSION#", "1.0");// scriptContent = scriptContent.Replace("#UNITYVERSION#", Application.unityVersion);//  scriptContent = scriptContent.Replace("#DATE#", DateTime.Now.ToString("yyyy-MM-dd"));File.WriteAllText(realPath, scriptContent);//一定要加这句话 不然 在创建之后点击脚本预览发现还是原来模板效果//一开始就是没加这句话 所以有bug 这就导致了第二个方法产生AssetDatabase.ImportAsset(newFilePath);}}#region 脚本模板private const string MyBehaviourScriptTemplate =
@"using System.Collections;
using UnityEngine;/// <summary>
/// ____AUTHOR:    #AUTHOR#
/// ____DESC:      #DESC#
/// </summary>
public class #SCRIPTNAME# : MonoBehaviour
{private void Start(){}
}";private const string MyScriptTemplate =
@"using System.Collections;/// <summary>
/// ____AUTHOR:    #AUTHOR#
/// ____DESC:      #DESC#
/// </summary>public class #SCRIPTNAME#
{public  #SCRIPTNAME#(){}
}";
}#endregion


知道这两个方法之后就好做了
我们可以在unity中创建一个Editor文件夹,然后自定义一个 c#模板,我定义了两个,一个继承mono,一个不继承mono(txt文件)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// --(*^__^*) --
/// ____AUTHOR:    #AUTHOR#
/// ____DATE:      #DATE#
/// ____DESC:      #DESC#
/// ____VERSION:       #VERSION#
/// ____UNITYVERSION:  #UNITYVERSION#
/// --(=^ω^=) --
/// </summary>public class #SCRIPTNAME# : MonoBehaviour
{private void Start(){}
}

另一个

using System.Collections;
/// <summary>
/// --(*^__^*) --
/// ____AUTHOR:    #AUTHOR#
/// ____DATE:      #DATE#
/// ____DESC:      #DESC#
/// ____VERSION:       #VERSION#
/// --(=^ω^=) --
/// </summary>public class #SCRIPTNAME#
{public  #SCRIPTNAME#(){}
}


然后 我们创建一个ScriptTemplatesGenerate.cs

/* 自定义 C# 模板创建* 在修改unity自定义的模板之后,换个版本,换个电脑又是原样了* 所以得自己定义一个*帮助链接*("https://blog.csdn.net/mobilebbki399/article/deta*/using UnityEngine;
using UnityEditor;
using System;
using System.IO;public class ScriptTemplatesGenerate
{//模板文件位置static string tempCshapeMonoBehaviourPath = Application.dataPath + "//Editor/NewBehaviourScriptTemplates.txt";static string tempCshapePath = Application.dataPath + "/Editor/NewScriptTemplates.txt";[MenuItem("Assets/Create/My C# MonoBehaviour Script", false, 80)]static void CreateMyMonoBehaviourCShapeScrtip(){ScriptGenerate(true);}[MenuItem("Assets/Create/My C#  Script", false, 80)]static void CreateMyCShapeScrtip(){ScriptGenerate(false);}private static void ScriptGenerate(bool isMonoBehaviour){try{if (isMonoBehaviour)ProjectWindowUtil.CreateAssetWithContent("NewBehaviourScript.cs", File.ReadAllText(tempCshapeMonoBehaviourPath), EditorGUIUtility.IconContent("cs Script Icon").image as Texture2D);elseProjectWindowUtil.CreateAssetWithContent("NewScript.cs", File.ReadAllText(tempCshapePath), EditorGUIUtility.IconContent("cs Script Icon").image as Texture2D);}catch (Exception ex){Debug.LogError("模板文件路径错误!!! " + ex.Message);}}/// <summary>/// 给脚本添加标题头/// </summary>class AddFileHeadComment : UnityEditor.AssetModificationProcessor{/// <summary>/// 此函数在asset被创建,文件已经生成到磁盘上,生成了.meta文件没有正式创建完成之间调用(我觉得) 和import之前被调用/// </summary>/// <param name="newFileMeta">newfilemeta 是由创建文件的path加上.meta组成的</param>public static void OnWillCreateAsset(string newFileMeta){//把meta去掉string newFilePath = newFileMeta.Replace(".meta", "");//得到扩展名string fileExt = Path.GetExtension(newFilePath);if (fileExt != ".cs") return;string realPath = Application.dataPath.Replace("Assets", "") + newFilePath;string scriptContent = File.ReadAllText(realPath);//这里实现自定义的一些规则scriptContent = scriptContent.Replace("#SCRIPTNAME#", Path.GetFileName(Path.GetFileNameWithoutExtension(newFilePath)));//scriptContent = scriptContent.Replace("#COMPANY#", PlayerSettings.companyName);scriptContent = scriptContent.Replace("#AUTHOR#", "海贼王");scriptContent = scriptContent.Replace("#DESC#", "文件描述");scriptContent = scriptContent.Replace("#VERSION#", "1.0");scriptContent = scriptContent.Replace("#UNITYVERSION#", Application.unityVersion);scriptContent = scriptContent.Replace("#DATE#", DateTime.Now.ToString("yyyy-MM-dd"));File.WriteAllText(realPath, scriptContent);//一定要加这句话 不然 在创建之后点击脚本预览发现还是原来模板效果//一开始就是没加这句话 所以有bug 这就导致了第二个方法产生AssetDatabase.ImportAsset(newFilePath);}}
}

代码已经写了注释 就不再多说,最后来看看效果

可以看到多出了两个菜单选项,然后点击创建即为自定义模板.

我在逛b战的时候发现一篇文章: https://www.bilibili.com/read/cv6097455
这个也可行,我们完全可以把unity自带的模板清空然后在自己的内容写入到.cs文本中,我不这么做就是字符串拼接到时候会很乱 还是自己写个模板放着,放到 自己框架 或者特定的文件夹中即可.

根据这个想法 我们也可以自定义其他模板

其实还有一种方法 ,参考一下,我是觉得稍微麻烦些,不过学点知识也好
https://www.xuanyusong.com/archives/3732

Unity 自定义脚本模板 添加头部注释相关推荐

  1. vscode添加头部注释快捷键

    在vscode内安装扩展: 在settings.json文件内加入下面的代码:把"XXXX"换成自己喜欢的昵称. {"psi-header.changes-trackin ...

  2. vscode如何添加头部注释、作者注释

    vscode如何添加头部注释.作者注释 Visual Studio Code是微软开发的编辑器, 目前国内使用的用的人是越来越多.那么vscode如何添加头部注释,让你的代码有很明显的标识呢? 第一步 ...

  3. 潇洒郎: Pycharm 自定义脚本模板

    Pycharm 自定义脚本模板 模板内容: # coding=utf-8 # Author: xuxiaosa # Created_Date: ${DATE} # Created_Time: ${TI ...

  4. 【C#】VS 2017 如何创建项模板---自动添加头部注释

    一.找到VS代码文件 牛腩视频中老师讲了一堆,并不想听,然后自己搜索了一下,总结了该教程. 要想让VS帮我们自动填写头部注释,只需要修改一下VS相应语言脚本模板中的文件信息即可. 以C#为例: 首先找 ...

  5. 【100个 Unity实用技能】 | Unity自定义脚本的初始模版

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  6. PyCharm在创建py文件时自动添加头部注释

    在Pycharm主界面找到 File ----->> Setting ----->> Editor ----->> File and Code Templates ...

  7. Unity自定义创建文件夹

    文章目录 前言 Unity自定义创建文件夹 下载链接 前言 懒惰才是推动生产力发展的动力,在Unity每次创建脚本跟文件夹都要先右键然后点Create再点二级目录,索性我就直接给挪到一级目录. Uni ...

  8. unity之定制脚本模板

    1.unity的脚本模板 新版本unity中的C#脚本有三类,第一类是我们平时开发用的C# Script:第二类是Testing,用来做单元测试:第三类是Playables,用作TimeLine中管理 ...

  9. Unity脚本 (1) --- 创建脚本以及挂载脚本的本质,脚本模板的修改

    值类型 --- 在栈区中开辟内存空间并直接存储在栈区中,引用类型 --- 在栈区中开辟内存空间存引用,在堆区中开辟内存空间存数据(有可能堆区中还要开辟引用),然后将堆区中存储数据的内存空间的地址传给引 ...

最新文章

  1. 少壮不努力,老大背单词
  2. DARPA将开发无需手术的神经技术,实现脑机接口
  3. PHP7+Swoole/Nginx/Golang性能对比
  4. 【博客】csdn搬家到wordpress
  5. rmdir命令--Linux命令应用大词典729个命令解读
  6. 【今日CV 计算机视觉论文速览】Thu, 7 Mar 2019
  7. java的核心类库_Java核心类库
  8. Java基础面试题整理
  9. MarkDown-如何插入上划线,下划线,中划线汇总
  10. 群晖php安装目录,如何在群晖上搭建网盘目录?(无Docker) 来自 世界三傻
  11. Windows-Server2003 关闭IE增强的安全配置堵塞方法
  12. C语言:离散数学8.1.5 笛卡尔积
  13. CF 940E Cashback (DP+multiset)
  14. 2020年世界航天发射统计
  15. 微软过桥问题Dijkstra/倒水问题
  16. 连快播王欣都要做区块链,蚂蚁金服为什么不碰ICO?
  17. 外点法、内点法解约束问题matlab
  18. 医院项目-预约挂号-第7部分
  19. 解决导入markdown时本地图片无法显示问题——图床
  20. RecyclerView缓存机制(scrap view)

热门文章

  1. 用Python画一个sin函数图
  2. 积分制管理软件功能之创建组织架构
  3. java boxplot_【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot
  4. HIT 2018 CS:APP大作业 程序人生-Hello’s P2P
  5. appium无法控制真机问题,Error executing adbExec
  6. Amazon S3下载图片
  7. msbuild 语法_MSBuild 命令参数
  8. 2022食品饮品新趋势报告:从品类分析、产品创新营销挖掘行业趋势
  9. poi-tl生成word中文和西文使用不同字体
  10. 基因数据处理22之对GRCH38全基因建立BWA索引