diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs
index 7755513..8706779 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ClassCodeData.cs
@@ -28,7 +28,7 @@ namespace Tools.ExcelResolver.Editor
internal class FieldData : IDisposable
{
- public string name;
+ public string varName;
public Type type;
public string info;
public string description;
@@ -36,7 +36,7 @@ namespace Tools.ExcelResolver.Editor
public void Dispose()
{
- name = null;
+ varName = null;
type = null;
info = null;
description = null;
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
index 2d7e705..984b9ae 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.ReadExcel.cs
@@ -38,7 +38,7 @@ namespace Tools.ExcelResolver.Editor
WriteSOCode(classCodeData);
}
- AssetDatabase.Refresh();
+ // AssetDatabase.Refresh();
}
private TableType CheckTableType(ExcelWorksheet worksheet, out int[] keyIndex)
@@ -128,7 +128,7 @@ namespace Tools.ExcelResolver.Editor
{
FieldData fieldData = new FieldData
{
- name = worksheet.Cells[2, col].Text,
+ varName = 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,
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs
index 1327ed1..ed2c3e8 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteDataCode.cs
@@ -14,9 +14,16 @@ namespace Tools.ExcelResolver.Editor
{
string outputPath = $"{excelResolverConfig.CodePathRoot}/{classCodeData.className}.cs";
CodeCompileUnit compileUnit = new CodeCompileUnit();
+
+ #region 命名空间
+
CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace);
compileUnit.Namespaces.Add(codeNamespace);
+ #endregion
+
+ #region 引用
+
string[] classImports = new string[]
{
"System",
@@ -29,6 +36,10 @@ namespace Tools.ExcelResolver.Editor
codeNamespace.Imports.Add(new CodeNamespaceImport(import));
}
+ #endregion
+
+ #region 类
+
CodeTypeDeclaration classType = new CodeTypeDeclaration(classCodeData.className)
{
IsClass = true,
@@ -41,18 +52,53 @@ namespace Tools.ExcelResolver.Editor
};
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("", true),
+ new CodeCommentStatement(field.info, true),
+ // new CodeCommentStatement($"{field.description}", true),
+ // new CodeCommentStatement("", true),
+ },
+ };
+ if (!string.IsNullOrEmpty(field.description))
+ codeField.Comments.Add(new CodeCommentStatement($"{field.description}", true));
+ codeField.Comments.Add(new CodeCommentStatement("", true));
+ classType.Members.Add(codeField);
+ }
+
+ #endregion
+
+ #region 代码风格设置
+
CodeGeneratorOptions options = new CodeGeneratorOptions
{
BracingStyle = "C",
- BlankLinesBetweenMembers = false,
+ BlankLinesBetweenMembers = true,
VerbatimOrder = true,
};
+ #endregion
+
+ #region 写入文件
+
using (StreamWriter writer = new StreamWriter(outputPath))
{
CSharpCodeProvider provider = new CSharpCodeProvider();
provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
}
+
+ #endregion
}
}
}
\ 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 2186f4b..e58f3c7 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.WriteSOCode.cs
+++ b/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";
CodeCompileUnit compileUnit = new CodeCompileUnit();
+
+ #region 命名空间
+
CodeNamespace codeNamespace = new CodeNamespace(excelResolverConfig.GenerateDataClassNameSpace);
compileUnit.Namespaces.Add(codeNamespace);
+ #endregion
+
+ #region 引用
+
string[] classImports = new string[]
{
"System",
@@ -26,6 +33,10 @@ namespace Tools.ExcelResolver.Editor
codeNamespace.Imports.Add(new CodeNamespaceImport(import));
}
+ #endregion
+
+ #region 类
+
CodeTypeDeclaration classType = new CodeTypeDeclaration($"{classCodeData.className}SO")
{
IsClass = true,
@@ -38,18 +49,32 @@ namespace Tools.ExcelResolver.Editor
};
codeNamespace.Types.Add(classType);
+ #endregion
+
+
+
+
+
+ #region 代码风格设置
+
CodeGeneratorOptions options = new CodeGeneratorOptions
{
BracingStyle = "C",
- BlankLinesBetweenMembers = false,
+ BlankLinesBetweenMembers = true,
VerbatimOrder = true,
};
+ #endregion
+
+ #region 写入文件
+
using (StreamWriter writer = new StreamWriter(outputPath))
{
CSharpCodeProvider provider = new CSharpCodeProvider();
provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
}
+
+ #endregion
}
}
}
\ No newline at end of file
diff --git a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs
index fc963cf..dd876ca 100644
--- a/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs
+++ b/Assets/Unity-Tools/Core/ExcelResolver/Editor/ExcelResolverEditorWindow.cs
@@ -42,7 +42,6 @@ namespace Tools.ExcelResolver.Editor
[Button(ButtonSizes.Gigantic)]
private void Generate()
{
- // 按钮逻辑
ReadExcel();
}
}