个人技术总结——Unity实现背包系统

222200206朱江 2024-12-14 22:06:04

目录

  • 一、技术概述
  • 二、技术详述
  • 2.1 GUI图形界面
  • 2.2 编写物品脚本
  • 2.3 编写背包脚本
  • 2.4 编写世界物品脚本
  • 2.5 编写物品显示脚本
  • 2.6 编写背包管理脚本
  • 三、遇到的问题和解决方案
  • 3.1 问题:背包中没有显示物品
  • 四、总结
  • 五、参考博客

一、技术概述

Unity中利用ScriptableObject可以创建和管理游戏背包系统。ScriptableObject是一种特殊类型的类,它可以在Unity编辑器中创建实例,并作为数据容器存储游戏数据。用于角色装备、道具管理和物品存储等场景实现。学习该技术可以实现灵活且高效的背包系统。技术难点在于如何合理组织ScriptableObject数据结构和优化数据访问性能。

二、技术详述

2.1 GUI图形界面

img

介绍:这里创建了一个名为Bag的panel对象用作背包,在Bag对象下创建子对象Grid和ItemDescription。其中Grid的类型是图片,插入一张背包背景图片和添加Grid Layout Group组件,用于控制存储的物品的位置。ItemDescription的类型是文本,用于显示物品信息。

2.2 编写物品脚本

img

介绍:在项目(project)中创建名为Inventory的文件夹。

img

介绍:创建一个名为item的c#脚本,item类的继承要写ScriptableObject而不是MonoBehaviour,用于定义物品的基本属性,包括物品ID、物品名称、物品数量、物品描述、物品图片等。使用[CreateAssetMenu(fileName = "New Item",menuName = "Inventory/New Item")]标记ScriptableObject类

img

img

介绍:我们在空白Inventory文件夹中创建一个名为Items的文件夹,用来专门存储我们的物品。在Items文件夹中右键创建,可以在最上面看到我们新建的菜单名为Inventory,里面有我们预设的新的物品New Item。点击创建Unity会为我们创建一个默认名为New Item的ScriptableObject对象。我们可以通过这个方式创建自己的物品,比如说创建一把剑Sword,在右边的inspector中可以修改我们创建的物品的属性,可以看到刚才我们在脚本中编写的属性都罗列在上面了,你可以自由修改物品的属性。

2.3 编写背包脚本

img

介绍:创建一个名为Inventory的c#脚本,同样继承ScriptableObject。我们希望这个背包是一个列表,它将我们所有的物品都存储在这个列表中。

img

介绍:在Inventory文件夹中创建名为New Inventory的文件夹,用来存储我们的背包。同样右键创建,我们可以看到Inventory菜单下多了一个New Inventory的选项,点击创建,Unity会为我们创建一个默认名为New Inventory的ScriptableObject对象。我们可以通过这个方式创建自己的背包,比如说创建一个名为Bag的背包。

img

介绍:在Bag的inspector中,点击+号添加一个新物品,我们可以将刚才创建的Sword拖进去。

2.4 编写世界物品脚本

img

介绍:创建一个名为Item On World的c#脚本,继承MonoBehaviour。这个脚本将用于将物品显示在场景中进行链接,我们的每个物品都要绑定这个脚本。

2.5 编写物品显示脚本

img

img

img

介绍:创建一个名为Slot的Prefab,并为其创建一个名为Slot的c#脚本,继承MonoBehaviour。这个脚本将用于显示物品,并处理物品的点击事件。将脚本绑定到Slot Prefab上。

2.6 编写背包管理脚本

img

img

img

介绍:创建一个名为InventoryManager的c#脚本,继承MonoBehaviour。这个脚本将用于管理背包,添加新物品,更新物品,更新物品描述。将脚本绑定到Bag对象上。

img

介绍:在Hierarchy中,我们创建一个textingItem对象,将Item On World脚本拖到textingItem对象上,在inspector中,将我们创建的Sword拖到Item On World的This Item属性中,将我们创建的Bag拖到Item On World的Player Inventory属性中。将textingItem对象拖到Bag的Grid中。

img

介绍:启动项目,我们可以在背包中看到我们刚才添加的物品Sword,点击可以看见物品的描述

三、遇到的问题和解决方案

3.1 问题:背包中没有显示物品

原因:
创建物品时可能没有完成脚本绑定,或者没有在列表中添加该物品,或者没有创建相关的ScriptableObject对象
解决方案:
每次创建一个新物品时,首先要在items文件夹(你可以自由创建物品存储文件夹,最好物品都存储在一个文件夹中)中创建一个新的New Item对象,并确定物品名称、物品图片、物品ID、物品数量、物品描述。在场景中的物品对象中添加Item On World脚本,并将ScriptableObject对象拖入This Item属性中,将背包的ScriptableObject对象拖入Player Inventory属性中。最后,在背包的ScriptableObject对象中添加新物品,将新物品拖入列表中。

四、总结

ScriptableObject时Unity中一项强大的类,运用它创建的背包系统可以运用在各种3D、2D游戏中。这项技术的对于游戏开发者是不可或缺的。

五、参考博客

Unity用户手册

Unity背包教程

...全文
138 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

109

社区成员

发帖
与我相关
我的任务
社区描述
202401_CS_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_TeacherL
  • 032002124林日臻
  • 助教姜词杰
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