unity背包和拾取系统的制作(一)

第一部分:背包的UI制作:

unity背包和拾取系统的制作(一)_第1张图片
BagCanvas是 Canvas组件,EquipmentBag是一个Image组件,用来充当整体背包的背景;Grid_01是一个空物体,在上面附加一个Grid Layout Group组件,用来进行一个网格的水平布局;Ucell是Image组件,作为格子的背景
unity背包和拾取系统的制作(一)_第2张图片
还有一个 UItem组件也是一个Image类型,第一个text子组件显示物体的数量,放在图片右下角可以;Reduce组件是作为物品介绍(这里其实应该命名为 introduce,鬼知道怎么想成了 Reduce - ,-),这是一个panel类型,子组件是Text类型,用来显示物品属性。 显示不同的物体就是替换掉UItem的Sprite,然后根据不同的信息显示相应的介绍。这里的UItem组件做成预制体,前面的Ucells也做成预制体。

先说整体思路:
1.图片的显示,将UItem生成为Ucells的子物体,然后替换掉 UItem上面的Sprite,然后显示不同的图片。
2.物品的交换:通过继承IBeginDragHandler, IEndDragHandler, IDragHandler三个接口,实现里面的方法来完成物品的拖拽和交换等功能
3.多背包的切换,我是通过三个按钮
unity背包和拾取系统的制作(一)_第3张图片
每个按钮控制不同背包,点击某个背包的时候,就通过绑定事件隐藏另外两个背包就行。
***4.物品的存储:***写一个总的物品类 Item类,然后通过不同子类实现不同的物品总属性,然后在构造方法里面给不同的物品赋值,那物品信息怎么存储呢?看了一下网上的方法,一般就是要不使用数据库,但是这个可能对于物品特别多的时候很好用,建立一个表来存储;另一种方法使用json文件的方式存储信息,然后通过解析json文件来读取物品信息。 我为了追求方便一点,而且我要存储的物品也不多,就用了另一种方法,我把物品信息分类存储在了三个 Dictionary之中,然后通过一个Search方法,读取里面的值。

5.物品的拾取,通过一个圆形的区域检测,来对比拾取范围内物品的tag,然后根据不同的tag,到对应的Dictionary中进行查询,对应的key值,就是物品的name,通过name来查询最终的物品信息,然后读取资源里面相应的图片,放到背包之中,然后销毁物体,完成拾取功能。
unity背包和拾取系统的制作(一)_第4张图片
最终结果图(丑是真的丑,但我比较注重功能,嗯,一定是这样)

你可能感兴趣的:(unity)