当前位置: 首页 > news >正文

Unity Excel数据导入工具

UnityExcelImporterX - Unity Excel数据导入工具

自动将Excel文件(.xls, .xlsx)中的数据转换为Unity的ScriptableObject资源。

项目基于unity-excel-importer,增加了一些新特性。项目地址:github.com/nayaku/UnityExcelImporterX

✨ 核心特性

  • 🤖 零代码生成:无需手动编写实体类脚本,自动生成完整代码
  • 🔄 实时同步:Excel修改后自动更新Unity资源
  • 📝 智能注释:支持注释行/列,设置数据边界
  • 🎯 类型丰富:支持基本类型、枚举、数组、字典、日期时间和自定义类型
  • 📊 多表支持:一次性导入Excel中的所有工作表

📦 安装方法

💡 通过 .unitypackage 文件安装(推荐)
  1. 访问 GitHub Releases页面
  2. 下载最新的 .unitypackage 文件
  3. 双击文件或在Unity中通过 Assets → Import Package → Custom Package 导入

🚀 快速开始

步骤1:创建Excel文件

创建一个Excel文件,按以下格式组织数据:

行号内容说明示例
第1行列名(字段名)id, name, price
第2行C#数据类型int, string, float
第3行注释说明编号, 物品名, 售价
第4行+实际数据1, 物品名1, 99.5

📋 示例表格结构:

在这里插入图片描述

🎯 将Excel文件放入Unity项目的任意文件夹中

步骤2:自动生成代码

  1. 在Unity中选中Excel文件
  2. 右键 → Create → ExcelAssetScript(或在顶部菜单选择 Assets → Create → ExcelAssetScript
  3. 系统将自动个实体类脚本(如 MstItems.cs

在这里插入图片描述

📊 生成的代码示例:

// 实体类 - 对应表格的每一行数据
[Serializable]
public class MstItemsEntity
{/// <summary>/// 编号/// </summary>public int id;           // 自动匹配Excel第1列/// <summary>/// 物品名/// </summary>public string name;      // 自动匹配Excel第2列 /// <summary>/// 售价/// </summary>public float price;      // 自动匹配Excel第3列
}// 容器类 - 存储所有表格数据
[ExcelAsset]
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;  // 所有行数据
}

⚠️ 重要提醒:当Excel表格结构发生变化时(如添加/删除列),需要重新执行此步骤生成最新代码。

步骤3:自动导入数据

💡 只需简单操作

  • 保存Excel文件(Ctrl+S)
  • 回到Unity,系统将自动检测变更并导入数据
  • 在相同目录下会生成与Excel同名的 .asset 文件

如果没有自动生成,可以手动重新导入Excel文件来触发自动生成:
在这里插入图片描述

完成! 现在您可以在Unity中直接查看和编辑导入的数据:

在这里插入图片描述

🎯 高级功能详解

注释功能

单行注释

在行的第一个单元格输入 #,整行将被忽略。

单列注释

在列的第一行输入 #,整列将被忽略。

Excel表格:
在这里插入图片描述

生成的代码和数据:

[Serializable]
public class SummaryExampleEntity
{public int id; // 只导入A、B列,C列被忽略/// <summary>/// name of item/// </summary>public string name;
}[ExcelAsset]
public class SummaryExample : ScriptableObject
{public List<SummaryExampleEntity> item;
}

在这里插入图片描述

数据边界

  • 列边界:第一行出现空单元格时,右侧所有列将被忽略
  • 行边界:第一列出现空单元格时,下方所有行将被忽略

枚举类型

步骤1:创建枚举定义
// 创建 ColorEnum.cs 文件
public enum ColorEnum
{RED,    // 红色GREEN,  // 绿色  BLUE    // 蓝色
}
步骤2:Excel中填写枚举值

在这里插入图片描述

步骤3:生成的代码和数据
[Serializable]
public class EnumExampleEntity
{public int id;/// <summary>/// 名字/// </summary>public string name;/// <summary>/// 颜色/// </summary>public ColorEnum color; // 自动匹配枚举类型
}

在这里插入图片描述

复杂类型

支持数组类型、日期时间类型、字典类型和自定义类型

使用数组类型的时候,可省略方括号。

生成的代码和数据:

创建自定义类型CustomType

[Serializable]
public class CustomType
{public int x;public string s;
}

在这里插入图片描述

在这里插入图片描述

自定义资源路径

通过 AssetPath 参数控制生成的 .asset 文件位置:

[ExcelAsset(AssetPath = "Assets/Resources/MasterData")]
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}

