Browse Source

整理

master
coffee 6 months ago
parent
commit
984fa9b102
  1. 4
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs
  2. 4
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
  3. 48
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs
  4. 27
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs
  5. 1
      Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

4
Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs

@ -28,7 +28,7 @@ namespace Tools.ExcelResolver.Editor
internal class FieldData : IDisposable internal class FieldData : IDisposable
{ {
public string name; public string varName;
public Type type; public Type type;
public string info; public string info;
public string description; public string description;
@ -36,7 +36,7 @@ namespace Tools.ExcelResolver.Editor
public void Dispose() public void Dispose()
{ {
name = null; varName = null;
type = null; type = null;
info = null; info = null;
description = null; description = null;

4
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs

@ -38,7 +38,7 @@ namespace Tools.ExcelResolver.Editor
WriteSOCode(classCodeData); WriteSOCode(classCodeData);
} }
AssetDatabase.Refresh(); // AssetDatabase.Refresh();
} }
private TableType CheckTableType(ExcelWorksheet worksheet, out int[] keyIndex) private TableType CheckTableType(ExcelWorksheet worksheet, out int[] keyIndex)
@ -128,7 +128,7 @@ namespace Tools.ExcelResolver.Editor
{ {
FieldData fieldData = new FieldData FieldData fieldData = new FieldData
{ {
name = worksheet.Cells[2, col].Text, varName = worksheet.Cells[2, col].Text,
type = TypeUtil.GetTypeByString(worksheet.Cells[3, col].Text), type = TypeUtil.GetTypeByString(worksheet.Cells[3, col].Text),
info = worksheet.Cells[4, col].Text, info = worksheet.Cells[4, col].Text,
description = worksheet.Cells[5, col].Text, description = worksheet.Cells[5, col].Text,

48
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs

@ -14,9 +14,16 @@ namespace Tools.ExcelResolver.Editor
{ {
string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}.cs"; string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}.cs";
CodeCompileUnit compileUnit = new CodeCompileUnit(); CodeCompileUnit compileUnit = new CodeCompileUnit();
#region 命名空间
CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace); CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace);
compileUnit.Namespaces.Add(codeNamespace); compileUnit.Namespaces.Add(codeNamespace);
#endregion
#region 引用
string[] classImports = new string[] string[] classImports = new string[]
{ {
"System", "System",
@ -29,6 +36,10 @@ namespace Tools.ExcelResolver.Editor
codeNamespace.Imports.Add(new CodeNamespaceImport(import)); codeNamespace.Imports.Add(new CodeNamespaceImport(import));
} }
#endregion
#region 类
CodeTypeDeclaration classType = new CodeTypeDeclaration(classCodeData.className) CodeTypeDeclaration classType = new CodeTypeDeclaration(classCodeData.className)
{ {
IsClass = true, IsClass = true,
@ -41,18 +52,53 @@ namespace Tools.ExcelResolver.Editor
}; };
codeNamespace.Types.Add(classType); codeNamespace.Types.Add(classType);
#endregion
#region 字段
foreach (var field in classCodeData.fields)
{
CodeMemberField codeField = new CodeMemberField
{
Attributes = MemberAttributes.Public,
Name = field.varName,
Type = new CodeTypeReference(field.type),
Comments =
{
new CodeCommentStatement("<summary>", true),
new CodeCommentStatement(field.info, true),
// new CodeCommentStatement($"<c>{field.description}</c>", true),
// new CodeCommentStatement("</summary>", true),
},
};
if (!string.IsNullOrEmpty(field.description))
codeField.Comments.Add(new CodeCommentStatement($"<c>{field.description}</c>", true));
codeField.Comments.Add(new CodeCommentStatement("</summary>", true));
classType.Members.Add(codeField);
}
#endregion
#region 代码风格设置
CodeGeneratorOptions options = new CodeGeneratorOptions CodeGeneratorOptions options = new CodeGeneratorOptions
{ {
BracingStyle = "C", BracingStyle = "C",
BlankLinesBetweenMembers = false, BlankLinesBetweenMembers = true,
VerbatimOrder = true, VerbatimOrder = true,
}; };
#endregion
#region 写入文件
using (StreamWriter writer = new StreamWriter(outputPath)) using (StreamWriter writer = new StreamWriter(outputPath))
{ {
CSharpCodeProvider provider = new CSharpCodeProvider(); CSharpCodeProvider provider = new CSharpCodeProvider();
provider.GenerateCodeFromCompileUnit(compileUnit, writer, options); provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
} }
#endregion
} }
} }
} }

27
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs

@ -11,9 +11,16 @@ namespace Tools.ExcelResolver.Editor
{ {
string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}SO.cs"; string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}SO.cs";
CodeCompileUnit compileUnit = new CodeCompileUnit(); CodeCompileUnit compileUnit = new CodeCompileUnit();
#region 命名空间
CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace); CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace);
compileUnit.Namespaces.Add(codeNamespace); compileUnit.Namespaces.Add(codeNamespace);
#endregion
#region 引用
string[] classImports = new string[] string[] classImports = new string[]
{ {
"System", "System",
@ -26,6 +33,10 @@ namespace Tools.ExcelResolver.Editor
codeNamespace.Imports.Add(new CodeNamespaceImport(import)); codeNamespace.Imports.Add(new CodeNamespaceImport(import));
} }
#endregion
#region 类
CodeTypeDeclaration classType = new CodeTypeDeclaration($"{classCodeData.className}SO") CodeTypeDeclaration classType = new CodeTypeDeclaration($"{classCodeData.className}SO")
{ {
IsClass = true, IsClass = true,
@ -38,18 +49,32 @@ namespace Tools.ExcelResolver.Editor
}; };
codeNamespace.Types.Add(classType); codeNamespace.Types.Add(classType);
#endregion
#region 代码风格设置
CodeGeneratorOptions options = new CodeGeneratorOptions CodeGeneratorOptions options = new CodeGeneratorOptions
{ {
BracingStyle = "C", BracingStyle = "C",
BlankLinesBetweenMembers = false, BlankLinesBetweenMembers = true,
VerbatimOrder = true, VerbatimOrder = true,
}; };
#endregion
#region 写入文件
using (StreamWriter writer = new StreamWriter(outputPath)) using (StreamWriter writer = new StreamWriter(outputPath))
{ {
CSharpCodeProvider provider = new CSharpCodeProvider(); CSharpCodeProvider provider = new CSharpCodeProvider();
provider.GenerateCodeFromCompileUnit(compileUnit, writer, options); provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
} }
#endregion
} }
} }
} }

1
Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs

@ -42,7 +42,6 @@ namespace Tools.ExcelResolver.Editor
[Button(ButtonSizes.Gigantic)] [Button(ButtonSizes.Gigantic)]
private void Generate() private void Generate()
{ {
// 按钮逻辑
ReadExcel(); ReadExcel();
} }
} }

Loading…
Cancel
Save