【菜菜丸的菜鸟教程】如何将Excel中的数据导入Unity
我们制作游戏时,有时会需要使用批量数据。在Excel中编辑处理数据显然比在脚本中逐条输入数据要方便得多,但如何将Excel数据导入Unity使用呢?本文就将向大家介绍一种简单实用的方法。一、插件在Unity资源商店里有一些工具,可以用来将Excel数据导入Unity,但是大多数都收费。这里向大家介绍一款小巧实用的免费插件,由mikito开发的Unity Excel Importer。下载地址为:h
·
我们制作游戏时,有时会需要使用批量数据。在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了。利用好这个工具,可以让游戏开发事半功倍哦~
更多推荐
已为社区贡献712条内容
所有评论(0)