RGPGame第二天

158 阅读3分钟

一、什么是UI ToolKit

1.前言

我们之前使用过的UI解决方案有UGUI,这里学习的UIToolKit是unity新推出的UI解决方案,目的是为了让我们更高效得开发出可复性性高且复杂的UI界面,在unity2021.3版本之前好像是直接可以创建好的,之前的版本是需要去unity资源商店下载。

2.UI ToolKit设计原理

image.png

二、搭建UI背包界面

创建UI界面面板,在里面可以进行UI面板的搭建,面板名称为demo,双击demo.cs文件,

[MenuItem("UI Toolkit/demo")] //和编辑器交互的,表示打开窗口的位置--这个路径跟菜单栏打开的路径一致

这个路径表示在我们菜单栏会生成UI Toolkit工具,里面存放了我们编辑好后的demo

image.png

创建ItemDataList_SO脚本,继承ScriptableObject,里面主要存放的是背包左侧列表的数据类型。并且

[CreateAssetMenu(fileName="ItemDataList_SO",menuName ="Inventory/ItemDataList")]

通过以上代码我们可以创建ItemDataList_SO,里面是一个集合,每一条数据里面存放的是左侧列表对应的数据。例如:

image.png

image.png

我们可以往ItemDataList_SO右侧添加两条数据。这个数据相当于就是临时数据库的数据,后期我们要读取这个数据文件拿到对应的值

双击ItemEditor,我们会打开UI编辑面板。

image.png 在这里我们进行UI面板的编辑,这里的具体步骤就不演示了,这种搭建的类似于将前端代码都分支成一个工具,通过点击的方式我们就可以实现很容易的排版效果。这里设计到了flex布局的知识。

创建好后,我们双击ItemRowTemplate,在这里面是我们创建的关联面板,里面有对应的模块类型。

三、背包数据初始化

1.创建DataCollection存放所有数据集合

在数据集合中创建物品详情列表


using UnityEngine;

[System.Serializable] //让下面的类在实例化的时候能够序列化,在检查器inspector能够显示出来

public class ItemDetails //物品详情信息
{
    //物品id
    public int ItemId;
    //物品名称
    public string ItemName;
    //物品的类型
    public ItemType Type;
    //物品价格
    public float Ttemprice;
    //物品图片 --精灵图--显示在UI界面
    public Sprite ItemTcon;
    //物品在世界的图片
    public Sprite ItemOnWorldIcon;
    //物品可显示的网格大小
    public int ItemUseRadius;
    //物品的详情
    public string Description;
    //物品可以折扣的范围
    [Range(0f, 1f)] public float PricePercentage; //等下在inspector窗口中会出现一个0-1的滚动条
    //物品能否被拾取
    public bool CanPickUp;
    //物品能否被扔出
    public bool CanDropDown;
    //物品能否被举起
    public bool CanCarried;
}

复制代码

2.创建Enum文件存储所有枚举类型的数据

编写存储物品类型的枚举

//Enums文件中存取了所有的枚举类型  

//物品的类型 
public enum ItemType
{
    //种子,商品,家具,
    Seed,Commodity,Furniture,
    //锄头,砍树的工具,砸石头的工具,割草的工具,浇水的工具,菜篮子,可以被割的杂草
    HoeTool,ChopTool,BeakTool,ReapTool,WaterTool,CollectTool,ReapableScenery
}
复制代码

3.这里出现的中括号相关的代码参考其他博客文档

blog.csdn.net/qq_32065601…

4.在Script文件中创建一个inventory类库存放我们的SO数据类

image.png

5.数据列表类ItemDataList_SO

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

////让它在编辑器窗口右击创建的时候会出现ItemDataList,点击可以创建一个ItemDataList实例,显示在inspector检查器窗口中,
///文件名是ItemDataList_SO,菜单名是Inventory/ItemDataList
[CreateAssetMenu(fileName="ItemDataList_SO",menuName ="Inventory/ItemDataList")]
public class ItemDataList_SO : ScriptableObject //ItemDataListSO数据列表
{
    public List<ItemDetails> ItemDataList;
}

复制代码

6.创建GameData来存放我们的数据库的信息

image.png

三、使用 UI Toolkit 和 UI Builder 制作物品编辑器

image.png