From 58f8d2063b9cf02ff293be7a40cdfe8994da99b5 Mon Sep 17 00:00:00 2001 From: client_Wu Xijin <364452445@qq.com> Date: 星期六, 27 十月 2018 16:12:48 +0800 Subject: [PATCH] 4340 【前端】支持xlua方便IOS提审 --- Assets/Editor/Tool/CreateLuaClassFile.cs | 64 ++++++++++++++++++++++++++++++++ 1 files changed, 64 insertions(+), 0 deletions(-) diff --git a/Assets/Editor/Tool/CreateLuaClassFile.cs b/Assets/Editor/Tool/CreateLuaClassFile.cs index b724c56..d0ae8ef 100644 --- a/Assets/Editor/Tool/CreateLuaClassFile.cs +++ b/Assets/Editor/Tool/CreateLuaClassFile.cs @@ -71,6 +71,70 @@ } +public class CreateLuaBehaviourClassFile +{ + static string templatePath = "Assets/Editor/ScriptTemplate/LuaBehaviourTemplate.txt"; + + [MenuItem("Assets/Create/Lua/LuaBehaviour", false, 4)] + public static void CreateLuaClass() + { + var path = GetSelectedPathOrFallback() + "/NewBehaviour.lua"; + AssetDatabase.DeleteAsset(path); + ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<LuaBehaviourTemplate>(), path, null, templatePath); + } + + 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 LuaBehaviourTemplate : 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(); + var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); + text = Regex.Replace(text, "#ClassName#", fileNameWithoutExtension); + text = Regex.Replace(text, "#DateTime#", System.DateTime.Now.ToLongDateString()); + + 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)); + } + +} + + + public class CreateLuaConfigClassFile { static string templatePath = "Assets/Editor/ScriptTemplate/LuaConfigTemplate.txt"; -- Gitblit v1.8.0