一:前言
因为工作需要,程序要求和策划,编剧对接时,一般以excel文件交接,但是如果直接存取excel文件,则会导致占的内存过多,于是,将excel文件转化成unity自带的ScriptableObject格式势在必行,ScriptableObject的读取非常便利,可以大大的优化效率。
本文将手把手教你学会如何将Excel文件转化成ScriptableObject将Excel文件转化成ScriptableObject,并附上插件地址以便于下载,且将教会你怎样在unity读取ScriptableObject文件。
CSDN下载:【免费】UnityExcel文件转化成ScriptObject插件资源-CSDN文库
百度网盘:https://pan.baidu.com/s/1o1ub3531boKEYCd1rEKZZw?pwd=dczd
提取码:dczd
二:实现
1.先将插件导入项目
2.导入要转化的Excel文件(文件夹随意)
但是转化出的ScriptObject文件会跟它会在同一个文件夹里,且会与Excel同名。
显然,测试Excel文件叫UnData,里面有两张表,一张表叫unversities,另一张表叫majors
表名特别重要!!!要与下面的创建的ScriptObject继承类中的属性一一对应。
第一行数据为属性名,比如unversities表中有三个属性,id,unName,description
3.创建对应的可序列化的对象类
Entity中存放的是可序列化的对象类
(1)Major类
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class Major
{
public int id;
public string majorName;
public string description;
}
(2)Unversity类
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class Unversity
{
public int id;
public string unName;
public string description;
}
4.创建与Excel文件同名的ScriptObject继承类
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExcelAsset]
public class UnData : ScriptableObject
{
public List<Unversity> unversities;
public List<Major> majors;
}
类中的属性unversities,majors必须与Excel文件中的表名一一对应,否则会失败。
三:实现成果
1.转化文件
右键要转化的Excel文件,选择重新导入自动转化
或者修改保存Excel文件也会自动转化。
文件转化成功将会自动增加到同一个文件夹中
导入成功的话控制台也会有显示
点击新增加的文件就会看到导入结果了
2.ScriptObject文件加载
创建一个C#脚本,并把它挂载到场景中随意一个物体上
(1)在Resources文件夹中加载
private UnData unData;
void Start()
{
unData = (UnData)Resources.Load<ScriptableObject>("Datas/UnData");
}
(2)直接在unity编辑器中拖拽
但是要将private改成public才能在unity编辑器中显示
3.获取数据
可直接获取到数据
string name = unData.unversities[0].unName;