首页 > 代码库 > 《转》Unity3D研究院编辑器之创建Lua脚本模板
《转》Unity3D研究院编辑器之创建Lua脚本模板
Unity里能创建 c#脚本模板,但是如果我想创建Lua脚本模板怎么办呢?拓展一下编辑器吧。
设置一下Lua脚本的模板地址 : Assets/Editor/Lua/Template/lua.lua
using UnityEngine;using UnityEditor;using System;using System.IO;using System.Text;using UnityEditor.ProjectWindowCallback;using System.Text.RegularExpressions; public class Test{ [MenuItem("Assets/Create/Lua Script", false, 80)] public static void CreatNewLua() { ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<MyDoCreateScriptAsset>(), GetSelectedPathOrFallback() + "/New Lua.lua", null, "Assets/Editor/Lua/Template/lua.lua"); } public static string GetSelectedPathOrFallback() { string path = "Assets"; foreach (UnityEngine.Object obj in Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.Assets)) { path = AssetDatabase.GetAssetPath(obj); if (!string.IsNullOrEmpty(path) && File.Exists(path)) { path = Path.GetDirectoryName(path); break; } } return path; }} class MyDoCreateScriptAsset : EndNameEditAction{ public override void Action(int instanceId, string pathName, string resourceFile) { UnityEngine.Object o = CreateScriptAssetFromTemplate(pathName, resourceFile); ProjectWindowUtil.ShowCreatedAsset(o); } internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile) { string fullPath = Path.GetFullPath(pathName); StreamReader streamReader = new StreamReader(resourceFile); string text = streamReader.ReadToEnd(); streamReader.Close(); string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); text = Regex.Replace(text, "#NAME#", fileNameWithoutExtension); //string text2 = Regex.Replace(fileNameWithoutExtension, " ", string.Empty); //text = Regex.Replace(text, "#SCRIPTNAME#", text2); //if (char.IsUpper(text2, 0)) //{ // text2 = char.ToLower(text2[0]) + text2.Substring(1); // text = Regex.Replace(text, "#SCRIPTNAME_LOWER#", text2); //} //else //{ // text2 = "my" + char.ToUpper(text2[0]) + text2.Substring(1); // text = Regex.Replace(text, "#SCRIPTNAME_LOWER#", text2); //} 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(pathName); return AssetDatabase.LoadAssetAtPath(pathName, typeof(UnityEngine.Object)); } }
因为是模板就可以添加一些预制代码在上面, 当填写完类名后可以来替换操作, 例如unity自带的 创建C#文件, 外面写了类名里面也跟这变。Creat -> Lua Script
然后可以输入Lua脚本的类名
然后就根据自己创建Lua的文件名 正则替换模板里的东西了。
- 本文固定链接: http://www.xuanyusong.com/archives/3732
《转》Unity3D研究院编辑器之创建Lua脚本模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。