使用工厂模式制作背包系统流程

由于素材都是网上找的还有一些截图,只能将就看看。下面来讲一下具体的逻辑。

首先就是为什么要用工厂模式设计背包系统,当我们在背包中需要显示很多物品的时候,我们可能需要给每一个物品制作一个预制体,那物品的数量越多,制作预制体越麻烦,并且拖拽预制体赋值的时候可能会拖拽错误等,那么最容易想到的就是,我先制作一个image的预制体,里面不放任何的物品图片,当我在游戏中收集到物品的时候,我再将收集到物品的图片和预制体一起放进工厂,加工成一个带图片的预制体,最后将这个预制体放到背包ui中就行了。

接下来是具体流程:

 

 首先物体被玩家触碰之后将物品名字传递给InventoryManager,在InventoryManager中将得到的名字传递给so文件并且获取物品的详细信息,然后再将详细信息比如图片,物品名交给工厂和预制体一起加工成物品预制体,然后再将新预制体通过事件委托传递给UI进行更新。

下面是在我的项目中更新ui的过程:

当预制体传入ui之后不能马上在背包更新,因为可能此时的背包物体还未启用,所以我设置了一个空物体,现将ui需要更新的预制体都加载到空物体上,当启动背包时遍历空物体的所有子物体也就是预制体,将他们的父级设置为背包ui。注意这里一定不能直接用foreach来遍历子物体,因为每改变一个子物体的父物体,就会导致foreach的迭代器失效,无法遍历到下一个子物体,比如这样写每次就只能把一个物品更新到ui上,因为更新完第一个ui迭代器就失效了

 正确写法是先把子物体都加载到list里面然后一个一个设置父级:

 我使用的是Grid Layout Group组件,所以直接把预制体作为ui的子物体,这个组件就会自动按设计好的参数将物品放入背包

 收集两个物品之后效果就是这样

接下来如何点击物品显示对应的信息呢,我们只需要把预制体上加一个button组件,创建UI介绍的Text物体,在inventorymanager中添加一个Text文本并用并刚刚创建的Text物体赋值,然后在inventorymanager中利用字典将每一个物品的名称和介绍作为键值对存储起来,然后在预制体上添加一个返回预制体名称的脚本,每当我点击物品的时候,利用button的on click()将预制体名称传进inventorymanager,然后利用字典找到物品介绍赋值给Text文本。

 最终效果

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值