[编程工具]Unity配表导出工具

0. 前言

这是一个unity配表导出工具,其实之前也有写文章在表述了,这一次是重构了一下。

  1. 重构属性处理,方便属性拓展
  2. 处理同名sheet导出,方便多人协同
  3. untiy菜单以及资源编辑处理,方便在Unity中使用

这次就发gitee吧,之前版本以及相关的文章都可以在专栏中找到,地址如下。后文也是对项目的一个简单介绍,也可以在gitee的readme文件中看到。

gitee地址:https://gitee.com/buuai/unity-table-exporter
csdn专栏:https://blog.csdn.net/blue_carrot_/category_12180642.html

1. 功能

  1. Unity Execl 表格快速导出,支持 bool,int,float,double,string,vector2 等多种属性,还有对应的数组比如 bool[]
  2. 属性拓展方便,程序高度可配置
  3. 支持多语言快捷导出
  4. 方便多人协同,支持多文件导出为同组数据
  5. 最适用 UGF,其他框架上使用需要做模板等修改

2. 配置菜单

导入后会多出一个菜单 MyTool

  • [MenuItem(“MyTool/Table Export”)]
    导出数据
  • [MenuItem(“MyTool/Table Export Asset/Create Config Asset”)]
    创建 Config.Asset
  • [MenuItem(“MyTool/Table Export Asset/Create Template Asset”)]
    创建 Template.Asset
  • [MenuItem(“MyTool/Table Export Asset/Selection Config Asset”)]
    找到 Config.Asset
  • [MenuItem(“MyTool/Table Export Asset/Selection Template Asset”)]
    找到 Template.Asset

ExportorEditor 中写了配置文件的位置 Config.Asset.Template.Asset。如果配置的位置需要更改需要在 ExportorEditor 中去更改。大部分内容都是可配置,比如导出的文件名字,内容,包括数据属性在哪一行都是可以配置的。
在这里插入图片描述
模板的配置
在这里插入图片描述
具看具体配置对应的内容可以点对应的脚本,看一下注释,都有相对完善的注释。如下。
在这里插入图片描述

3. 表格文件格式

表格的配置格式如下,可以看看 Demo 中的 Execl 文件

表格对应表格内容
1.设置项differentoutputKey
2.属性名IdNextIdMapTypeName
3.属性类型intintintstring
4.属性注释序号下一个序号地图类型名字
5.数据行 1121001射击引导
n.数据行…231002方块引导
  • 设置项
    可以为空或者其他,则没有限制
    如果为 different,则要求此属性的所有属性值不能重复,否则将报错
    如果为 outputKey,则此属性将会导出为 key,并导出到多语言 xml 中
  • 属性类型
    可以处理 bool,int,float,double,string,还有对应的数组比如 bool[]
    属性值在导出的时,会按照属性类型会进行一个检查,如果错误将报错
    属性值不填时,bool 默认为 false,int\float\double 默认为 false,string 为"",数组默认为 0 长度数组.

支持多个文件配置同一个类,只需要为同名 sheet 即可,但需要属性项保持一致(所在列可以不一致),

4. 属性拓展

如果需要新属性,可参考 Vector2 的拓展

  1. 首先我们需要一个属性类来表示这个属性,需要继承 Property 类,而名字需要为属性名+Property,首字母大写。比如 Vector2,导出时会通过反射去获取 Exportor.Vector2Property 类来新建这个类。
  2. 其次我们需一个 Parse 函数来做字符串到这个属性的转化,而且这个函数一般去写一个静态类中,只需把调用的函数写在 Property中即可
  3. 最后我们需一个数组 Parse 函数来做字符串到这个属性数组的转化,也和上面类似。具体内容如下。
  4. (其实第一步做完已经把导出工作做完了,而 2,3 其实决定的是数据的导入方式)
// 属性类
// Vector2Property.cs
internal class Vector2Property : Property
{
    protected override bool OnFormatCheck(string content)
    {
        string[] temp = content.Split(",");
        bool flag = false;
        float tempFloat;
        if (temp.Length == 2 &&
            float.TryParse(temp[0], out tempFloat) &&
            float.TryParse(temp[1], out tempFloat))
        {
            flag = true;
        }
        return flag;
    }

    public override string OnEmptyReplace()
    {
        return "0,0";
    }

    public override string GetParseFunc()
    {
        return "DataTableExtension.ParseVector2";
    }

    public override string GetArrParseFunc()
    {
        return "DataTableExtension.ParseVector2Arr";
    }
}
// Parse 函数
// DataTableExtension.ParseVector2
public static Vector2 ParseVector2(string text)
{
    string[] temp = text.Split(",");
    float x, y;
    if (temp.Length == 2 &&
        float.TryParse(temp[0], out x) &&
        float.TryParse(temp[1], out y))
    {
        return new Vector2(x, y);
    }
    else
    {
        return Vector2.zero;
    }
}

// 数组 Parse 函数
// DataTableExtension.ParseVector2Arr
public static Vector2[] ParseVector2Arr(string text)
{
    string[] texts = ParseStringArr(text);
    int length = texts.Length;
    Vector2[] arr = new Vector2[length];
    for (int i = 0; i < length; i++)
    {
        arr[i] = ParseVector2(texts[i]);
    }
    return arr;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值