功能

image-20220531144853430

  • 支持int、float、bool、string基础类型
  • 支持数组
  • 支持kv
  • 支持枚举
  • 支持unity类型vector3,vector2,color
  • 自动生成csharp类
  • 单个excel中多个sheet,依次导出

使用

  1. 设置config.txt文件,按需求配置;

#为注释行必须;结尾

#excel存放路径;
excelPath:./Excel/;
#数据保存路径;
dataPath:./DataTable/;
#c#类保存路径;
classPath:./CSharp/;
#输出类型;
exportType:Json;
isExportServer:False
  1. 双击运行DataTable.exe,等待执行完毕;

配表

  • 第一行注释

  • 第二行字段类型

  • 第三行变量名(属性名)

  • 第一列留空

  • 数组:类型+[] e.g: int[]

  • kv使用

    类型:dic<string,int>

    变量名:变量名+:+key值

    e.g:

    dic<string,float>dic<string,float>dic<string,float>
    Attribute:atkAttribute:defAttribute:spd
  • 枚举:自动生成的枚举类型从1开始,Enum类型为:Enum+变量名字段;

Json序列化

使用json库需要对Vector3等Unity字段魔改;

Litjson库魔改:将自定义类型注册进json库;

namespace LitJson.Extensions
{
    public static class JsonExtensions
    {

        public static void WriteProperty(this JsonWriter w, string name, long value)
        {
            w.WritePropertyName(name);
            w.Write(value);
        }

        public static void WriteProperty(this JsonWriter w, string name, string value)
        {
            w.WritePropertyName(name);
            w.Write(value);
        }

        public static void WriteProperty(this JsonWriter w, string name, bool value)
        {
            w.WritePropertyName(name);
            w.Write(value);
        }

        public static void WriteProperty(this JsonWriter w, string name, double value)
        {
            w.WritePropertyName(name);
            w.Write(value);
        }

    }
}

 using UnityEngine;
 using System;
 using System.Collections;
 
 using LitJson.Extensions;

 namespace LitJson
 {

#if UNITY_EDITOR
     [UnityEditor.InitializeOnLoad]
#endif
     /// <summary>
     /// Unity内建类型拓展
     /// </summary>
     public static class UnityTypeBindings
     {

         static bool registerd;

         static UnityTypeBindings()
         {
             Register();
         }

         public static void Register()
         {

             if (registerd) return;
             registerd = true;


             // 注册Type类型的Exporter
             JsonMapper.RegisterExporter<Type>((v, w) => { w.Write(v.FullName); });

             JsonMapper.RegisterImporter<string, Type>((s) => { return Type.GetType(s); });

             // 注册Vector2类型的Exporter
             Action<Vector2, JsonWriter> writeVector2 = (v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("x", v.x);
                 w.WriteProperty("y", v.y);
                 w.WriteObjectEnd();
             };

             JsonMapper.RegisterExporter<Vector2>((v, w) => { writeVector2(v, w); });

             // 注册Vector3类型的Exporter
             Action<Vector3, JsonWriter> writeVector3 = (v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("x", v.x);
                 w.WriteProperty("y", v.y);
                 w.WriteProperty("z", v.z);
                 w.WriteObjectEnd();
             };

             JsonMapper.RegisterExporter<Vector3>((v, w) => { writeVector3(v, w); });

             // 注册Vector4类型的Exporter
             JsonMapper.RegisterExporter<Vector4>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("x", v.x);
                 w.WriteProperty("y", v.y);
                 w.WriteProperty("z", v.z);
                 w.WriteProperty("w", v.w);
                 w.WriteObjectEnd();
             });

             // 注册Quaternion类型的Exporter
             JsonMapper.RegisterExporter<Quaternion>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("x", v.x);
                 w.WriteProperty("y", v.y);
                 w.WriteProperty("z", v.z);
                 w.WriteProperty("w", v.w);
                 w.WriteObjectEnd();
             });

             // 注册Color类型的Exporter
             JsonMapper.RegisterExporter<Color>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("r", v.r);
                 w.WriteProperty("g", v.g);
                 w.WriteProperty("b", v.b);
                 w.WriteProperty("a", v.a);
                 w.WriteObjectEnd();
             });

             // 注册Color32类型的Exporter
             JsonMapper.RegisterExporter<Color32>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("r", v.r);
                 w.WriteProperty("g", v.g);
                 w.WriteProperty("b", v.b);
                 w.WriteProperty("a", v.a);
                 w.WriteObjectEnd();
             });

             // 注册Bounds类型的Exporter
             JsonMapper.RegisterExporter<Bounds>((v, w) =>
             {
                 w.WriteObjectStart();

                 w.WritePropertyName("center");
                 writeVector3(v.center, w);

                 w.WritePropertyName("size");
                 writeVector3(v.size, w);

                 w.WriteObjectEnd();
             });

             // 注册Rect类型的Exporter
             JsonMapper.RegisterExporter<Rect>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("x", v.x);
                 w.WriteProperty("y", v.y);
                 w.WriteProperty("width", v.width);
                 w.WriteProperty("height", v.height);
                 w.WriteObjectEnd();
             });

             // 注册RectOffset类型的Exporter
             JsonMapper.RegisterExporter<RectOffset>((v, w) =>
             {
                 w.WriteObjectStart();
                 w.WriteProperty("top", v.top);
                 w.WriteProperty("left", v.left);
                 w.WriteProperty("bottom", v.bottom);
                 w.WriteProperty("right", v.right);
                 w.WriteObjectEnd();
             });

         }

     }
 }

后续计划加入protobuf和bytes导出;

计划可导出.go文件;

C#
作者:|小紫苏|,原文链接: https://www.cnblogs.com/littleperilla/p/16330928.html

文章推荐

PostgreSQL一站式插件推荐 -- pg_enterprise_views

Python3.10动态修改Windows系统(win10/win11)本地IP地址(静...

.NET开源分布式锁DistributedLock

spring boot过滤器实现项目内接口过滤

Linux:管道命令与文本处理三剑客(grep、sed、awk)

逍遥自在学C语言 | 位运算符>>的高级用法

.net6的IIS发布部署

带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SL...

Maven安装详解

Linux进程与线程的基本概念及区别

阿里二面:main 方法可以继承吗?

实现简单的多节点抢注(主)功能