1、unity的脚本模板

新版本unity中的C#脚本有三类,第一类是我们平时开发用的C# Script;第二类是Testing,用来做单元测试;第三类是Playables,用作TimeLine中管理时间线上每一帧的动画、声音等。我们点击创建脚本时,会自动生成unity内置的一套模板:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NewBehaviourScript : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}
}

如果我们开发时使用的框架有明显的一套基础模板, 那为项目框架定制一套模板会很有意义,这样可以为我们省去编写重复代码的时间。这里介绍两种方法。

2、修改默认脚本模板

打开unity安装目录,比如D:\unity2018\Editor\Data\Resources\ScriptTemplates,unity内置的模板脚本都在这里,那么可以直接修改这里的cs文件,比如我们将81-C# Script-NewBehaviourScript.cs.txt文件修改为如下,那下次创建C# Script时模板就会变成这样:

////
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                 //
////using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class #SCRIPTNAME# : MonoBehaviour {// Use this for initializationvoid Start () {#NOTRIM#}// Update is called once per framevoid Update () {#NOTRIM#}
}

3、拓展脚本模板

上面讲的第一种方法直接修改了unity的默认配置,这并不适应于所有项目,这里第二种方法会更有效,可以针对不同的项目和框架创建合适的脚本模板。
首先,先创建一个文本文件MyTemplateScript.cs.txt作为脚本模板,并将其放入unity project的Editor文件夹下,模板代码为:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MyNewBehaviourScript : MonoBase {//添加事件监听protected override void AddMsgListener(){}//处理消息protected override void HandleMsg(MsgBase msg){switch (msg.id){default:break;}}}

我们使用时,需要在Project视图中右击->Create->C# FrameScript 创建脚本模板,因此首先要创建路径为Assets/Create/C# FrameScript的MenuItem,点击创建脚本后,需要修改脚本名字,因此需要在拓展编辑器脚本中继承EndNameEditAction来监听回调,最终实现输入脚本名字后自动创建相应的脚本模板。

代码如下,将这个脚本放入Editor文件夹中:
using UnityEditor;
using UnityEngine;
using System;
using System.IO;
using UnityEditor.ProjectWindowCallback;
using System.Text;
using System.Text.RegularExpressions;public class CreateTemplateScript {//脚本模板路径private const string TemplateScriptPath = "Assets/Editor/MyTemplateScript.cs.txt";//菜单项[MenuItem("Assets/Create/C# FrameScript", false, 1)]static void CreateScript(){string path = "Assets";foreach (UnityEngine.Object item in Selection.GetFiltered(typeof(UnityEngine.Object),SelectionMode.Assets)){path = AssetDatabase.GetAssetPath(item);if (!string.IsNullOrEmpty(path) && File.Exists(path)){path = Path.GetDirectoryName(path);break;}}ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<CreateScriptAsset>(),path + "/MyNewBehaviourScript.cs",null, TemplateScriptPath);}}class CreateScriptAsset : EndNameEditAction
{public override void Action(int instanceId, string newScriptPath, string templatePath){UnityEngine.Object obj= CreateTemplateScriptAsset(newScriptPath, templatePath);ProjectWindowUtil.ShowCreatedAsset(obj);}public static UnityEngine.Object CreateTemplateScriptAsset(string newScriptPath, string templatePath){string fullPath = Path.GetFullPath(newScriptPath);StreamReader streamReader = new StreamReader(templatePath);string text = streamReader.ReadToEnd();streamReader.Close();string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(newScriptPath);//替换模板的文件名text = Regex.Replace(text, "MyTemplateScript", fileNameWithoutExtension);bool encoderShouldEmitUTF8Identifier = true;bool throwOnInvalidBytes = false;UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes);bool append = false;StreamWriter streamWriter = new StreamWriter(fullPath, append, encoding);streamWriter.Write(text);streamWriter.Close();AssetDatabase.ImportAsset(newScriptPath);return AssetDatabase.LoadAssetAtPath(newScriptPath, typeof(UnityEngine.Object));}}

然后,在project中,点击创建C# FrameScript,输入脚本名字,对应的脚本就已经创建好了

4、总结

上面介绍了两种方案,第一种适合玩玩,第二种方法显然逼格高一些,为不同的项目和框架定制一套脚本模板,可以让我们少写一些重复代码。按照上面介绍的方法,我们同样可以修改和拓展Testing、Playables的脚本模板,甚至shader,我们也可以定制模板。

转载于:https://www.cnblogs.com/IAMTOM/p/10156148.html

unity之定制脚本模板相关推荐

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

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

  2. Unity脚本模板自定义字符串替换

    在用Unity开发游戏的时候,由于经常要用到不同的脚本模板,特别是在写Editor和AttributeDrawer这类脚本时很想能实现一定规则的字符串替换,所以就写了这么个脚本实现自定义模板+自定义字 ...

  3. Unity 自定义脚本模板 添加头部注释

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

  4. Unity创建C#脚本与项目的模板路径并修改

    Unity创建C#脚本与项目的模板路径并修改 C#脚本模板 路径 模板文件 项目模板 路径 修改项目模板 C#脚本模板 在项目开发的过程中,我们需要对一个.cs文件添加一些注释(例如:创建者,创建日期 ...

  5. Unity中常用的单例模式、对象池的脚本模板,连按退出和滑动翻页或放大缩小的功能实现,以及属性在代码中的灵活使用

    1.单例模式的脚本模板: Unity中针对一些常用的manager可以使用单例模式,用于统一的功能管理: //普通单例,不需要继承MonoBehavior,不用挂载在GameObject上 publi ...

  6. Unity编辑器开发——通过模板创建Lua脚本的两种方式(一)

    个人学习笔记,如有错误.疑问.建议,欢迎留言. 声明:本文不得以任何形式进行转载.  前言:在Unity编辑器的Project界面,可以直接右键创建C#脚本,而目前许多游戏公司使用的是tolua.xl ...

  7. Unity实验室之根据模板自动生成文件

    前言 在写代码时,会有一些需要重复写的内容,如统一的头注释,统一的框架下的风格一致的代码等,一种解决方案是把这些都放到一个模板文件夹下,每次用时就Copy一下,但这样有几个问题,一是Copy起来比较麻 ...

  8. 【Locust】新版本locust使用入门到分布式,附带脚本模板,复制即用。

    介绍 Locust 是一种易于使用.可编写脚本且可扩展的性能测试工具.使用的'协程'方式,能够单机提供相对较大并发,并且存在可视化图形界面.也有无图形界面.分布式等多种运行方式.以下内容针对最新版本的 ...

  9. win服务器自动发邮件,windows关机前执行脚本设置与关机blat自动发送邮件脚本模板...

    windows关机前执行脚本设置与关机blat自动发送邮件脚本模板 发布时间:2020-07-25 02:21:24 来源:51CTO 阅读:3093 作者:nn1183 价值:实时掌握开关机记录: ...

最新文章

  1. 库克退休前的最后一战:不是苹果汽车而是……
  2. STL:priority_queue
  3. 织梦guestbook.php漏洞,DEDE:织梦漏洞修复(含任意文件上传漏洞与注入漏洞)
  4. 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
  5. 学成在线--13.RabbitMQ工作模式
  6. mybatis 报错: Invalid bound statement (not found)
  7. (转)让我们原谅齐达内吧!(附一张落泪的照片)
  8. Spring bean生命周期概览
  9. https被修改成http排查过程
  10. 图纸怎么发给别人_微信语音怎么转发?微信语音转发给别人最新办法10秒解决...
  11. 报错:/check/src/check_log.c:27:10: 致命错误: subunit/child.h:没有那个文件或目录
  12. 私人订制,一份专属你的数据分析课程!
  13. 第二次作业:硬币游戏——代码分析与改进
  14. NGN学习笔记4——软交换中的协议2—Megaco/H.248
  15. windows下安装sqlmap 详细教程
  16. excel中用正则匹配_Excel 使用正则表达式提取数据
  17. 安卓手机修改音量键为HOME和BACK
  18. 手游-放开那三国socket协议分析
  19. 证件照的尺寸规格和像素要求
  20. Spark 图计算实战

热门文章

  1. Liunx下HPCC(HPC Challenge)的安装运行
  2. Golang slice原理
  3. DPDK使用linux drivers(二十九)
  4. leetcode算法题--解码方法★
  5. php函数scandir_使用PHP函数scandir排除特定目录
  6. 【C++】unordered_map 使用方法
  7. 企业网络安全之安全维度
  8. java 关于日期的一些常用惯例
  9. 《Objective-c》Foundation框架 -(结构体:Range、Point、Size、Rect)
  10. Group by优化