oops-framework框架 之 Excel转Json

引擎: CocosCreator 3.8.0

环境: Mac

Gitee: oops-plugin-excel-to-json

注: 作者dgflashoops-framework框架QQ群: 628575875


配置


作者dgflashoops-framework的框架中,提供了关于Excel数据表转换为Json和TypeScript的插件。

大概步骤:

  1. 通过终端命令进入项目目录内
  2. 运行命令:
./update-oops-plugin-excel-to-json.sh
  1. 下载成功后,在项目目录的 extensions 中会出现一个 oops-plugin-excel-to-json 的文件夹

  2. 在CocosCreator编译器的 扩展管理器 中,打开已安装拓展,标记部分打开
    请添加图片描述

  3. 打开项目设置, 左侧标签选择 Excel to Json, 配置Excel目录、Json输出目录、TypeScript输出目录
    请添加图片描述

注: Excel数据表,一般不在编译器中使用,故此放在assets目录以外

  1. 在框架的示例项目的excel目录下,有着现有的表,暂时先使用Language.xlsx多语言表
    请添加图片描述

  2. 编译器中,点击: 扩展 --> Oops Framework Excel to Json 会开始进行转换, 转换成功后,控制台会生成类似日志:

客户端数据 生成成功 ../oopsFrameworkDemo/assets/resources/game/config/Language.json
  1. 在配置的Json和TypeScript的目录下,生成Language.jsonTableLanguage.ts ,至此配置结束。

Excel表配置规则


增加下示例项目提供的RoleJob
请添加图片描述

主要规则如下:

  • 第一行为字段中文名
  • 第二行为字段英文名,会生成为json数据的字段名
  • 第三行为字段数据类型,只支持number、string类型,数组和对象类型可自行扩展
  • 第四行标记输出服务器数据时,是否存在这个字段"server"为显示字段,"server_no"为删除字段
  • 第五行标记输出客户端数据时,是否存在这个字段"client"为显示字段,"client_no"为删除字段

生成的Json字段:

{"1": {"armsName": "剑客","weaponType": [1],"power": 8,"agile": 2},"5": {"armsName": "刺客","weaponType": [10, 11, 12],"power": 5,"agile": 10},"9": {"armsName": "长弓手","weaponType": [5],"power": 5,"agile": 8}
}

生成的TypeScript脚本:

export class TableRoleJob {static TableName: string = "RoleJob";private data: any;init(id: number) {var table = JsonUtil.get(TableRoleJob.TableName);this.data = table[id];this.id = id;}/** 编号【KEY】 */id: number = 0;/** 职业名 */get armsName(): string {return this.data.armsName;}/** 武器类型 */get weaponType(): any {return this.data.weaponType;}/** 力量 */get power(): number {return this.data.power;}/** 敏捷 */get agile(): number {return this.data.agile;}
}

注: TypeScript并非获取所有的数据,而是通过id获取Json配置表中的指定ID字段数据


JsonUtil


cocosCreator引擎支持对Json配置表的动态加载,主要示例代码:

resources.load('gameGiftJson', (err: any, res: JsonAsset) => {if (err) {return console.error(err.message);}// 获取到 Json 数据const jsonData: object = res.json!;
})

oops-framework的框架中,封装了Json数据表工具: JsonUtil,主要接口有:

接口说明
load(name, callback)通过名字加载Json数据表,资源加载完成调用回调
loadAsync(name)通过名字异步加载Json数据表
get(name)通过名字从缓存中获取Json数据
release(name)通过名字释放资源

注:loadloadAsync的实现跟resources.load实现类似。

在框架将Excel表通过插件导出Json和TypeScript表后,获取的指定字段就是通过JsonUtil中获取的:

// TableRoleJob.ts
init(id: number) {var table = JsonUtil.get(TableRoleJob.TableName);this.data = table[id];this.id = id;
}

示例


应用Excel表中的数据,框架提供了多种的支持,以RoleJob表生成的Json和TypeScript为例:

// 引用
import { JsonUtil } from "../../../../../extensions/oops-plugin-framework/assets/core/utils/JsonUtil";
import { TableRoleJob } from "../../common/table/TableRoleJob";
  • 方式1: 通过JsonUtil.load获取
let tableName = TableRoleJob.TableName;
JsonUtil.load(tableName, (jsonData) => {console.log("表数据:", jsonData);
})
  • 方式2: 先在Loading页面进行异步加载,然后通过JsonUtil或者配合TableRoleJob的方式使用
// 在Loading页面提前加载, 参考LoadingViewComp.ts
private loadCustom() {return new Promise(async (resolve, reject) => {await JsonUtil.loadAsync(TableRoleJob.TableName);resolve(null);});
}let roleJobId = "1";
// 使用JsonUtil的get方式获取
let data = JsonUtil.get(roleJobId);
// 使用生成的TypeScript来构建
let tableRole = new TableRoleJob();
tableRole.init(id);

注:如果觉得以上不符合自己的需求,可以在作者提供的插件上 oops-plugin-excel-to-json进行修改补充,后续再说…

感谢作者dgflash的分享,作者CSDN博客: dgflash CSDN

最后,祝大家学习和生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/197302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对抗神经网络 CGAN实战详解 完整数据代码可直接运行

代码视频讲解: 中文核心项目:对抗神经网络 CGAN实战详解 完整代码数据可直接运行_哔哩哔哩_bilibili 运行图: 完整代码: from keras.layers import Input, Dense, Reshape, Flatten, Dropout, multiply from keras.layers import BatchNormalization, Activation, Embedd…

uniapp是否可以用vant等移动端UI库、使用步骤以及需要注意的问题

