当前位置: 首页 > news >正文

Unity 实现的背包系统

Hello Inventory System

Unity 实现的背包系统。

TEST

  1. 点击底部 TEST 按钮随机生成物品到 Chest
  2. 点击物品可以将其 “拿起” ,按住键盘左侧的 Ctrl 键可以按半数拿起和放下;
  3. 属于装备的物品可以点击右键装备上,显示在人物装备属性面板,相应地在人物装备面板右键卸下装备;
  4. 商店的物品点击右键可以购买钱足够的话),左键点击商店的任一物品槽可卖出手上的物品,按住键盘左侧的 Ctrl 键可以单个出售;
  5. 鼠标放在物品上有跟随鼠标的提示框显示其信息

实现

  • Item 作为各种物品的父类,定义物品的各种属性,提供 ToolTip 的内容。

  • Inventory 作为背包、箱子、商店等各种放置物品槽的 Panel 的父类,背包箱子都只需要实现单例,其他则需要实现特定行为如购买物品出售物品 等。背包与箱子的功能和实现都一致,所以只做了箱子(Chest)。

  • InventoryManager 拥有单例,负责加载所有 Item ,也负责鼠标所 “拿着” 的物品和提示框(ToolTip)的显示。

  • Slot has ItemUI has ItemSlot 中进行点击hover事件的处理。Slot 还要作为 EquipmentSlotVendorSlot 的父类,拓展之后才能实现商店 购买出售 的功能以及人物装备面板对装备槽只能放置特定物品的要求。

遇到的问题

人物属性更新问题

人物装备面板 CharacterPanel 的装备取下时人物属性数据不更新,教程源码中的运行结果也是如此。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后来在 CharacterPanel 中更新属性值的函数 UpdateProperty() 中加入 Debug.log(slot.gameObject.name) 输出当前面板所有存在的装备名,运行时发现卸下装备调用 UpdateProperty() 函数时的现有装备仍是卸下之前的,即更新的仍是旧的装备状态

Slot 中判断是否有物体的函数 HasItem() 是通过检查 Slot 游戏物体是否有子物体来判断的,但是卸下装备的 Destroy()有延迟的,是在下一个 Update() 之前调用(此次 Update() 最后)。

Destroy() 替换成 DestroyImmediate 应该就可以了,但是当时不知道可以用 DestroyImmediate ,在 Slot 中加入了一个 bool hasItem ,记录自身是否有 Item ,销毁时使用 DestroyItemUI(),及时将状态置位 false ,保证更新属性时检查到的都是及时的装备信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

UML图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


http://www.mrgr.cn/news/61634.html

相关文章:

  • CI/CD 的原理
  • STM32应用详解(10)I2C总线初始化
  • arcgis pro 3.3.1安装教程
  • 什么是时间戳?怎么获取?有什么用?
  • ssm007亚盛汽车配件销售业绩管理统(论文+源码)_kaic
  • 腾讯云在线扩容数据盘
  • 微服务架构设计与实现:从理论到实践
  • 智能指针介绍
  • Python 编程风格:多余的空格
  • 关于JavaWeb开发框架有哪些?
  • 常见字符串操作函数
  • 问:缓存穿透、雪崩、预热、击穿、降级,怎么办?
  • springboot入门学习笔记2(连接mysql,使用mybatis,plus等)
  • 优维好案例:某银行系理财公司的IT基础资源服务管理平台
  • 支持向量机(Support Vector Machines, SVM)详细解读
  • python画图|被忽视的坐标轴比例ax.set_box_aspect()函数
  • 使用 OpenCV 进行人眼检测
  • 从零到一:大学新生编程入门攻略与成长指南
  • CAN总线物理层&基础特性
  • H3C M-LAG 实验
  • 名词(术语)了解 -- SSG
  • Java 中 JSONObject 遍历属性并删除的几种方法对比
  • TypeScript 泛型
  • thrift idl 语言基础学习
  • ConcurrentHashMap【核心源码讲解】
  • Python——命令行计算器