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://www.pswp.cn/news/923511.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/923511.shtml
英文地址,请注明出处:http://en.pswp.cn/news/923511.shtml

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

相关文章

np.linalg 函数一览

&#x1f4da; 常用 np.linalg 函数一览下面是一些最常用的功能和示例&#xff1a;1. np.linalg.norm() —— 计算向量或矩阵的范数python深色版本import numpy as npv np.array([3, 4]) print(np.linalg.norm(v)) # L2 范数&#xff08;模长&#xff09;: √(34) 5.0A np.…

Linux入门(二)

计算机原理系列 欢迎大家关注「海拉鲁知识大陆」 多交流不迷路 Linux入门&#xff08;二&#xff09; 在上一章Linux入门(一)中rm -rf /是比较简单的哈&#xff0c;那么升级一下&#xff1a;xargs指令的作用是啥呢&#xff1f; 1.进程 应用的可执行文件是放在文件系统里&a…

开发与维护nodejs工具库或自定义npm包

h5打开以查看 一、初始设置&#xff1a;为成功发布做好准备 1. 项目初始化与结构 bash # 创建项目目录并初始化 mkdir my-awesome-lib cd my-awesome-lib npm init -y 推荐的项目结构&#xff1a; text my-awesome-lib/ ├── src/ # 源代码目录 │ └──…

IntelliJ IDEA 的 Git 功能

1. 克隆&#xff08;Clone&#xff09;项目 这是你开始的第一步。你需要将远程仓库的代码克隆到本地。 打开 IDEA&#xff0c;选择 Get from VCS。在弹出的窗口中&#xff0c;选择 Git。粘贴远程仓库的 URL&#xff08;通常来自 GitHub、GitLab 等&#xff09;。选择一个本地目…

fastapi全局注入mysql,单数据库

1、封装sql连接 test_db.py from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from fastapi import Request, Depends# 1. 数据库连接配置 async_engine create_async_engine("mysqlaiomysql://root:root…

深度学习常见应用算力要求?

深度学习常见应用的算力要求&#xff0c;首先需要明确算力的核心衡量维度&#xff1a;计算能力&#xff1a;以每秒浮点运算次数&#xff08;FLOPS&#xff0c;如 TF32/FP16/FP8 精度下的吞吐量&#xff09;衡量&#xff0c;决定任务运行速度&#xff1b;显存容量&#xff1a;决…

邪修实战系列(5)

1、第一阶段邪修实战总览&#xff08;9.1-9.30&#xff09; 把第一阶段&#xff08;基础夯实期&#xff09;的学习计划拆解成极具操作性的每日行动方案。这个计划充分利用我“在职学习”的特殊优势&#xff0c;强调“用输出倒逼输入”&#xff0c;确保每一分钟的学习都直接服务…

Python TensorFlow的CNN-LSTM-GRU集成模型在边缘物联网数据IoT电动汽车充电站入侵检测应用

全文链接&#xff1a;https://tecdat.cn/?p43881 原文出处&#xff1a;拓端抖音号拓端tecdat 随着物联网&#xff08;IoT&#xff09;技术在电动汽车充电站&#xff08;EVCS&#xff09;中的普及&#xff0c;充电站不仅成为智能交通的关键节点&#xff0c;更因连接电网、用户设…

3dma渲染噪点成因排查及优化方案

有时候在用 3D Max 渲染完效果图&#xff0c;画面上总有密密麻麻的小颗粒&#xff0c;也就是常说的噪点&#xff0c;原本精致的模型和材质&#xff0c;一有噪点质感就掉了大半。其实多数时候&#xff0c;噪点问题都和渲染参数设置有关。那么出现噪点原因和解决方案有哪些&#…

【LeetCode】算法详解#15 ---环形链表II

1.题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评…

Kafka面试精讲 Day 18:磁盘IO与网络优化

【Kafka面试精讲 Day 18】磁盘IO与网络优化 在“Kafka面试精讲”系列的第18天&#xff0c;我们聚焦于磁盘IO与网络优化。作为支撑百万级吞吐量的分布式消息系统&#xff0c;Kafka的高性能不仅依赖于优秀的架构设计&#xff0c;更离不开对底层资源——尤其是磁盘和网络——的极…

