0. 前言
整理一下,之前做的一个配表导出工具,主要作用就是将 excel 的内容导出为数据和代码,不用每次配表都重新处理.项目的源码还有exe 都上传到了百度云,链接如下
链接:https://pan.baidu.com/s/1xW9Rc_cxr48KgI84gy24Lg
提取码:wsad
1. 效果以及使用
(1)效果使用
运行 Exportor.exe 就可以了,不过需要先配置好路径。可以处理 bool,int,float,double,string,还有对应的数组,数组用"|"隔开。比如配表是
那么导出的内容为
如果错误,有对应提示
(2)配置
配置在 Config.txt 中,依次配置为
- LoadPath 加载路径
- SaveDataPath 导出数据保存路径
- SaveCodePath 导出代码保存路径
- CodeClassPrefix 导出代码类民名前缀
- CodeParseFuncName 导出转化函数名
//Config
//LoadPath
..\..\UnityProject_funnyEn\Assets\GameMain\DataTables\Excel
//SaveDataPath
..\..\UnityProject_funnyEn\Assets\GameMain\DataTables
//SaveCodePath
..\..\UnityProject_funnyEn\Assets\GameMain\Scripts\DataTable
//CodeClassPrefix
DR
//CodeParseFuncName
ParseDataRow
模板在 Template.txt 中,如果只是简单的更改,可以直接在 Template 中更改就可以了
- {className}将会被替换成 类名
- {property}将会被替换成 属性段
- {parseFunc}将会被替换成 parse 函数
using GameFramework.DataTable;
using System.Collections.Generic;
namespace GDT
{
public class {className} : IDataRow
{
{property}
{parseFunc}
private void AvoidJIT()
{
new Dictionary<int, {className}>();
}
}
}
(3)额外处理
- 回车符和制表符导出会有问题,所以会替换为"\t","\n"的字符来代替
- 第一行某一列标记 different,这样这一列将不能有重复的内容,如果有,将会报错无法导出
- 会忽略"_"开头的 sheet
- 数据行的内容的,只有有填的第一属性,的那一行的才会被导出,其余将会忽略
2. unity 中使用
可以将代码直接复制到 unity 中去用,但我不推荐,我感觉可以将这个东西作为一个独立的程序来使用,那么后面 unity 因为配表问题
而无法打开的时候,还可以用这个独立的程序来处理。那们可以通过 unity 菜单调用这个程序的方式来调用,就不用每次都去找这个程
序,脚本如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
using System.Diagnostics;
public class DataTableTool : Editor
{
[MenuItem("MyTool/Data Export")]
public static void DataExport()
{
string exePath = @"..\Exportor\exe";
string name = "exportor.exe";
ProcessStartInfo info = new ProcessStartInfo(name);
info.WorkingDirectory = exePath;
Process p = Process.Start(info);
AssetDatabase.Refresh();
}
}
#endif
那么在 Unity 中就可以这样使用了
3. 拓展方向
基本上也是可以正常使用了,当然还有很多可拓展处理的方向,如果后来要重新处理的话,那么应该有这几个方向可以处理。
- 配置内容全部可更改,并处理到excel中。方便编辑。
- 命令行启动参数配置处理。可用命令行来配置参数,以及调用运行,这样调用就更加方便。
- 增加字典段内容处理。只有数组有些时候也不太够用。
- 增加导出检查。比如导出检查某某id是否符合要求,数组长度是否符合,但这个也不一定好,可能在实际运行中才好检查,配表导出阶段可能检查比较麻烦。
- 增加标记段处理内容。different作为不同标记,那可否有length等作为长度标记,或者matchxx作为关联标记,必须在其他配表中存在该内容才行。这样配表工具功能更加丰富。
4. 结束
到这里也就讲完咯,希望能够提供一个参考。