Unity 社区
8
1

【菜菜丸的菜鸟教程】如何将Excel中的数据导入Unity

Penny Lu
挚爱Unity的入门级选手
阅读 3817
2023年5月4日
本文将向大家介绍一种将Excel数据导入Unity的简单方法。
我们制作游戏时,有时会需要使用批量数据。在Excel中编辑处理数据显然比在脚本中逐条输入数据要方便得多,但如何将Excel数据导入Unity使用呢?本文就将向大家介绍一种简单实用的方法。
一、插件
在Unity资源商店里有一些工具,可以用来将Excel数据导入Unity,但是大多数都收费。这里向大家介绍一款小巧实用的免费插件,由mikito开发的Unity Excel Importer。下载地址为:https://github.com/mikito/unity-excel-importer
解压后,可以将其直接拷贝进Unity工程文件的目录使用。
准备好后,在Project窗口中单击右键>Create,如果菜单中出现了ExcelAssetScript选项,就说明插件安装成功了(这时该项目为灰色,这是正常的)。
二、准备Excel文件
和使用其他资源的方法一样,将Excel文件直接拷贝进Assets文件夹即可,这里不多赘述。只有一点要注意,就是表内第一行应为列名,从第二行开始输入对应数据,示例如下:

三、脚本
在导入Excel数据之前,我们需要写两个简单的脚本。
(1)将列名声明为公共变量的脚本
新建一个脚本,格式如下。其中公共变量对应Excel表中的各列列名。类前需要加上[System.Serializable]这个序列化特性,让自定义类型可以被访问。
注意:此处的变量名应与Excel表中的列名相同,否则可能出现数值无法正确导入的情况。
using System.Collections; using System.Collections.Generic; using UnityEngine; [System.Serializable] public class ExcelData { public int ID; public string name; public string type; public int attack; public int defense; public int HP; }
(2)ScriptableObject脚本
现在,右键单击Project文件夹,选择Create>ExcelAssetScript,文件夹中将自动创建一个和Excel文件同名的脚本。打开它,会看到它是一个继承了ScriptableObject的脚本。现在,类中的三行脚本都被注释掉了。我们按照注释,将List<EntityType>中的EntityType替换为刚才创建的类名,然后删掉行前的双斜杠注释符,如下:
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; [ExcelAsset] public class ExcelData_SO : ScriptableObject { public List<ExcelData> Sheet1; // Replace 'EntityType' to an actual type that is serializable. //public List<EntityType> Sheet2; // Replace 'EntityType' to an actual type that is serializable. //public List<EntityType> Sheet3; // Replace 'EntityType' to an actual type that is serializable. }
如果你的Excel表只有Sheet1有数据,那么只删掉第一行的注释符即可。
四、生成ScriptableObject文件
最后,右键单击Project文件夹中的Excel文件,选择Reimport。这时,文件夹中将自动创建一个同名ScriptableObject文件,如下图所示。虽然在Inspector中无法直接编辑这些数据,但是当Excel表格中的数据更新时,这里的数据也会同步更新。
五、应用示例
这里用一个简单示例来说明如何在Unity中调用我们导入的数据。
在Hierarchy窗口中新建一个Panel,并在它下面挂一个Text子物体。创建以下脚本并挂在Panel上。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class CaiCaiUI : MonoBehaviour { public Text text; public ExcelData_SO excelData; // Start is called before the first frame update void Start() { if(excelData != null) { text.text = "名称:" + excelData.Sheet1[0].name + " " + "类别:" + excelData.Sheet1[0].type + " " + "攻击力:" + excelData.Sheet1[0].attack + " " + "防御力:" + excelData.Sheet1[0].defense + " " + "生命:" + excelData.Sheet1[0].HP + " "; } } }
回到Inspector窗口为脚本中的变量赋值。
运行游戏,显示如下:
现在,大家应该已经掌握了如何将Excel中的数据导入Unity了。利用好这个工具,可以让游戏开发事半功倍哦~

发布于技术交流
1条评论

AI

全新AI功能上线

1. 基于Unity微调:专为Unity优化,提供精准高效的支持。

2. 深度集成:内置于团结引擎,随时查阅与学习。

3. 多功能支持:全面解决技术问题与学习需求。

AI