diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta deleted file mode 100644 index 8a46bc2..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5cd35fec940c4cb89f79b6c66901008e -timeCreated: 1735992114 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta deleted file mode 100644 index 4780e1e..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 0fa6f94e2e704e0faeac90ef8e185f2f -timeCreated: 1735992174 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs deleted file mode 100644 index a242c44..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections.Generic; - -namespace Tools.Editor.CodeGenKit -{ - public abstract class CodeScope : ICodeScope - { - public bool Semicolon { get; set; } - - public virtual void Gen(ICodeWriter writer) - { - GenFirstLine(writer); - - new OpenBraceCode().Gen(writer); - - writer.IndentCount++; - - foreach (var code in Codes) - { - code.Gen(writer); - } - - writer.IndentCount--; - - new CloseBraceCode(Semicolon).Gen(writer); - } - - protected abstract void GenFirstLine(ICodeWriter writer); - - public List Codes { get; } = new(); - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta deleted file mode 100644 index ee6cca0..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/CodeScope.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 737f0286aef24e158bf957af85f06c15 -timeCreated: 1735992259 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs deleted file mode 100644 index a37eb93..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public interface ICode - { - void Gen(ICodeWriter writer); - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta deleted file mode 100644 index f31332b..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5b930fc6d1d247949af8177d796c4265 -timeCreated: 1735992194 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs deleted file mode 100644 index 64b17b3..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; - -namespace Tools.Editor.CodeGenKit -{ - public interface ICodeScope : ICode - { - List Codes { get; } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta deleted file mode 100644 index 08de1b5..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeScope.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 249dc2e076114187958bc580f2455fec -timeCreated: 1735992236 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs deleted file mode 100644 index 982783f..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public interface ICodeWriter - { - int IndentCount { get; set; } - void WriteLine(string code = null); - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta deleted file mode 100644 index 323485e..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Base/ICodeWriter.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 96536dd301a640eba7ff5c8d8a597663 -timeCreated: 1735992216 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta deleted file mode 100644 index 1cb5d95..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2362665fe861427fb3d22bfc213e7543 -timeCreated: 1735992283 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs deleted file mode 100644 index 1ea3641..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System; - -namespace Tools.Editor.CodeGenKit -{ - public sealed class ClassScope : CodeScope - { - private readonly bool _isPartial; - private readonly bool _isStatic; - private readonly bool _isSealed; - private readonly string _parentClassName; - private readonly string _className; - - public bool IsStatic => _isStatic; - - public ClassScope(bool isPartial, bool isStatic, bool isSealed, string className, string parentClassName = "") - { - _isPartial = isPartial; - _isStatic = isStatic; - _isSealed = isSealed; - _parentClassName = parentClassName; - _className = className; - } - - protected override void GenFirstLine(ICodeWriter writer) - { - writer.WriteLine( - $"public {(_isSealed ? "sealed " : string.Empty)}{(_isStatic ? "static " : string.Empty)}{(_isPartial ? "partial " : string.Empty)}class {_className}{(string.IsNullOrEmpty(_parentClassName) ? string.Empty : " : " + _parentClassName)}"); - } - } - - public static partial class CodeScopeExtensions - { - public static ICodeScope Class(this ICodeScope self, string className, bool isPartial, bool isStatic, - bool isSealed, - string parentClassName = "", Action classScopeSetting = null) - { - var classScope = new ClassScope(isPartial, isStatic, isSealed, className, parentClassName); - classScopeSetting?.Invoke(classScope); - self.Codes.Add(classScope); - return self; - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta deleted file mode 100644 index 64c9e24..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/ClassScope.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 87bdee7f495f44fdab681a299935d76e -timeCreated: 1735993249 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs deleted file mode 100644 index 79eb5b9..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public sealed class CloseBraceCode : ICode - { - private readonly bool _semicolon; - - public CloseBraceCode(bool semicolon) - { - _semicolon = semicolon; - } - - public void Gen(ICodeWriter writer) - { - writer.WriteLine("}" + (_semicolon ? ";" : string.Empty)); - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta deleted file mode 100644 index d852bde..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CloseBraceCode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 21a1d549d9fc4c5893e8b5454e43e5af -timeCreated: 1735992305 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs deleted file mode 100644 index 8897b14..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public sealed class CustomCode : ICode - { - private readonly string _content; - - public CustomCode(string content) - { - _content = content; - } - - public void Gen(ICodeWriter writer) - { - writer.WriteLine(_content); - } - } - - public static partial class CodeScopeExtensions - { - public static ICodeScope Custom(this ICodeScope self, string content) - { - self.Codes.Add(new CustomCode(content)); - return self; - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta deleted file mode 100644 index b5ff07c..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/CustomCode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: d6858c0550a54e8d9c5cf7065bf582a1 -timeCreated: 1735992474 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs deleted file mode 100644 index fff54ac..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; - -namespace Tools.Editor.CodeGenKit -{ - public sealed class NameSpaceScope : CodeScope - { - private readonly string _nameSpace; - - public NameSpaceScope(string nameSpace) - { - _nameSpace = nameSpace; - } - - protected override void GenFirstLine(ICodeWriter writer) - { - writer.WriteLine($"namespace {_nameSpace}"); - } - } - - public static partial class CodeScopeExtensions - { - public static ICodeScope NameSpace(this ICodeScope self, string nameSpace, - Action nameSpaceSetting = null) - { - var nameSpaceCode = new NameSpaceScope(nameSpace); - nameSpaceSetting?.Invoke(nameSpaceCode); - self.Codes.Add(nameSpaceCode); - return self; - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta deleted file mode 100644 index f3d90ab..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/NameSpaceScope.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 5fe126821e724abaaaf317cceac9d41b -timeCreated: 1735992680 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs deleted file mode 100644 index ab77c8c..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public sealed class OpenBraceCode : ICode - { - public void Gen(ICodeWriter writer) - { - writer.WriteLine("{"); - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta deleted file mode 100644 index e2903af..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/OpenBraceCode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 3702874220a7472bb4f3f83980744f72 -timeCreated: 1735992289 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs deleted file mode 100644 index 71b1119..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Tools.Editor.CodeGenKit -{ - public sealed class UsingCode : ICode - { - private readonly string _nameSpace; - - public UsingCode(string nameSpace) - { - _nameSpace = nameSpace; - } - - public void Gen(ICodeWriter writer) - { - writer.WriteLine($"using {_nameSpace};"); - } - } - - - public static partial class CodeScopeExtensions - { - public static ICodeScope Using(this ICodeScope self, string nameSpace) - { - var code = new UsingCode(nameSpace); - self.Codes.Add(code); - return self; - } - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta deleted file mode 100644 index c186c18..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Impl/UsingCode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 299e6452df21426183f1622b56cfdd85 -timeCreated: 1735992567 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta deleted file mode 100644 index 4e52d84..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 541182aef19445418568c1693eda34de -timeCreated: 1735992180 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs deleted file mode 100644 index 8f95b88..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; - -namespace Tools.Editor.CodeGenKit -{ - public sealed class RootCode : ICodeScope - { - public void Gen(ICodeWriter writer) - { - foreach (var code in Codes) - { - code.Gen(writer); - } - } - - public List Codes { get; } = new(); - } -} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta b/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta deleted file mode 100644 index 242f5a4..0000000 --- a/Assets/Unity-Tools/Core/Editor/CodeGenKit/Writer/RootCode.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 26b647313d594f05b7ca562f2b34ce56 -timeCreated: 1735992153 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs new file mode 100644 index 0000000..7755513 --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using Sirenix.Utilities; + +namespace Tools.ExcelResolver.Editor +{ + internal class ClassCodeData : IDisposable + { + public TableType tableType; + public string className; + public FieldData[] fields; + public int[] keyIndex; + + public ClassCodeData(TableType tableType, string className) + { + this.tableType = tableType; + this.className = $"{char.ToUpper(className[0])}{className.Substring(1)}"; + } + + public void Dispose() + { + className = null; + fields.ForEach(field => field.Dispose()); + fields = null; + keyIndex = null; + } + } + + internal class FieldData : IDisposable + { + public string name; + public Type type; + public string info; + public string description; + public string path; + + public void Dispose() + { + name = null; + type = null; + info = null; + description = null; + path = null; + } + } + + internal enum TableType + { + SingleKeyTable, // 单主键表 + UnionMultiKeyTable, // 多主键表(联合索引) + MultiKeyTable, // 多主键表(独立索引) + NotKetTable, // 无主键表 + ColumnTable, // 纵表 + } +} \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs.meta b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs.meta new file mode 100644 index 0000000..1e49c5b --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: aa78605805cf49e0aa0df50ccac8bb9d +timeCreated: 1736054922 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs index 705cf94..8c3ffcf 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using OfficeOpenXml; @@ -9,16 +10,6 @@ namespace Tools.ExcelResolver.Editor { public sealed partial class ExcelResolverEditorWindow { - private enum TableType - { - SingleKeyTable, // 单主键表 - UnionMultiKeyTable, // 多主键表(联合索引) - MultiKeyTable, // 多主键表(独立索引) - NotKetTable, // 无主键表 - ColumnTable, // 纵表 - } - - private void ReadExcel() { // 获取Excel文件 @@ -37,18 +28,24 @@ namespace Tools.ExcelResolver.Editor continue; } - var type = CheckTableType(worksheet); - GetFieldData(worksheet); + var classCodeData = new ClassCodeData(CheckTableType(worksheet, out var keyIndex), excelFile.Name[..^5]) + { + fields = GetFieldData(worksheet), + keyIndex = keyIndex + }; + WriteSOCode(classCodeData); } } - private TableType CheckTableType(ExcelWorksheet worksheet) + private TableType CheckTableType(ExcelWorksheet worksheet, out int[] keyIndex) { var startColumn = worksheet.Dimension.Start.Column; // 起始列 var endColumn = worksheet.Dimension.End.Column; // 结束列 string config = worksheet.Cells[1, 1].Text; + var type = TableType.SingleKeyTable; + keyIndex = null; if (config.Contains("SingleKeyTable")) { type = TableType.SingleKeyTable; @@ -119,19 +116,24 @@ namespace Tools.ExcelResolver.Editor } } - private void GetFieldData(ExcelWorksheet worksheet) + private FieldData[] GetFieldData(ExcelWorksheet worksheet) { - var startColumn = worksheet.Dimension.Start.Column; // 起始列 - var endColumn = worksheet.Dimension.End.Column; // 结束列 - Debug.Log(endColumn); + List fieldDatas = new List(); + var endColumn = worksheet.Dimension.End.Column; for (int col = 2; col <= endColumn; col++) { - FieldData fieldData = new FieldData(); - fieldData.name = worksheet.Cells[2, col].Text; - fieldData.description = worksheet.Cells[4, col].Text; - fieldData.type = TypeUtil.GetType(worksheet.Cells[3, col].Text); - Debug.Log(fieldData.type); + FieldData fieldData = new FieldData + { + name = worksheet.Cells[2, col].Text, + type = TypeUtil.GetTypeByString(worksheet.Cells[3, col].Text), + info = worksheet.Cells[4, col].Text, + description = worksheet.Cells[5, col].Text, + path = worksheet.Cells[6, col].Text, + }; + fieldDatas.Add(fieldData); } + + return fieldDatas.ToArray(); } } } \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs index cf012bd..f1cbbd5 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs @@ -1,33 +1,62 @@ using System; -using Tools.Editor.CodeGenKit; +using System.CodeDom; + +/* 使用CodeCompileUnit需要将Edit->Project Settings->Player->Other Settings->Api Compatibility Level改为.NET 4.x(或.NET Framework) */ + namespace Tools.ExcelResolver.Editor { - internal class FieldData - { - public string name; - public Type type; - public string description; - - } - public sealed partial class ExcelResolverEditorWindow { - private int[] keyIndex; - - private void WriteTypeCode() + private void WriteDataCode(ClassCodeData classCodeData) { - var code = new RootCode(); - code.Custom("// 代码使用工具生成,请勿随意修改"); - code.Using("System"); - code.Using("System.Collections.Generic"); - code.Using("System.Linq"); - - code.NameSpace(excelResolverConfig.GenerateDataClassNameSpace, cope => + string path = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}.cs"; + CodeCompileUnit compileUnit = new CodeCompileUnit(); + CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace); + compileUnit.Namespaces.Add(codeNamespace); + + string[] classImports = new string[] + { + "System", + "System.Collections", + "System.Collections.Generic", + "UnityEngine", + }; + foreach (var import in classImports) { - cope.Custom("[Serializable]"); - // cope.Class($"") - }); + codeNamespace.Imports.Add(new CodeNamespaceImport(import)); + } + + CodeTypeDeclaration classType = new CodeTypeDeclaration(classCodeData.className) + { + IsClass = true, + TypeAttributes = System.Reflection.TypeAttributes.Public, + CustomAttributes = new CodeAttributeDeclarationCollection() + { + new CodeAttributeDeclaration("Serializable") + } + }; + + // switch (classCodeData.tableType) + // { + // case TableType.SingleKeyTable: + // classType.BaseTypes.Add(new CodeTypeReference("Dictionary")); + // break; + // case TableType.UnionMultiKeyTable: + // classType.BaseTypes.Add(new CodeTypeReference("Dictionary")); + // break; + // case TableType.MultiKeyTable: + // classType.BaseTypes.Add(new CodeTypeReference("Dictionary")); + // break; + // case TableType.NotKetTable: + // classType.BaseTypes.Add(new CodeTypeReference("List<" + classCodeData.className + ">")); + // break; + // case TableType.ColumnTable: + // classType.BaseTypes.Add(new CodeTypeReference("Dictionary")); + // break; + // default: + // throw new ArgumentOutOfRangeException(); + // } } } } \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs index 7bdfd2e..03c5e9e 100644 --- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs +++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs @@ -1,7 +1,54 @@ -namespace Tools.ExcelResolver.Editor +using System.CodeDom; +using System.CodeDom.Compiler; +using System.IO; +using Microsoft.CSharp; + +namespace Tools.ExcelResolver.Editor { public sealed partial class ExcelResolverEditorWindow { - + private void WriteSOCode(ClassCodeData classCodeData) + { + string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}.cs"; + CodeCompileUnit compileUnit = new CodeCompileUnit(); + CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace); + compileUnit.Namespaces.Add(codeNamespace); + + string[] classImports = new string[] + { + "System", + "System.Collections", + "System.Collections.Generic", + "UnityEngine", + }; + foreach (var import in classImports) + { + codeNamespace.Imports.Add(new CodeNamespaceImport(import)); + } + + CodeTypeDeclaration classType = new CodeTypeDeclaration(classCodeData.className) + { + IsClass = true, + TypeAttributes = System.Reflection.TypeAttributes.Public, + BaseTypes = + { + new CodeTypeReference("ScriptableObject") + } + }; + codeNamespace.Types.Add(classType); + + CodeGeneratorOptions options = new CodeGeneratorOptions + { + BracingStyle = "C", + BlankLinesBetweenMembers = false, + VerbatimOrder = true, + }; + + using (StreamWriter writer = new StreamWriter(outputPath)) + { + CSharpCodeProvider provider = new CSharpCodeProvider(); + provider.GenerateCodeFromCompileUnit(compileUnit, writer, options); + } + } } } \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Interface.meta b/Assets/Unity-Tools/Core/ExcelResolver/Interface.meta new file mode 100644 index 0000000..0b26a02 --- /dev/null +++ b/Assets/Unity-Tools/Core/ExcelResolver/Interface.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0d117c752ed842e2a1350b2a36b0cc00 +timeCreated: 1736058450 \ No newline at end of file diff --git a/Assets/Unity-Tools/Core/Util/TypeUtil.cs b/Assets/Unity-Tools/Core/Util/TypeUtil.cs index 4b0f2ef..7adb85d 100644 --- a/Assets/Unity-Tools/Core/Util/TypeUtil.cs +++ b/Assets/Unity-Tools/Core/Util/TypeUtil.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using UnityEngine; namespace Tools { @@ -13,16 +14,22 @@ namespace Tools "float" => typeof(float), "string" => typeof(string), "bool" => typeof(bool), + "Vector2" => typeof(Vector2), + "Vector3" => typeof(Vector3), "List" => typeof(List), "List" => typeof(List), "List" => typeof(List), "List" => typeof(List), + "List" => typeof(List), + "List" => typeof(List), "List>" => typeof(List>), "List>" => typeof(List>), "List>" => typeof(List>), "List>" => typeof(List>), + "List>" => typeof(List>), + "List>" => typeof(List>), "enum" => typeof(Enum), "DateTime" => typeof(DateTime), diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 6575836..26d1da0 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -838,6 +838,7 @@ PlayerSettings: platformArchitecture: {} scriptingBackend: Android: 1 + Standalone: 0 il2cppCompilerConfiguration: {} il2cppCodeGeneration: {} il2cppStacktraceInformation: {} @@ -866,7 +867,7 @@ PlayerSettings: gcIncremental: 1 gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: {} - editorAssembliesCompatibilityLevel: 1 + editorAssembliesCompatibilityLevel: 2 m_RenderingPath: 1 m_MobileRenderingPath: 1 metroPackageName: ToolProject @@ -943,7 +944,7 @@ PlayerSettings: hmiCpuConfiguration: hmiLogStartupTiming: 0 qnxGraphicConfPath: - apiCompatibilityLevel: 6 + apiCompatibilityLevel: 3 captureStartupLogs: {} activeInputHandler: 2 windowsGamepadBackendHint: 0