调试日志

开启导入日志:

[ExcelAsset(LogOnImport = true)]  // 导入时输出详细日志
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}

自定义文件关联

当Excel文件名与ScriptableObject类名不一致时使用:

// Excel文件名为 "ItemData.xlsx"
// ScriptableObject类名为 "MstItems"[ExcelAsset(ExcelName = "ItemData")]  // 指定关联的Excel文件名
public class MstItems : ScriptableObject
{public List<MstItemsEntity> Entities;
}

🔧 常见问题

Q: Excel修改后没有自动更新? **解决方法**:
  1. 确保Excel文件已保存
  2. 在Unity中右键点击Excel文件 → Reimport
  3. 检查控制台是否有错误信息

📄 许可证

本库采用 MIT许可证。


如果本工具对您有帮助,请给个⭐Star支持一下!


文章转载自:

http://jzPh2kXk.xkzmz.cn
http://DAsYcgg4.xkzmz.cn
http://vI1Mule8.xkzmz.cn
http://iAvvYO8C.xkzmz.cn
http://vRBZiE0b.xkzmz.cn
http://KrAdapJg.xkzmz.cn
http://QKGkXf7e.xkzmz.cn
http://SrloxncG.xkzmz.cn
http://IpyThbVp.xkzmz.cn
http://PNGdG6Jn.xkzmz.cn
http://EZg6GPH1.xkzmz.cn
http://jAd7VvrL.xkzmz.cn
http://NmBA88JA.xkzmz.cn
http://T0TOvUWS.xkzmz.cn
http://gZDqVool.xkzmz.cn
http://0ROHJKt2.xkzmz.cn
http://WNolzn9p.xkzmz.cn
http://KxEVUvuV.xkzmz.cn
http://GUua2ixN.xkzmz.cn
http://EHduKAMk.xkzmz.cn
http://ouLIfNSl.xkzmz.cn
http://uZhOgTcG.xkzmz.cn
http://PuwCQRe1.xkzmz.cn
http://ts4x0FoV.xkzmz.cn
http://0IgEgg7d.xkzmz.cn
http://Xw04NMEK.xkzmz.cn
http://40dy4qoN.xkzmz.cn
http://5R8e1Dpn.xkzmz.cn
http://FSttpVxq.xkzmz.cn
http://pkQ9JFO0.xkzmz.cn
http://www.dtcms.com/a/384875.html

相关文章:

  • 镭神C16在Ubuntu下的连接和驱动安装教程
  • 如何在qt中配置libssh
  • 使用 Spring Boot 3.x 集成 Kafka 并在 Kubernetes 上部署的全流程指南
  • 记录本地安装anaconda pytorch python
  • 关于机器学习中的各种“学习”
  • Parlant框架深度技术解析:革命性AI代理行为建模引擎
  • 疯狂星期四文案网第68天运营日记
  • RabbitMQ 消息路由与交换机机制
  • 月视图,周视图,日视图
  • RabbitMQ 数据结构源码剖析
  • Redis 内存优化与管理机制(内存碎片、LRU、惰性删除、内存回收策略)
  • 嵌入式学习day49-硬件-UART
  • 通信模组性能调优
  • Redis 实战指南:数据库选型 + 高可用(主从 / 哨兵)+ 集群搭建
  • 进程与线程:从入门到精通
  • Android 项目:画图白板APP开发(八)——Matrix位移放大缩小(附demo)
  • 【大前端++】【混合开发】【node】express 文件服务器本地搭建-模拟加载图片使用
  • 如何启动Greenplum中的某个segment
  • 校验用户身份是否过期,是否存在等等JWT
  • Docker 多阶段镜像构建与缓存利用性能优化实践指南
  • Jenkinsfile配置【1】
  • 2025年渗透测试面试题总结-72(题目+回答)
  • 网络安全相关搜索引擎
  • 【Unity性能优化——Stats面板】
  • 【05】AI辅助编程完整的安卓二次商业实战-消息页面媒体对象(Media Object)布局实战调整-按钮样式调整实践-优雅草伊凡
  • AI如何赋能跨境支付,亚马逊云科技与PayerMax的联合探索
  • PAT乙级_1125 子串与子列_Python_AC解法_含疑难点
  • 华清远见25072班网络编程学习day6
  • 国标GB28181视频平台EasyGBS国标GB28181软件与公安数字化安防技术衔接方案
  • 我的Web开发实践笔记:从编码设置到项目运营