ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Unity3D 如何读取策划给定的Excel表格详解

2026/8/4 9:29:54 拓冰建站 浏览量
Unity3D 如何读取策划给定的Excel表格详解

前言

Unity3D是一款非常流行的游戏开发引擎,它可以帮助开发者快速构建游戏并进行测试和发布。在游戏开发过程中,策划经常会提供一些Excel表格,这些表格包含了游戏中的各种数据,如角色属性、技能效果等等。那么,如何在Unity3D中读取这些Excel表格呢?本文将详细介绍Unity3D如何读取策划给定的Excel表格,并给出技术详解以及代码实现。

对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!

一、Excel表格的读取

Unity3D并没有原生支持Excel表格的读取,因此需要使用第三方插件来实现。目前比较常用的插件有ExcelDataReader和NPOI。这两个插件都可以读取Excel表格中的数据,但是使用方法略有不同。

1.ExcelDataReader

ExcelDataReader是一款轻量级的Excel读取器,它可以读取Excel 97-2003和Excel 2007格式的文件。使用ExcelDataReader的步骤如下:

(1)在Unity项目中导入ExcelDataReader插件的dll文件。

(2)编写读取Excel表格的代码。

如下是一个简单的读取Excel表格的示例代码:

using System.IO;
using ExcelDataReader;
using UnityEngine;public class ExcelReader : MonoBehaviour
{public string filePath;private void Start(){//读取Excel文件FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//读取表格数据while (excelReader.Read()){for (int i = 0; i < excelReader.FieldCount; i++){Debug.Log(excelReader.GetValue(i));}}//释放资源excelReader.Close();stream.Close();}
}

其中,filePath为Excel表格的路径。在Start函数中,首先使用FileStream打开Excel文件,然后使用ExcelReaderFactory创建一个ExcelDataReader对象。接着,使用Read函数逐行读取Excel表格中的数据,并使用GetValue函数获取每个单元格的值。最后,释放资源。

2.NPOI

NPOI是一款功能强大的Excel读写库,它支持Excel 97-2003和Excel 2007格式的文件。使用NPOI的步骤如下:

(1)在Unity项目中导入NPOI插件的dll文件。

(2)编写读取Excel表格的代码。

如下是一个简单的读取Excel表格的示例代码:

using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.XSSF.UserModel;
using UnityEngine;public class ExcelReader : MonoBehaviour
{public string filePath;private void Start(){//读取Excel文件FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);IWorkbook workbook = null;if (Path.GetExtension(filePath) == ".xls"){workbook = new HSSFWorkbook(stream);}else if (Path.GetExtension(filePath) == ".xlsx"){workbook = new XSSFWorkbook(stream);}//读取表格数据ISheet sheet = workbook.GetSheetAt(0);for (int i = 0; i <= sheet.LastRowNum; i++){IRow row = sheet.GetRow(i);for (int j = 0; j < row.LastCellNum; j++){Debug.Log(row.GetCell(j));}}//释放资源workbook.Close();stream.Close();}
}

其中,filePath为Excel表格的路径。在Start函数中,首先使用FileStream打开Excel文件,然后根据文件扩展名创建一个Workbook对象。接着,使用GetSheetAt函数获取第一个表格,并使用GetRow和GetCell函数获取每个单元格的值。最后,释放资源。

二、代码实现

以上是读取Excel表格的基本步骤,下面给出一个完整的示例代码。在这个示例中,我们将读取一个包含角色属性的Excel表格,并将角色属性显示在屏幕上。

Excel表格的格式如下:

名称等级生命值攻击力防御力
小兵1100105
英雄15005020

1.创建一个空的Unity项目,并导入ExcelDataReader插件。

2.创建一个Excel表格,并将其命名为“Role”。

3.在Excel表格中填写角色属性,并保存表格。

4.创建一个Cube对象,并将其命名为“RoleDisplay”。

5.在Hierarchy面板中创建一个空的GameObject对象,并将其命名为“ExcelReader”。

6.将以下脚本附加到“ExcelReader”对象上:

using System.IO;
using ExcelDataReader;
using UnityEngine;
using UnityEngine.UI;public class ExcelReader : MonoBehaviour
{public string filePath;public GameObject roleDisplay;private void Start(){//读取Excel文件FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);//读取表格数据while (excelReader.Read()){string name = excelReader.GetString(0);int level = excelReader.GetInt32(1);int hp = excelReader.GetInt32(2);int attack = excelReader.GetInt32(3);int defense = excelReader.GetInt32(4);//创建角色属性显示GameObject display = Instantiate(roleDisplay, Vector3.zero, Quaternion.identity);display.transform.SetParent(transform);display.transform.localPosition = new Vector3(0, -30 * transform.childCount, 0);//设置角色属性display.transform.Find("Name").GetComponent<Text>().text = name;display.transform.Find("Level").GetComponent<Text>().text = "等级:" + level;display.transform.Find("HP").GetComponent<Text>().text = "生命值:" + hp;display.transform.Find("Attack").GetComponent<Text>().text = "攻击力:" + attack;display.transform.Find("Defense").GetComponent<Text>().text = "防御力:" + defense;}//释放资源excelReader.Close();stream.Close();}
}

其中,filePath为Excel表格的路径,roleDisplay为角色属性的显示预制体。在Start函数中,首先使用FileStream打开Excel文件,然后使用ExcelReaderFactory创建一个ExcelDataReader对象。接着,使用GetString和GetInt32函数获取Excel表格中的数据,并使用Instantiate函数创建角色属性的显示。最后,释放资源。

7.在Assets目录下创建一个名为“RoleDisplay”的文件夹,并将角色属性的显示预制体保存在该文件夹中。

8.将预制体的名称设置为“RoleDisplay”,并将其添加一个Canvas组件和一个ContentSizeFitter组件。

9.在预制体中添加五个Text组件,分别用于显示名称、等级、生命值、攻击力和防御力。

10.在场景中运行游戏,可以看到角色属性的显示已经被创建。

三、总结

本文介绍了Unity3D如何读取策划给定的Excel表格,并给出了使用ExcelDataReader和NPOI两个插件的示例代码。读取Excel表格可以帮助开发者在游戏开发过程中更方便地管理游戏数据,提高开发效率。同时,本文还给出了一个完整的示例,演示了如何将Excel表格中的数据显示在屏幕上。希望本文可以帮助读者更好地理解Unity3D的开发流程。

附:视频教程

Unity 框架设计(四) 基于Excel数据驱动框架​www.bycwedu.com/promotion_channels/1335729689​编辑