unity学习-背包系统

文章介绍了游戏开发中的背包系统设计,包括物品基类和武器类,以及多个数据表的使用来存储物品信息。UI结构分为消耗品、武器和任务物品三大类,通过事件驱动更新当前选择的物品种类和详情。物品的使用与技能系统相结合,通过命令类执行物品技能。整个设计参考了相关教程和框架。
摘要由CSDN通过智能技术生成

记录一下目前做的背包系统结构

2个物品类

ItemBase:物品基类,持有一个物品的基本信息

Weapon:武器类,继承物品基类,额外持有武器相关的信息(同一种类的武器的数值也有浮动)。

3个数据表

ItemConfigData:存储所有物品的基础数据,包括,id,名称,种类、描述,品质,图片路径,持有数量

PlayerItemCount:存储玩家持有的物品id和数量

PlayerWeaponData:存储玩家持有的武器信息,攻击、防御等。需要一个runtimeID用来区分同种武器的不同个体

其他

ItemConfigModel:存储所有物品的配置信息,读取json数据转换成字典,通过id获取对应物品的基本数据

BagSystem:读取玩家持有物品的数据转换为字典;读取玩家持有的武器数据转换为字典,读取时设置runtimeID;当前的选择物品;当前选择的种类;

UICell:背包界面的格子,初始化时设置自身持有的物品信息。

UI结构:

背包界面,分成3个大类:消耗品、武器、任务物品,设置toggle和toggle group,使得同时只有一个被选中;背包内容界面,使用组合控件ScrollView、自适应尺寸控件Content Size Fitter、排版layout Group;物品详细信息界面,显示当前选择物品的详细信息,使用和丢弃按钮

基本逻辑:

使用属性,在设置当前选择的物品种类时,调用更新物品种类事件

使用属性,在设置当前选择的物品时,调用更新当前物品详情事件,在物品详细信息的UI界面订阅这个事件

打开背包界面,订阅更新物品种类的函数,访问背包系统,根据当前物品类别获取物品信息列表,如果是武器类,获取持有的武器信息,结合该类武器的基本信息,组成一个完整的武器(享元?),背包界面获取到列表后,清空其下存有的所有格子(使用缓存池),遍历列表,取出格子并初始化,设置其存有的物品,根据图片路径获取图片,设置数量(武器不设置数量)。如果当前选择的物品的种类与当前选择的种类不同,需要设置该类的第一个格子设置为选择的物品。

物品进行增删时调用更新物品种类事件和更新当前物品详情事件(做的时候有些bug,大概是更新物品详情时当前物品为空,记不清了,注意下不要空引用就行了)

物品的使用

新增了一个物品技能系统,对每种物品技能写一个command类(有些物品的技能只是改个参数,用构造函数赋值),持有一个物品id-command的字典,然后在系统初始化时,手动为各个种类的物品添加命令类,在点击使用按钮时,访问技能系统,获取到对应的command并执行。

物品的使用是自己摸索的,如果有什么好的代替方法请在评论区留言,十分感谢!

背包系统的搭接过程参考了火星网课的json数据持久化教程、凉鞋的Qframework框架。UI的搭建是通过csdn学习的ui组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值