unity学习教程之定制脚本模板⽰例代码
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 initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
如果我们开发时使⽤的框架有明显的⼀套基础模板,那为项⽬框架定制⼀套模板会很有意义,这样可以为我们省去编写重复代码的时间。这⾥介绍两种⽅法。
2、修改默认脚本模板
打开unity安装⽬录,⽐如D:\unity2018\Editor\Data\Resources\ScriptTemplates,unity内置的模板脚本都在这⾥,那么可以直接修改这⾥的cs⽂件,⽐如我们将81-C# ⽂件修改为如下,那下次创建C# Script时模板就会变成这样:
////////////////////////////////////////////////////////////////////
//      _ooOoo_        //
//      o8888888o        //
/
/      88" . "88        //
//      (| ^_^ |)        //
//      O\ = /O        //
//      ____/`---'\____      //
//    .' \\|  |// `.      //
//    / \\||| : |||// \      //
//    / _||||| -:- |||||- \      //
//    | | \\\ - /// | |      //
//    | \_| ''\---/'' | |      //
//    \ .-\__ `-` ___/-. /      //
//    ___`. .' /--.--\ `. . ___      //
/
/    ."" '< `.___\_<|>_/___.' >'"".    //
//  | | : `- \`.;`\ _ /`;.`/ - ` : | |    //
//  \ \ `-. \_ __\ /__ _/ .-` / /    //
//  ========`-.____`-.___\_____/___.-`____.-'========  //
//      `=---='        //
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  //
//  佛祖保佑永不宕机永⽆BUG    //
////////////////////////////////////////////////////////////////////
using System.Collections;
using System.Collections.Generic;
unity 教程using UnityEngine;
public class #SCRIPTNAME# : MonoBehaviour {
// Use this for initialization
void Start () {
#NOTRIM#
}
// Update is called once per frame
void Update () {
#NOTRIM#
}
}
3、拓展脚本模板
上⾯讲的第⼀种⽅法直接修改了unity的默认配置,这并不适应于所有项⽬,这⾥第⼆种⽅法会更有效,可以针对不同的项⽬和框架创建合适的脚本模板。
⾸先,先创建⼀个⽂本⽂件作为脚本模板,并将其放⼊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/";
//菜单项
[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,我们也可以定制模板。
好了,以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。