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
{
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;

4
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,

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";
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("<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
{
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
}
}
}

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";
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
}
}
}

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

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

Loading…
Cancel
Save