diff --git a/Assets/Scripts/Editor/convertutf8.cs b/Assets/Scripts/Editor/convertutf8.cs new file mode 100644 index 0000000000..ce955f80c9 --- /dev/null +++ b/Assets/Scripts/Editor/convertutf8.cs @@ -0,0 +1,263 @@ + +using UnityEngine; + +using UnityEditor; + +using System.IO; + +using System.Text; + + + +/// + +/// 这个是讲lua文件转化为UTF-8格式的工具 + +/// + + + +public class SetLuaToUTF8 : EditorWindow + +{ + + // 常量 // + + private const string EDITOR_VERSION = "v0.01"; // 这个编辑器的版本号 // + + // gui 相关 // + + private Vector2 m_scrollPos; // 记录 gui 界面的滚动 // + + + + private string m_luaPath = "ManagedResources/~Lua/"; // 文件路径 + + private string m_fileSuffix = ".lua"; // 文件后缀 + + + + /// + + /// 数据目录 + + /// + + static string AppDataPath + + { + + get { return Application.dataPath.ToLower(); } + + } + + + + [MenuItem("Lua/File to UTF-8 Encoding")] + + static void Init() + + { + + Debug.Log("初始化转化lua文件为UTF-8格式"); + + // Get existing open window or if none, make a new one: + + SetLuaToUTF8 window = (SetLuaToUTF8)EditorWindow.GetWindow(typeof(SetLuaToUTF8)); + + } + + + + // UI 按钮显示 // + + void OnGUI() + + { + + m_scrollPos = GUILayout.BeginScrollView(m_scrollPos, GUILayout.Width(Screen.width), GUILayout.Height(Screen.height)); + + GUILayout.BeginVertical(); // begin + + + + //-------------- 调试按钮 --------------// + + // 导出 UI 路径 // + + GUILayout.Label("==========================="); + + + + GUILayout.BeginHorizontal(); + + GUILayout.Label("要转化的路径: "); // + + m_luaPath = GUILayout.TextField(m_luaPath, 64); + + GUILayout.EndHorizontal(); + + GUILayout.BeginHorizontal(); + + GUILayout.Label("文件后缀: "); // + + m_fileSuffix = GUILayout.TextField(m_fileSuffix, 64); + + GUILayout.EndHorizontal(); + + if (GUILayout.Button("\n 文件转utf-8格式 \n")) // + + { + + this.Conversion(); + + } + + + + //-------------- end 调试按钮 --------------// + + GUILayout.Space(5); + + GUILayout.Label("工具版本号: " + EDITOR_VERSION); // + + GUILayout.EndVertical(); // end + + GUILayout.EndScrollView(); + + } + + + + // 开始转化 + + private void Conversion() + + { + + if (m_luaPath.Equals(string.Empty)) + + { + + return; + + } + + + + if (!IsFolderExists(m_luaPath)) + { + + Debug.LogError("找不到文件夹路径!"); + + return; + + } + + + + string path = AppDataPath + "/" + m_luaPath; + + string[] files = Directory.GetFiles(path, "*", SearchOption.AllDirectories); + + foreach (string file in files) + + { + + if (!file.EndsWith(m_fileSuffix)) continue; + + string strTempPath = file.Replace(@"\", "/"); + + Debug.Log("文件路径:" + strTempPath); + + ConvertFileEncoding(strTempPath, null, new UTF8Encoding(false)); + + } + + + + AssetDatabase.Refresh(); + + Debug.Log("格式转换完成!"); + + } + + + + /// 检测是否存在文件夹 + + private static bool IsFolderExists(string folderPath) + + { + + if (folderPath.Equals(string.Empty)) + + { + + return false; + + } + + + + return Directory.Exists(GetFullPath(folderPath)); + + } + + + + /// 返回Application.dataPath下完整目录 + + private static string GetFullPath(string srcName) + + { + + if (srcName.Equals(string.Empty)) + + { + + return Application.dataPath; + + } + + + + if (srcName[0].Equals('/')) + + { + + srcName.Remove(0, 1); + + } + + + + return Application.dataPath + "/" + srcName; + + } + + + + /// + + /// 文件编码转换 + + /// + + /// 源文件 + + /// 目标文件,如果为空,则覆盖源文件 + + /// 目标编码 + + private static void ConvertFileEncoding(string sourceFile, string destFile, Encoding targetEncoding) + + { + + destFile = string.IsNullOrEmpty(destFile) ? sourceFile : destFile; + + File.WriteAllText(destFile, File.ReadAllText(sourceFile, Encoding.UTF8), targetEncoding); + + } + +} diff --git a/Assets/Scripts/Editor/convertutf8.cs.meta b/Assets/Scripts/Editor/convertutf8.cs.meta new file mode 100644 index 0000000000..2ea1382f13 --- /dev/null +++ b/Assets/Scripts/Editor/convertutf8.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 861c974ba4188214bbef6c8b3dc18efc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: