1. 为什么游戏开发需要Excel数据自动化?
在Unity游戏开发中,策划同学经常需要调整角色属性、道具参数或关卡数据。想象一下这样的场景:每次策划修改了Excel表格里的数值,程序员都要手动复制粘贴到代码里重新打包,这种重复劳动不仅效率低下,还容易出错。我在参与一个RPG项目时就遇到过这种情况 - 因为手动同步数据导致线上版本的道具价格全部错乱,造成了不小的损失。
NPOI作为.NET平台处理Excel文件的神器,能够完美解决这个问题。它可以直接读取.xlsx文件内容,把表格数据转换为游戏可用的C#对象。更重要的是,它支持复杂的Excel操作,比如合并单元格、公式计算、数据验证等,完全能满足游戏配置的各种奇葩需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 获取NPOI的正确姿势
首先需要下载NPOI的DLL文件,这里有个坑要注意:Unity只认特定版本的.NET类库。推荐使用NPOI 2.5.5版本,亲测在Unity 2021 LTS上运行稳定。下载后把以下核心DLL放入Assets/Plugins文件夹:
- NPOI.dll
- NPOI.OOXML.dll(处理xlsx格式)
- NPOI.OpenXml4Net.dll(依赖项)
注意:如果遇到"不兼容"报错,记得在Player Settings里将API Compatibility Level改为.NET 4.x。我去年就因为这个配置浪费了两天时间排查问题。
2.2 基础读写示例
先看个最简单的创建Excel的例子:
csharp复制using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
public class ExcelDemo {
void CreateSimpleExcel() {
// 就像新建一个笔记本
IWorkbook workbook = new XSSFWorkbook();
// 添加一个工作表页
ISheet sheet = workbook.CreateSheet("角色属性");
// 第一行写表头
IRow headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("角色ID");
headerRow.CreateCell(1).SetCellValue("攻击力");
// 第二行写数据
IRow dataRow = sheet.CreateRow(1);
dataRow.CreateCell(0).SetCellValue(1001);
dataRow.CreateCel
