【Unity&NGUI】背包系统物品的累加

写到背包系统物品的累加以及多背包显示,里面涉及很多代码,因此,把重复的代码,尽量用一个变量表示


由于写背包系统的时候,只要是触发器,和碰撞器,就会使得物体变成其子物体

于是添加了两个字符串变量 Attribute和BodyPart用来缩小范围使得,背包系统的有效范围在,背包和装备栏里面

【Unity&NGUI】背包系统物品的累加_第1张图片

为所有的装备栏框框、和背包框框装备上该 BackpackCellAttri.cs文件,并在U3D里面设置好对应的字符

Attribute = "BodyEquipment" ;

BodyPart在背包系统中是空的,在装备栏系统中采取对应的字符。


在背包物体预制体中的Backpack Item.cs中添加了物品的属性



        ItemStyle = "BodyEquipment" ;//物体从属于哪个属性
        ItemBelongBP = "Backpack1";//物体从属于哪个背包

【Unity&NGUI】背包系统物品的累加_第2张图片

这两个变量也是要声明,并且初始化进行数值设置的(没有直接说明的,需要自行设置)
    public int count;//物体当前数量
    public int ItemMax;//物品每一组 最大的数量

物体数量增加、和数量减少函数

为什么要使用new void start,因为这个脚本类继承了UIDragDropItem的成员,UIDragDropItem里面也有个start函数,子类为了区分父类,需要这样做

public class BackpackItem : UIDragDropItem

【Unity&NGUI】背包系统物品的累加_第3张图片


JudgetItem函数,主要互换物体的位置

【Unity&NGUI】背包系统物品的累加_第4张图片


OnDragDropRelease函数,这个是主要函数,很多重要的参数都是在这个函数里面完成的

由于是直接使用了OnDragDropRelease函数,因此并不需要使用其他函数对其调用,如果不知道的,请自行查阅我之前写的文章,以及相关资料

主要用于第一次判断,当物体需要交换位置的时候,首先判断格子是否是 满足条件 的 “背包格子”,或者是“装备栏”

由于 “背包格子”都添加了“装备栏”BackpackCellAttri.cs文件用来区别其他的   碰撞体


JudgetItem(surfaceR);

 private void JudgetItem(GameObject surface)//获得 目标物体 类型名字

相同的数字用来表示同样的层级,因为看起来很乱

【Unity&NGUI】背包系统物品的累加_第5张图片【Unity&NGUI】背包系统物品的累加_第6张图片


#region endif(S_CC >= 1)内容如下图所示

#endregion

【Unity&NGUI】背包系统物品的累加_第7张图片

【Unity&NGUI】背包系统物品的累加_第8张图片


更正一下,177行的unitcount改为totalcount,该物体当前的 总共的数量

【Unity&NGUI】背包系统物品的累加_第9张图片

背包系统相关资料:



你可能感兴趣的:(Unity,NGUI,Unity教程,代码分析,Unity经验,Unity精灵,UnityUI,Unity背包系统)