| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEditor.ProjectWindowCallback; |
| | | using UnityEngine; |
| | | using UnityEditor; |
| | | using System.IO; |
| | | using System.Text; |
| | | using System.Text.RegularExpressions; |
| | | using System; |
| | | using UnityEngine.Events; |
| | | |
| | | public class CreateConfigClassFile |
| | | { |
| | | |
| | | const string retract1 = "\t"; |
| | | const string retract2 = "\t\t"; |
| | | const string retract3 = "\t\t\t"; |
| | | const string retract4 = "\t\t\t\t"; |
| | | const string retract5 = "\t\t\t\t\t"; |
| | | |
| | | public static event UnityAction FileCreateEvent; |
| | | |
| | | public static string filedContent = string.Empty; |
| | | public static string readContent = string.Empty; |
| | | |
| | | |
| | | [UnityEditor.MenuItem("Assets/生成配置解析类型")] |
| | | public static void GenerateConfigClass() |
| | | { |
| | | |
| | | if (Selection.objects != null) |
| | | { |
| | | foreach (var o in Selection.objects) |
| | | { |
| | | var path = AssetDatabase.GetAssetPath(o.GetInstanceID()); |
| | | if (path.EndsWith(".txt") || path.EndsWith(".TXT")) |
| | | { |
| | | CreateConfigClass(new FileInfo(path)); |
| | | } |
| | | } |
| | | |
| | | AssetDatabase.Refresh(); |
| | | } |
| | | } |
| | | |
| | | public static void CreateConfigClass(FileInfo fileInfo, bool isIL = false) |
| | | { |
| | | var lines = File.ReadAllLines(fileInfo.FullName); |
| | | if (lines.Length > 2) |
| | | { |
| | | var typeLine = lines[0]; |
| | | var fieldLine = lines[1]; |
| | | var types = typeLine.Split('\t'); |
| | | var fields = fieldLine.Split('\t'); |
| | | var min = Mathf.Min(types.Length, fields.Length); |
| | | var fieldFulls = new List<string>(); |
| | | var readFulls = new List<string>(); |
| | | |
| | | int index = 0; |
| | | for (int j = 0; j < min; j++) |
| | | { |
| | | var type = types[j]; |
| | | var field = fields[j]; |
| | | var fieldstring = GetField(type, field); |
| | | var readString = GetRead(type, field, index); |
| | | if (!string.IsNullOrEmpty(fieldstring)) |
| | | { |
| | | fieldFulls.Add(fieldstring); |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(readString)) |
| | | { |
| | | index++; |
| | | readFulls.Add(readString); |
| | | } |
| | | } |
| | | |
| | | filedContent = string.Join("\r\n\t", fieldFulls.ToArray()); |
| | | readContent = string.Join("\r\n\r\n\t\t\t", readFulls.ToArray()); |
| | | CreatNewConfigClass(fileInfo.Name.Substring(0, fileInfo.Name.IndexOf('.')), isIL); |
| | | } |
| | | |
| | | } |
| | | |
| | | public static string GetField(string type, string field) |
| | | { |
| | | field = field.Replace(" ", ""); |
| | | if (type.Contains("int[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly int[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("Int2[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly Int2[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("Int3[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly Int3[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("float[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly float[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("string[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly string[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("Vector3[]")) |
| | | { |
| | | return StringUtility.Contact("public readonly Vector3[] ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("int")) |
| | | { |
| | | return StringUtility.Contact("public readonly int ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("long")) |
| | | { |
| | | return StringUtility.Contact("public readonly long ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("float")) |
| | | { |
| | | return StringUtility.Contact("public readonly float ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("string")) |
| | | { |
| | | return StringUtility.Contact("public readonly string ", field, ";"); |
| | | } |
| | | else if (type.Contains("Vector3")) |
| | | { |
| | | return StringUtility.Contact("public readonly Vector3 ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("bool")) |
| | | { |
| | | return StringUtility.Contact("public readonly bool ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("Int2")) |
| | | { |
| | | return StringUtility.Contact("public readonly Int2 ", field.Trim(), ";"); |
| | | } |
| | | else if (type.Contains("Int3")) |
| | | { |
| | | return StringUtility.Contact("public readonly Int3 ", field.Trim(), ";"); |
| | | } |
| | | else |
| | | { |
| | | return string.Empty; |
| | | } |
| | | } |
| | | |
| | | public static string GetRead(string type, string field, int index) |
| | | { |
| | | field = field.Replace(" ", ""); |
| | | if (type.Contains("int[]")) |
| | | { |
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); |
| | | var line4 = StringUtility.Contact(retract3, "{\n"); |
| | | var line5 = StringUtility.Contact(retract4, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); |
| | | var line6 = StringUtility.Contact(retract3, "}"); |
| | | |
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6); |
| | | } |
| | | else if (type.Contains("Int2[]")) |
| | | { |
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); |
| | | var line4 = StringUtility.Contact(retract3, "{\n"); |
| | | var line5 = StringUtility.Contact(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); |
| | | var line6 = StringUtility.Contact(retract3, "}"); |
| | | |
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6); |
| | | } |
| | | else if (type.Contains("Int3[]")) |
| | | { |
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); |
| | | var line4 = StringUtility.Contact(retract3, "{\n"); |
| | | var line5 = StringUtility.Contact(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); |
| | | var line6 = StringUtility.Contact(retract3, "}"); |
| | | |
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6); |
| | | } |
| | | else if (type.Contains("float[]")) |
| | | { |
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); |
| | | var line4 = StringUtility.Contact(retract3, "{\n"); |
| | | var line5 = StringUtility.Contact(retract4, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n"); |
| | | var line6 = StringUtility.Contact(retract3, "}"); |
| | | |
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6); |
| | | } |
| | | else if (type.Contains("string[]")) |
| | | { |
| | | var line1 = StringUtility.Contact(field, " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);"); |
| | | return line1; |
| | | } |
| | | else if (type.Contains("Vector3[]")) |
| | | { |
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n"); |
| | | var line4 = StringUtility.Contact(retract3, "{\n"); |
| | | var line5 = StringUtility.Contact(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n"); |
| | | var line6 = StringUtility.Contact(retract3, "}"); |
| | | |
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6); |
| | | } |
| | | else if (type.Contains("int")) |
| | | { |
| | | return StringUtility.Contact("int.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); |
| | | } |
| | | else if (type.Contains("long")) |
| | | { |
| | | return StringUtility.Contact("long.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); |
| | | } |
| | | else if (type.Contains("float")) |
| | | { |
| | | return StringUtility.Contact("float.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); |
| | | } |
| | | else if (type.Contains("string")) |
| | | { |
| | | return StringUtility.Contact(field, " = ", "tables", "[", index, "]", ";"); |
| | | } |
| | | else if (type.Contains("Vector3")) |
| | | { |
| | | return StringUtility.Contact(field, "=", "tables", "[", index, "]", ".Vector3Parse()", ";"); |
| | | } |
| | | else if (type.Contains("bool")) |
| | | { |
| | | var line1 = StringUtility.Contact("var ", field, "Temp", " = 0", ";", "\n"); |
| | | var line2 = StringUtility.Contact(retract3, "int.TryParse(tables", "[", index, "]", ",", "out ", field, "Temp", ")", "; ", "\n"); |
| | | var line3 = StringUtility.Contact(retract3, field, "=", field, "Temp", "!=0", ";"); |
| | | return StringUtility.Contact(line1, line2, line3); |
| | | } |
| | | else if (type.Contains("Int2")) |
| | | { |
| | | return StringUtility.Contact("Int2.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); |
| | | } |
| | | else if (type.Contains("Int3")) |
| | | { |
| | | return StringUtility.Contact("Int3.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; "); |
| | | } |
| | | else |
| | | { |
| | | return string.Empty; |
| | | } |
| | | } |
| | | |
| | | static string configClassPath = "Assets/Scripts/Core/GameEngine/Model/Config"; |
| | | static string configILClassPath = "LogicProject/Src/Config"; |
| | | static string templatePath = "Assets/Editor/ScriptTemplate/ConfigDataTemplate.txt"; |
| | | |
| | | public static void CreatNewConfigClass(string _name, bool isIL) |
| | | { |
| | | string newConfigPath; |
| | | if (isIL) |
| | | { |
| | | newConfigPath = configILClassPath + string.Format("/IL{0}Config.cs", _name); |
| | | } |
| | | else |
| | | { |
| | | newConfigPath = configClassPath + string.Format("/{0}Config.cs", _name); |
| | | } |
| | | AssetDatabase.DeleteAsset(newConfigPath); |
| | | UnityEngine.Object o = CreateScriptAssetFromTemplate(newConfigPath, templatePath, isIL); |
| | | ProjectWindowUtil.ShowCreatedAsset(o); |
| | | } |
| | | |
| | | internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile, bool isIL) |
| | | { |
| | | 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, "#ClassName*#", fileNameWithoutExtension); |
| | | text = Regex.Replace(text, "#DateTime#", System.DateTime.Now.ToLongDateString()); |
| | | text = Regex.Replace(text, "#Field#", CreateConfigClassFile.filedContent); |
| | | text = Regex.Replace(text, "#Read#", CreateConfigClassFile.readContent); |
| | | if (isIL) |
| | | { |
| | | text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(2, fileNameWithoutExtension.Length - 8)); |
| | | } |
| | | else |
| | | { |
| | | text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(0, fileNameWithoutExtension.Length - 6)); |
| | | } |
| | | |
| | | 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)); |
| | | } |
| | | |
| | | internal static void AddConfigInit(string pathName) |
| | | { |
| | | string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName); |
| | | string add1 = string.Format("{0}.Init();taskCount++;", fileNameWithoutExtension); |
| | | string add2 = string.Format("completeCount += {0}.inited ? 1 : 0;", fileNameWithoutExtension); |
| | | |
| | | string path = Application.dataPath + "/Scripts/Utility/ConfigInitiator.cs"; |
| | | var text = File.ReadAllText(path); |
| | | |
| | | if (!text.Contains(add1)) |
| | | { |
| | | text = text.Replace("//初始化结束\r\n", add1 + "\r\n" + "\t\t//初始化结束\r\n"); |
| | | } |
| | | else |
| | | { |
| | | Debug.Log(fileNameWithoutExtension); |
| | | } |
| | | |
| | | if (!text.Contains(add2)) |
| | | { |
| | | text = text.Replace("//统计配置表解析进度\r\n", add2 + "\r\n" + "\t\t//统计配置表解析进度\r\n"); |
| | | } |
| | | |
| | | bool encoderShouldEmitUTF8Identifier = true; |
| | | bool throwOnInvalidBytes = false; |
| | | UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes); |
| | | bool append = false; |
| | | StreamWriter streamWriter = new StreamWriter(path, append, encoding); |
| | | streamWriter.Write(text); |
| | | streamWriter.Close(); |
| | | AssetDatabase.ImportAsset(path); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using UnityEditor.ProjectWindowCallback;
|
| | | using UnityEngine;
|
| | | using UnityEditor;
|
| | | using System.IO;
|
| | | using System.Text;
|
| | | using System.Text.RegularExpressions;
|
| | | using System;
|
| | | using UnityEngine.Events;
|
| | |
|
| | | public class CreateConfigClassFile
|
| | | {
|
| | |
|
| | | const string retract1 = "\t";
|
| | | const string retract2 = "\t\t";
|
| | | const string retract3 = "\t\t\t";
|
| | | const string retract4 = "\t\t\t\t";
|
| | | const string retract5 = "\t\t\t\t\t";
|
| | |
|
| | | public static event UnityAction FileCreateEvent;
|
| | |
|
| | | public static string filedContent = string.Empty;
|
| | | public static string readContent = string.Empty;
|
| | |
|
| | |
|
| | | [UnityEditor.MenuItem("Assets/生成配置解析类型")]
|
| | | public static void GenerateConfigClass()
|
| | | {
|
| | |
|
| | | if (Selection.objects != null)
|
| | | {
|
| | | foreach (var o in Selection.objects)
|
| | | {
|
| | | var path = AssetDatabase.GetAssetPath(o.GetInstanceID());
|
| | | if (path.EndsWith(".txt") || path.EndsWith(".TXT"))
|
| | | {
|
| | | CreateConfigClass(new FileInfo(path));
|
| | | }
|
| | | }
|
| | |
|
| | | AssetDatabase.Refresh();
|
| | | }
|
| | | }
|
| | |
|
| | | public static void CreateConfigClass(FileInfo fileInfo, bool isIL = false)
|
| | | {
|
| | | var lines = File.ReadAllLines(fileInfo.FullName);
|
| | | if (lines.Length > 2)
|
| | | {
|
| | | var typeLine = lines[0];
|
| | | var fieldLine = lines[1];
|
| | | var types = typeLine.Split('\t');
|
| | | var fields = fieldLine.Split('\t');
|
| | | var min = Mathf.Min(types.Length, fields.Length);
|
| | | var fieldFulls = new List<string>();
|
| | | var readFulls = new List<string>();
|
| | |
|
| | | int index = 0;
|
| | | for (int j = 0; j < min; j++)
|
| | | {
|
| | | var type = types[j];
|
| | | var field = fields[j];
|
| | | var fieldstring = GetField(type, field);
|
| | | var readString = GetRead(type, field, index);
|
| | | if (!string.IsNullOrEmpty(fieldstring))
|
| | | {
|
| | | fieldFulls.Add(fieldstring);
|
| | | }
|
| | |
|
| | | if (!string.IsNullOrEmpty(readString))
|
| | | {
|
| | | index++;
|
| | | readFulls.Add(readString);
|
| | | }
|
| | | }
|
| | |
|
| | | filedContent = string.Join("\r\n\t", fieldFulls.ToArray());
|
| | | readContent = string.Join("\r\n\r\n\t\t\t", readFulls.ToArray());
|
| | | CreatNewConfigClass(fileInfo.Name.Substring(0, fileInfo.Name.IndexOf('.')), isIL);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | public static string GetField(string type, string field)
|
| | | {
|
| | | field = field.Replace(" ", "");
|
| | | if (type.Contains("int[][]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly int[][] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("int[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly int[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("Int2[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Int2[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("Int3[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Int3[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("float[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly float[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("string[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly string[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("Vector3[]"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Vector3[] ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("int"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly int ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("long"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly long ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("float"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly float ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("string"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly string ", field, ";");
|
| | | }
|
| | | else if (type.Contains("Vector3"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Vector3 ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("bool"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly bool ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("Int2"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Int2 ", field.Trim(), ";");
|
| | | }
|
| | | else if (type.Contains("Int3"))
|
| | | {
|
| | | return StringUtility.Contact("public readonly Int3 ", field.Trim(), ";");
|
| | | }
|
| | | else
|
| | | {
|
| | | return string.Empty;
|
| | | }
|
| | | }
|
| | |
|
| | | public static string GetRead(string type, string field, int index)
|
| | | {
|
| | | field = field.Replace(" ", "");
|
| | | if (type.Contains("int[][]"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = JsonMapper.ToObject<int[][]>(tables", "[", index, "]", ")", "; ");
|
| | | }
|
| | | else if (type.Contains("int[]"))
|
| | | {
|
| | | var line0 = StringUtility.Contact("if (tables", "[", index, "].Contains(\"[\"))\n");
|
| | | var line0_1 = StringUtility.Contact(retract3, "{\n");
|
| | | var line0_2 = StringUtility.Contact(retract4, field, " = JsonMapper.ToObject<int[]>(tables", "[", index, "]);\n");
|
| | | var line0_3 = StringUtility.Contact(retract3, "}\n");
|
| | | var line0_4 = StringUtility.Contact(retract3, "else\n");
|
| | | var line0_5 = StringUtility.Contact(retract3, "{\n");
|
| | | var line1 = StringUtility.Contact(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract4, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | var line4 = StringUtility.Contact(retract4, "{\n");
|
| | | var line5 = StringUtility.Contact(retract5, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract4, "}\n");
|
| | | var line0_6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
|
| | | }
|
| | | else if (type.Contains("Int2[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | var line4 = StringUtility.Contact(retract3, "{\n");
|
| | | var line5 = StringUtility.Contact(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("Int3[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | var line4 = StringUtility.Contact(retract3, "{\n");
|
| | | var line5 = StringUtility.Contact(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("float[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | var line4 = StringUtility.Contact(retract3, "{\n");
|
| | | var line5 = StringUtility.Contact(retract4, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("string[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact(field, " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);");
|
| | | return line1;
|
| | | }
|
| | | else if (type.Contains("Vector3[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | var line4 = StringUtility.Contact(retract3, "{\n");
|
| | | var line5 = StringUtility.Contact(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("int"))
|
| | | {
|
| | | return StringUtility.Contact("int.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("long"))
|
| | | {
|
| | | return StringUtility.Contact("long.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("float"))
|
| | | {
|
| | | return StringUtility.Contact("float.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("string"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = ", "tables", "[", index, "]", ";");
|
| | | }
|
| | | else if (type.Contains("Vector3"))
|
| | | {
|
| | | return StringUtility.Contact(field, "=", "tables", "[", index, "]", ".Vector3Parse()", ";");
|
| | | }
|
| | | else if (type.Contains("bool"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("var ", field, "Temp", " = 0", ";", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, "int.TryParse(tables", "[", index, "]", ",", "out ", field, "Temp", ")", "; ", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, field, "=", field, "Temp", "!=0", ";");
|
| | | return StringUtility.Contact(line1, line2, line3);
|
| | | }
|
| | | else if (type.Contains("Int2"))
|
| | | {
|
| | | return StringUtility.Contact("Int2.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("Int3"))
|
| | | {
|
| | | return StringUtility.Contact("Int3.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else
|
| | | {
|
| | | return string.Empty;
|
| | | }
|
| | | }
|
| | |
|
| | | static string configClassPath = "Assets/Scripts/Core/GameEngine/Model/Config";
|
| | | static string configILClassPath = "LogicProject/Src/Config";
|
| | | static string templatePath = "Assets/Editor/ScriptTemplate/ConfigDataTemplate.txt";
|
| | |
|
| | | public static void CreatNewConfigClass(string _name, bool isIL)
|
| | | {
|
| | | string newConfigPath;
|
| | | if (isIL)
|
| | | {
|
| | | newConfigPath = configILClassPath + string.Format("/IL{0}Config.cs", _name);
|
| | | }
|
| | | else
|
| | | { |
| | | newConfigPath = configClassPath + string.Format("/{0}Config.cs", _name);
|
| | | } |
| | | AssetDatabase.DeleteAsset(newConfigPath);
|
| | | UnityEngine.Object o = CreateScriptAssetFromTemplate(newConfigPath, templatePath, isIL);
|
| | | ProjectWindowUtil.ShowCreatedAsset(o);
|
| | | }
|
| | |
|
| | | internal static UnityEngine.Object CreateScriptAssetFromTemplate(string pathName, string resourceFile, bool isIL)
|
| | | {
|
| | | 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, "#ClassName*#", fileNameWithoutExtension);
|
| | | text = Regex.Replace(text, "#DateTime#", System.DateTime.Now.ToLongDateString());
|
| | | text = Regex.Replace(text, "#Field#", CreateConfigClassFile.filedContent);
|
| | | text = Regex.Replace(text, "#Read#", CreateConfigClassFile.readContent);
|
| | | if (isIL)
|
| | | {
|
| | | text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(2, fileNameWithoutExtension.Length - 8));
|
| | | }
|
| | | else
|
| | | { |
| | | text = Regex.Replace(text, "#FileName#", fileNameWithoutExtension.Substring(0, fileNameWithoutExtension.Length - 6));
|
| | | }
|
| | |
|
| | | 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));
|
| | | }
|
| | |
|
| | | internal static void AddConfigInit(string pathName)
|
| | | {
|
| | | string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(pathName);
|
| | | string add1 = string.Format("{0}.Init();taskCount++;", fileNameWithoutExtension);
|
| | | string add2 = string.Format("completeCount += {0}.inited ? 1 : 0;", fileNameWithoutExtension);
|
| | |
|
| | | string path = Application.dataPath + "/Scripts/Utility/ConfigInitiator.cs";
|
| | | var text = File.ReadAllText(path);
|
| | |
|
| | | if (!text.Contains(add1))
|
| | | {
|
| | | text = text.Replace("//初始化结束\r\n", add1 + "\r\n" + "\t\t//初始化结束\r\n");
|
| | | }
|
| | | else
|
| | | {
|
| | | Debug.Log(fileNameWithoutExtension);
|
| | | }
|
| | |
|
| | | if (!text.Contains(add2))
|
| | | {
|
| | | text = text.Replace("//统计配置表解析进度\r\n", add2 + "\r\n" + "\t\t//统计配置表解析进度\r\n");
|
| | | }
|
| | |
|
| | | bool encoderShouldEmitUTF8Identifier = true;
|
| | | bool throwOnInvalidBytes = false;
|
| | | UTF8Encoding encoding = new UTF8Encoding(encoderShouldEmitUTF8Identifier, throwOnInvalidBytes);
|
| | | bool append = false;
|
| | | StreamWriter streamWriter = new StreamWriter(path, append, encoding);
|
| | | streamWriter.Write(text);
|
| | | streamWriter.Close();
|
| | | AssetDatabase.ImportAsset(path);
|
| | |
|
| | | }
|
| | | }
|
| | |
|
| | |
|