文章目录 使用vant步骤使用中遇到的问题在浏览器中的运行效果综上,不建议uniapp项目使用vant。 使用vant步骤 首先vant可以兼容uniapp,直接用vant版就好。微信小程序专用版本是:vant-weapp。 基本使用步骤: 1、安装 # 安装 Va…

实战技巧:为Android应用设置独立的多语言

原文链接 实战技巧:为Android应用设置独立的多语言 通常情况下多语言的设置都在系统设置中,应用需要做的就是提供本应用所使用的字串的多语言翻译,使用时使用R.string.app_name类似的引用,然后系统会根据用户在系统设置中的选项来…

Java中实现单例模式的方式

1. 使用静态内部类实现单例模式 在Java中,使用静态内部类实现单例模式是一种常见而又有效的方式。这种方式被称为“静态内部类单例模式”或者“Holder模式”。这种实现方式有以下优点: 懒加载(Lazy Initialization):静…

python系统调用执行ping命令无法检测到超时情况(破案了:ping命令-W参数单位为s,我写了个1000)

文章目录 问题描述破案了:ping命令-W参数单位为s,我写了个1000。。。,,ԾㅂԾ,, 问题描述 我用了系统调用去执行ping,一开始用os.system(),有问题,后面用subprocess问题还是存在,后来我把这个改了&#xff…

“Python: Configure Tests“ not found解决方案

最近想尝试尝试学学软件测试。正好电脑上安装了vscode, 又懒得装pycharm,所以就用vscode了。 遇到的问题 跟着vscode运行unittest框架想运行一下测试用例文件。【前提是文件名一定要包含test,文件里要导入unittest的包,类要继承…

Django回顾5 - 多表操作、其它字段和字段参数、中间表的三种创建方式

【1】多表操作 基于对象跨表查(子查询) 执行两句sql语句,没有连表操作基于双下划线的连表查 一次查询,连表操作 【2】聚合查询(aggregate) 聚合函数 Min、Max、sum、Avg、Count aggregate是 QuerySet 的一个终止子句,用来做聚合查询 Book.…

deepin v20 在线安装docker

deepin v20 在线安装docker 删除docker,如果有的话: sudo apt-get -y remove docker docker-engine docker.io containerd runc让apt支持https sudo apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-c…

竞赛选题YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…

36.位运算符

一.什么是位运算符 按照二进制位来进行运算的运算符叫做位运算符,所以要先将操作数转换成二进制(补码)的形式在运算。C语言的中的位运算符有: 运算符作用举例结果& 按位与(and) 0&00; 0&10; …

Linux进程间通信——共享内存

Linux进程间通信——共享内存 1、创建/打开共享内存1.1 shmget1.2 ftok 2、关联和接触关联2.1 shmat2.2 shmdt 3、删除共享内存3.1 shmctl 3.2 相关shell命令3.3 共享内存状态4、进程间通信5、shm和mmap的区别 原文链接 共享内存不同于内存映射区,它不属于任何进程…

leetcode 117. 填充每个节点的下一个右侧节点指针 II

看了两三次的leetcode 117. 填充每个节点的下一个右侧节点指针 II 题目 给定一个二叉树: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#x…

基于现代学徒制的大数据技术与应用人才培养模式探讨

学生学徒制的实施旨在解决当前新技术企业招聘技能人才难和青年就业难的结构性矛盾,通过生态链链主企业携手院校共同解决毕业年度学生就业问题,按照学生个人意愿,建立以就业导向的学生学徒制关系,签订学徒培养协议确定学生就业岗位…

【Java基础】几种拼接字符串的方法

几种拼接字符串的方法 1.使用 "" 运算符拼接字符串2.使用 StringBuilder 或 StringBuffer 类3.使用 StringJoiner 类4.使用 String 类 join 方法5.使用 StringUtils 类6.使用 String 类 concat 方法7.使用 String.format() 方法格式化字符串8.使用 Stream 实现9.总结…

Python-图片去重

直接上代码 # 修改一下第34行文件夹路径以及13行图片后缀名即可使用 import os from hashlib import md5def remove_duplicate_images(folder_path):image_files []duplicate_images set()# 遍历文件夹,找到所有 JPG 图片文件for root, dirs, files in os.walk(f…

VUE项目中问题学习总结(一)

文章目录 🍁自定义组件使用🍁clearInterval函数的使用🌿定时器的作用 🍁localStorage的使用🌿设置数据🌿获取数据🌿更新数据🌿删除数据 🍁VUE国际化配置🍁项目…

智能优化算法应用:基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黑猩猩算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑猩猩算法4.实验参数设定5.算法结果6.参考文献7.…

Proteus8.16仿真软件安装图文教程(Proteus 8 Professional)

Proteus8.16 🔧软件安装包下载链接:🔧视频教程🔧1 安装软件解压🔧2 安装🔧3 破解🔧4 汉化 🔧软件安装包下载链接: Proteus8.16软件下载链接 1、本文关于Proteus8.16 SP…

双击热备方案实现(全)

双击热备是应用与服务器的一种解决方案,其构造思想是主机和从机通过TCP/IP网络连接,正常情况下主机处于工作状态,从机处于监视状态,一旦从机发现主机异常,从机将会在很短的时间内代替主机。完全实现主机的功能。 要想实…

golang之net/http模块学习

文章目录 开启服务开启访问静态文件获取现在时间按时间创建一个空的json文件按时间创建一个固定值的json文件 跨域请求处理输出是json 开启服务 package mainimport ("fmt""net/http" )//路由 func handler(w http.ResponseWriter, r *http.Request){fmt.…