ActiveMQ RocketMQ RabbitMQ Kafka选型及应用场景

许多时候我们都将Kafka拿来跟常用的几个消息队列作比较&#xff0c;将 Kafka 加入对比使得选型更加全面和实际。但请注意Kafka并非完全适用消息中间件的所有场景。这四款消息中间件定位不同&#xff0c;选择取决于你的具体场景。消息队列选型核心定位一句话总结RabbitMQ&#x…

STM32初始化串口重定向后printf调试信息不输出的问题

STM32初始化串口重定向后调试信息不输出的问题 Author&#xff1a;明月清了个风Date&#xff1a; 2025/9/9PS&#xff1a;开发stm32F745的过程中发现printf有时候不打印信息&#xff0c;单独调试确定了串口初始化和重定向正确&#xff0c;但是在系统整体调试的时候虽然正确运行…

PCA9535ECDWR2G 微控制器MCU接口芯片 ON 电子元器件解析

一、PCA9535ECDWR2G ON 元器件解析1. 是什么电子元器件&#xff1f; PCA9535ECDWR2G 是安森美半导体&#xff08;ON Semiconductor&#xff09;生产的一款16位I/O扩展器。它属于接口芯片类别&#xff0c;具体功能是通过IC总线为微控制器&#xff08;MCU&#xff09;提供额外的通…

大模型中token与tokenizer的区别

TokenToken 的基本概念在大模型&#xff08;如GPT系列&#xff09;中&#xff0c;token是文本处理的最小单位。模型将输入的文本分割成token序列&#xff0c;每个token对应一个唯一的整数ID&#xff0c;用于模型的内部处理。例如&#xff0c;英文单词"apple"可能被编…

还在觉得剪辑太难?用对视频剪辑软件,让剪辑变得像拼图一样有趣

想制作出精彩的Vlog&#xff0c;拥有一款简单易用的视频编辑软件是关键的第一步。如果你曾因为觉得剪辑太复杂、技术门槛太高而望而却步&#xff0c;那么这篇文章就是为你准备的&#xff0c;因为借助今天简单易用的视频编辑软件&#xff0c;人人都能成为自己生活的导演。本文就…

【ZEGO即构开发者日报】微信公众号上线“智能回复”功能;2025年8月中国应用/游戏厂商出海收入Top30榜;土耳其宣布将封禁29款社交/社媒应用……

&#x1f4a1;开发者朋友们大家好&#xff0c;这里是 开发者日报&#xff01;欢迎查阅您的实时互动日报。本栏目实时聚焦、每日更新【AI】、【泛娱乐】、【语音交互】、【实时音视频】等领域热点&#xff0c;欢迎大家在评论区一起探讨&#xff01; &#x1f528;「产品技术」 …

前端WebSocket实时通信实现

在项目中使用WebSocket实现实时通信 WebSocket提供了一种在客户端和服务器之间建立持久连接的方式&#xff0c;可以实现实时数据交换。下面我将展示如何在前端项目中集成WebSocket功能。 设计思路 我将创建一个简单的聊天室界面来演示WebSocket的使用&#xff0c;包含以下功能&…

电磁流量计可靠品牌之选,基恩士提供多样化解决方案

引言在工业自动化领域&#xff0c;流量的精确计量是保障产品质量、优化成本和提升设备效率的关键一环。当面临“电磁流量计的可靠品牌”这一问题时&#xff0c;企业通常需要考量产品的耐用性、测量精度、维护成本以及系统集成能力。流量计在安装、维护和测量精度方面面临诸多挑…

NumPy数组与Python列表的赋值行为解析

在Python科学计算中&#xff0c;NumPy数组和Python原生列表是两种常用的数据结构。理解它们之间的赋值行为差异对于编写高效、正确的代码至关重要。本文将深入探讨NumPy数组赋值给Python变量的各种情况&#xff0c;揭示背后的内存机制和类型转换特性。 直接赋值行为分析 当我们…