物品窗口管理连接
简介:
在上一篇文章中我们已经创建好了一个UI界面,但是并没有和数据的链接,那么这篇文章就来连接一下我们的窗口中的各个属性,这篇文章的内容会比较简单,那么我们直接开始!
实现:
了解连接语法:
在Unity中我们连接UI和数据的属性的时候,Unity的官方文档中都有明确的解释以及使用这个时候我们就,可以了解一下我们Unity的文档,今天我将会带着大家一起写一下这个文章,那么我们直接开始,今天的内容都是一些代码内容也不会非常多那么我们先打开Editor文件夹下的cs脚本
1.连接 Item 表以此来获得Item数据
在我们第一章开始时我们创建了一个ScriptableObject,这个是用来存储我们的Item的所有信息的,根据我们的Item信息再对UI内容做相对应的修改,我们现在最主要的任务就是把数据先得到,无论是修改增加删除都需要先得到数据,大家看下面的代码,我在原来的基础上增加了加载我们ItemTable的函数,LoadDataBase(加载数据库),那么这个时候我们才可以进行下一步。大家看下面的代码:
using System.Collections.Generic;
using StockpileSystem;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
public class ItemEditor : EditorWindow
{
[SerializeField]
private VisualTreeAsset m_VisualTreeAsset = default;
private List<ItemBase> ItemList = new List<ItemBase>();
private ItemTable DataBase;
[MenuItem("Stockpile/ItemEditor")]
public static void ShowExample()
{
ItemEditor wnd = GetWindow<ItemEditor>();
wnd.titleContent = new GUIContent("ItemEditor");
}
public void CreateGUI()
{
// Each editor window contains a root VisualElement object
VisualElement root = rootVisualElement;
VisualElement labelFromUXML = m_VisualTreeAsset.Instantiate();
root.Add(labelFromUXML);
LoadDataBase();
}
/// <summary>
/// 加载资源文件
/// </summary>
private void LoadDataBase()
{
// 这个是Unity的一个加载资源的方法通过这个函数可以通过添加t:类型来找到这个项目里面这个类型的文件
var DataArray = AssetDatabase.FindAssets("t:ItemTable");
// 判断是否为空,也就是能否找到这个文件
if (DataArray.Length > 0)
{
var path = AssetDatabase.GUIDToAssetPath(DataArray[0]);
// 强制转换
DataBase = AssetDatabase.LoadAssetAtPath(path, typeof(ItemTable)) as ItemTable;
// 检查是否为空,并赋值
if (DataBase != null && DataBase.ItemDetails != null)
{
ItemList = DataBase.ItemDetails;
EditorUtility.SetDirty(DataBase);
}
else
{
// 报错
Debug.LogError("Failed to load ItemDataTable or itemDetails is null");
}
}
else
{

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



