首页 > 其他分享 >分享一个自制 Excel 转 Unity ScriptableObject 工具

分享一个自制 Excel 转 Unity ScriptableObject 工具

时间:2024-06-03 19:33:04浏览次数:27  
标签:文件 ScriptableObject 自定义 创建 Excel Init SOBJ Unity

视频演示链接: https://www.bilibili.com/video/BV1Nw4m1q7qt/
资源文件: https://github.com/asyaB404/ExcelToScriptableObject

上网找了半天都找不到满意的,所以就自己写了一个
本人菜鸟一枚,第一次分享自己的成果,有什么问题或者改进的方式请立即联系我

工具包含一个名为ExcelableScriptableObject.cs的抽象类和ExcelToolsGUI.cs一个工具类
使用前先确保抽象类在项目内,工具类和ExcellDll文件夹在项目中的Editor文件夹内
然后在编辑器窗口就能打开工具了

配置格式为 第一行为字段名 第二行为类型(支持int float bool string 枚举类型) 第三行为注释(随便写
枚举类型在Excel表的格式为 “Enum.枚举名称”
枚举类型需要自己提前创建
支持多个Excel文件,Excel表同时操作

按钮创建SOBJ的原理是先利用IO流直接写一个自定义SOBJ类文件,并继承ExcelableScriptableObject.cs
自定义SOBJ类的类名取决于Excel表的表名
ExcelableScriptableObject.cs为抽象类,只有一个名为Init(DataRow row)的抽象方法
Init方法作用为根据传入的excel的数据行来进行sobj资源文件的数据初始化
然后根据excel表的第一行和第二行作为自定义SOBJ类的字段和类型同时实现上述的Init方法
Excel表示例图:

自定义类示例图:

等待刚刚创建的SOBJ自定义类编译完成后就能创建SOBJ资源文件了
而按钮创建SOBJ对应的资源文件的原理为,从第四行开始读取Excel表
然后创建资源文件的将Excel表信息行作为参数传入Init方法,完成sobj资源文件的初始化赋值并创建

所以你想自己拓展支持其他数据类型(比如sprite)的话可以自己重写工具生成的SOBJ自定义类中的Init方法
Init(DataRow row)中的row为excel表的数据行,是一个可迭代容器,可以利用row[n].ToString()来得到excel表中数据行的第n+1列的字符串
重写完之后不要再点按钮创建SOBJ,否则会被覆盖到之前的Init方法
然后再在工具那里点击按钮创建SOBJ对应的资源文件就会调用你重写之后的Init方法来创建资源文件

标签:文件,ScriptableObject,自定义,创建,Excel,Init,SOBJ,Unity
From: https://www.cnblogs.com/asyaB404/p/18229482

相关文章

  • UniTask入门指南:简化Unity中的异步编程
    UniTask入门指南:简化Unity中的异步编程介绍:UniTask是一个轻量级、高性能的异步编程库,专门针对Unity开发进行了优化。与Unity标准的Task系统相比,UniTask提供了更加简洁和高效的异步编程方式。在Unity项目中使用UniTask可以大大提高开发效率,简化异步操作的编码过程。UniTask......
  • Unity ScrollRect中,拖拽移动Item的顺序
    *UnityScrollRect中,拖拽移动Item的顺序*目标需求制作方法完整代码最终效果备注unitypackage目标需求Unity在制作下拉菜单时,用户可通过拖拽Item,替换当前Item的位置。本教程使用UGUI制作方法创建脚本ScrollRectManager,用于管理整个ScrollRect,我是将脚本Scro......
  • 读取Excel格式测试用例
    测试用例编写测试用例编写格式(个人习惯)测试用例名称请求方法接口路由请求参数请求体断言方法断言信息titlemothodrouterparbodyassert_mothodasserted测试用例一GET/api/test{'id':'637c79c9d055780046de5593'}......
  • 读取Excel格式测试用例
    测试用例编写测试用例编写格式(个人习惯)测试用例名称请求方法接口路由请求参数请求体断言方法断言信息titlemothodrouterparbodyassert_mothodasserted测试用例一GET/api/testtext"errorCode":0测试用例一(登录)POST/api/login/testtext"er......
  • python对excel文件中指定表格的指定列数据进行去重复操作。
    importpandasaspd#读取Excel文件df_all=pd.read_excel('域名管理系统.xlsx',sheet_name=None,engine='openpyxl')#确保'01流水'表存在if'01流水'indf_all:#提取第1列第2行至第1000行的数据并去重df_two=df_all['01流水']un......
  • 自动化办公02 用openpyxl库操作excel.xlsx文件(新版本)
    目录一、文件读操作二、文件写操作三、修改单元格样式openpyxl是一个处理Excel表格的第三方库。openpyxl库可以处理Excel2010以后的电子表格格式,包括:xlsx/xlsm/xltx/xltm。openpyxl教程一、文件读操作工作簿(workbook):excel文件工作表(worksheet):工作簿中的每......
  • plsql中导入excel数据
    方法一:1、点击“工具”—“ODBC导入器…”菜单,打开导入功能 2、选择要连接类型和导入的Excel文件 3、选择所要导入数据所在的“Sheet”表 4、根据Sheet表结构创建Oracle数据表   5、完成数据导入 方法二:1、execl文件另存为“文本文件(制表符分隔)(*.txt)......
  • excel生成insert语句
    在Excel中使用VBA生成INSERT语句通常涉及遍历工作表中的数据,并根据数据内容构造SQL语句。以下是一个基本的示例步骤和VBA代码片段,说明如何实现这一过程: ###步骤说明:1.**打开Excel**,确保你的数据已经整理好,每一列对应数据库表的一个字段。2.**启用开发者选项卡**(如果尚......
  • Unity2D游戏制作入门 | 02
    上期链接:Unity2D游戏制作入门|01我们先整理我们的场景素材并调整一些参数,选中我们的Forest1,就是如下图所示了:选择:multiple(多个),16像素,不过滤,不压缩(compression),记得保存设置。开始编辑我们的场景:接下使用Size的模式进行切割:注意锚点我们设置在中心,不然等下放入图片......
  • Unity2D游戏制作入门 | 03
    ​上期链接:Unity2D游戏制作入门|02这节的规则瓦片其实是上一节用Tile去绘制地图的补充吧,假设你有大量而且面积还挺大的地图工程量,我想画的时间还是很久的,规则瓦片就是为了解决这种问题。所以所谓规则瓦片就是有一部分地方是固定绘制的,然后有一些地方是随机出现的素材(比......