废话不多说
第一步:创建3个文件夹(Data,Editor,Excel)。
第二步:下载Excel转换插件(链接mikito/unity-excel-importer (github.com))
第三步:导入插件。
第四步:编写Excel表格取名叫TextDatas(表格里面的名字也要改成TextData)在里面写一些测试数据。
第五步:编写脚本TextDatas。
using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class TextData//需要序列化的字段
{
public string Name;//职业
public float Hit;//攻击
public float Defense;//防御
public float Hp;//生命
}
[ExcelAsset(AssetPath = "Data")]//导出数据目标地址
public class TextDatas : ScriptableObject
{
//列表名字要和excel文件名相同(表格里面的名字)
public List<TextData> textData;
public Dictionary<string, TextData> TextDataDataDict => textDataDict;//公开字典
private Dictionary<string, TextData> textDataDict;//私有字典
//初始化Excel中的数据
public void Init()
{
textDataDict = new Dictionary<string, TextData>();
foreach (var item in textData)
{
//添加到字典中,key为职业名
textDataDict.Add(item.Name, item);
}
}
}
第六步:将Excel拖入刚刚创建的Excel文件夹中。
第七步:导入过后我们就能在Data文件夹里面看到创好的数据了。
第八步:在场景中创建一个图片和4个文本加一个空对象
第九步:编写Fashi脚本用来读取法师(也可以是其他的)的数据并加到空对象上。
using UnityEngine;
using UnityEngine.UI;
public class Fashi : MonoBehaviour
{
public Text nameText;
public Text hitText;
public Text defenseText;
public Text hpText;
public TextDatas textDatas; // 将 TextDatas ScriptableObject 作为公共变量暴露在编辑器中
private void Start()
{
// 确保 TextDatas 已经初始化
textDatas.Init();
// 从字典中读取法师的数据
if (textDatas.TextDataDataDict.TryGetValue("法师", out TextData mageData))
{
// 更新文本
nameText.text = mageData.Name;
hitText.text = mageData.Hit.ToString();
defenseText.text = mageData.Defense.ToString();
hpText.text = mageData.Hp.ToString();
}
else
{
Debug.LogError("Mage data not found!");
}
}
}
第十步:将文本和脚本和数据绑定起来
第11步骤:运行游戏就可以看到游戏里面的数据更新了,并且与表格一致
如果看到这里还是觉得麻烦可以直接到链接(GitHub - laozhupeiqia/-Excel-)去下载直接导入游戏就能使用的资源包(插件已经添加进去了真的下载即用),自己多玩几遍就会了。