首页 > 其他分享 >Unity3D 如何读取策划给定的Excel表格详解

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

时间:2023-12-14 10:14:40浏览次数:38  
标签:Unity3D 读取 表格 filePath Excel 详解 excelReader using

前言

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表格的格式如下:

名称等级生命值攻击力防御力
小兵 1 100 10 5
英雄 1 500 50 20

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

标签:Unity3D,读取,表格,filePath,Excel,详解,excelReader,using
From: https://www.cnblogs.com/liuwenyi/p/17900535.html

相关文章

  • 第六节:二叉树详解
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • Unity3D 开发中有那些提升效率的高级技巧详解
    Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具来帮助开发者提高效率。本文将详细介绍Unity3D开发中的一些高级技巧,包括资源管理、内存优化、代码优化以及性能调优等方面。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • Unity3D UDP协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • 如何使用java生成 Excel 股票图?
    要使用Java生成Excel股票图,可以使用POI库来操作Excel文件,使用JFreeChart库来生成股票图。首先,确保已经添加了以下依赖库:ApachePOIJFreeChartJCommon下面是一个简单的示例代码,用于生成一个包含股票图的Excel文件:importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.xssf.......
  • C# 操作Excel
     1.使用Aspose.Cells合并单元格下载Aspose包,可以去Nuget网站下载NuGetGallery|Packagesmatchingaspose 也可以使用vs安装Nuget包 语法:publicvoidMerge(intfirstRow,intfirstColumn,inttotalRows,inttotalColumns);实现代码:usingAspose.Cells;us......
  • 冒泡排序详解
    算法思想1、两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,最终的结果是最大的一个元素移动到了最后的位置。 我们暂称这个过程为冒泡。2、如果有n个元素那么【冒泡操作】重复n-1次即可排序完成。    学习过程思想1.一共两层for循环2.第一个fo......
  • TCP详解
    1.TCP介绍TCP是面向连接的、可靠的、基于字节流的传输层通信协议。2.TCP头格式源端口号/目的端口号序号解决包乱序问题确认序列目的是确认发出去对方是否有收到。如果没有收到就应该重新发送,直到送达,这个是为了解决丢包的问题。首部长度表示TCP首部有多少个(4字节)的......
  • excel 速成
     【文本】:查找、替换、截取、拼接数字:加、减、乘、除、保留小数位数【日期】:日期加减、时分秒加减【逻辑】:if、and、or、not【异常】:对计算过程中产生的错误进行处理,如:1/0,N/A【分组聚合】:无条件聚合,有条件聚合、最大值、最小值 1.if(and/or/not)2. iferror()3. text(......
  • HASH与对称加密详解
    HASH概述Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简......
  • Linux下PCI设备驱动开发详解(二)
    Linux下PCI设备驱动开发详解(二)根据上一章的概念,PCI驱动包括PCI通用的驱动,以及根据实际需要设备本身的驱动。所谓的编写设备驱动,其实就是编写设备本身驱动,因为linux内核的PCI驱动是内核自带的。为了更好的学习PCI设备驱动,我们需要明白内核具体做了什么,下面我们研究一下,linuxPCI......