Unity2021 Inventory(背包)系统学习记录
最近学习了Unity背包系统设计的基本设计。学习资料主要参考了B站up主:M_Studio的教学视频。学习完后,在Assets Store上重新下载了一套GUI对学习到的知识进行了一次复盘。现在,对复盘的过程进行一次记录。这个背包系统主要实现了基本的背包功能,Player(玩家)在场景中拾取得到物品,然后物品能够在背包上出现,背包中的物品也能够进行移动以及交换位置。
使用的资源都是在Asset Store上下载得到的免费资源,本次使用的UI主要是GUI_Parts、Simple Fantasy GUI、Tiny RPG Forest。
1. 设置UI
- 在场景中按照以下父子关系的顺序,创建UI。
- 然后,对UI组件对象进行重新命名。
-
把Slot设置为预制体,Slot表示一个装备栏,装备栏里有对应的游戏物品,这个装备栏显示的是物品的图片和物品的数量。
-
设置好Slot预制体后,可以在游戏场景中删除Slot的UI对象。
- UI的图片可以按照自己的喜好设置,这里需要注意的是Grid对象需要添加一个Grid Layout Group组件,使Grid做成网格布局。
- 通过上述的UI组件设置,其在场景中生成的效果如下图所示。
2.设置ScriptableObject
ScriptableObject可以把数据存储在资源文件中,当退出运行时也一样会保持修改。这里把物品和背包设置成ScriptableObject对象。
-
新建一个C#脚本Item.cs,用于创建物体的ScriptableObject对象。
using UnityEngine; [CreateAssetMenu(fileName = "New Item", menuName = "Inventory/New Item")]//右键菜单快速创建 public class Item : ScriptableObject { public string itemName;//设置物品的名称 public Sprite itemImage;//设置物品的图片 public int itemHeld;//设置物品的数量 [TextArea] public string itemInfo;//设置物品的描述 public bool equip;//设置物品可否装备 }
- 新建一个C#脚本Inventory.cs,用于创建背包的ScriptableObject对象。
using System.Collections.Ge