目录
一、背包系统的实现
视频演示地址: 【Unity3D 背包系统的实现】
1. 导入需要的游戏资源包
在Asset Store中添加并导入以下三项资源包:
2. GUI 图形界面设计
在之前实现好的场景中添加一个名为Bag的Panel,为其添加子对象:Button对象CloseButton;包含text的image对象Title;text对象itemdescription;和panel对象Grid:
‘
(1)设置关闭按钮事件
在CloseButton中,添加GameObject对象“Bag”的关闭事件。
(2)设置背包栏的网格结构
1. 为Grid导入图片素材,同时按住Alt和Shift,并点击居中结构即可使panel位于Bag的中央,调整大小:
2. 为Grid添加Grid Layout Group的component,即可实现每一小格的网格效果,可调整每格的大小和间距,使每个小格居中:
3. 添加Grid子对象slot和slot的一个text子对象,可以设置装备图片及其数量,将slot作为预制体:

(3)GUI界面
得到的GUI界面大致如下,在Player挂载的movement脚本中添加OpenMybag操作,并将Bag添加到Player中的MyBag对象,即可实现玩家按下O键打开背包的功能:
3.创建背包物品的数据结构
① 定义一个物品类(Item),包含物品的名称、图标、描述等属性。
② 使用脚本ScriptableObject来创建可在Unity编辑器中配置的物品实例。
将MonoBehaviour替换为ScriptableObject,使用它可以高效地创建物品数据库和物品模版,进行数据存储。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "New Item", menuName = "Inventory/New Item")]//可以在鼠标右单击 创建 找到 可以创建一New Item类的文件
public class Item : ScriptableObject//数据本地化
{
public string itemName;//物体名称
public Sprite itemImage;//物体图片
public int itemHeld; //物体数量
[TextArea]//文字可以显示多行
public string itemInfo;//物体描述
public bool Equip;//物体种类
}
③ 在Items文件夹中可以添加并导入各个物品的信息,如下图: