手机字体 手机字体怎么改过来
840 2023-04-03 01:29:10
上一篇我们将C#数据结构转换成Lua table,我们发现它只是一行字符串,不方便阅读,我们这篇将其格式化。
#if UNITY_EDITORusing UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEditor;using System.IO;using UnityEditor.ProjectWindowCallback;using System.Text.RegularExpressions;using System;using System.Text;using TileEditor;public class JsonToLua { public static void OpenOrCreateLua(Dictionary<string, object>dict, string path) { FileStream file = new FileStream (path, FileMode.OpenOrCreate, FileAccess.Write); string gameDataStr = "local config = "; string luaStr = HELua.Encode (dict); luaStr = SwitchToLuaFormat (luaStr); gameDataStr += luaStr; gameDataStr += "return config"; // clear text file.Seek(0, SeekOrigin.Begin); file.SetLength(0); char[] data = gameDataStr.ToCharArray(); Encoder myEncoder = Encoding.UTF8.GetEncoder (); byte[] myByte = new byte[data.Length]; myEncoder.GetBytes (data, 0, data.Length, myByte, 0, true); file.Write (myByte, 0, myByte.Length); file.Close (); } /// lua格式化 private static string SwitchToLuaFormat(string gameData) { int tabCount = 0; string luaStr = ""; for (int i = 0; i < gameData.Length; i++) { if (gameData [i] == '{') { if (IsNeedLineFeedByLeftBracket (gameData, i)) { tabCount++; luaStr += gameData [i] + "" + GetTabStringByTabCount (tabCount); if (i < gameData.Length-1 && gameData[i + 1] == ' ') { i++; } } else { luaStr += gameData [i]; } } else if (gameData[i] == '}') { if (IsNeedLineFeedByRightBracket (gameData, i - 1)) { tabCount--; luaStr += "" + GetTabStringByTabCount (tabCount) + gameData [i]; if (i < gameData.Length-1 && gameData[i + 1] == ' ') { i++; } } else { luaStr += gameData [i]; } if (i < gameData.Length - 1 && gameData[i + 1] == ',') { luaStr += gameData [i + 1] + "" + GetTabStringByTabCount (tabCount); i++; if (i < gameData.Length - 1 && gameData [i + 1] == ' ') { i++; } } } else if(gameData[i] == ','){ if (IsNeedLineFeedByComma (gameData, i)) { luaStr += gameData [i] + "" + GetTabStringByTabCount (tabCount); if (i < gameData.Length - 1 && gameData [i + 1] == ' ') { i++; } } else { luaStr += gameData [i]; } } else { luaStr += gameData [i]; } } return luaStr; } /// 遇到左括号是否要换行 private static bool IsNeedLineFeedByLeftBracket(string gameData, int index) { if (index == gameData.Length) { return false; } for (int i = index + 1; i < gameData.Length; i++) { if (gameData[i] == '}') { return false; } else if ((gameData[i] == '=') || (gameData[i] == '{')) { return true; } } return false; } /// 遇到右括号是否要换行 private static bool IsNeedLineFeedByRightBracket(string gameData, int index) { if (index == 0) { return false; } for (int i = index; i >= 0; i--) { if (gameData [i] == '=' || gameData[i] == '}') { return true; } else if (gameData [i] == '{') { return false; } } return false; } /// 遇到逗号是否需要换行 private static bool IsNeedLineFeedByComma(string gameData, int index) { if (index == 0) { return false; } for (int i = index - 1; i >= 0; i--) { if (gameData[i] == '=') { return true; } else if (gameData[i] == '{') { return false; } } return false; } private static string GetTabStringByTabCount(int tabCount) { string tabStr = ""; if (tabCount >= 0) { for (int i = 0; i < tabCount; i++) { tabStr += ""; } } else { Debug.LogError ("tab count are lower then zero!"); } return tabStr; }} #endif
现在就是正常的lua缩进后的文件,方便我们阅读。