Unity3d

上期工程完成了装备的穿戴功能,本期开始创建装备的卸下功能和属性加成功能。

需求:

右键点击装备栏上的装备图标,使其返回至背包中。

需求拆解:

鼠标移动至装备图标上,右键点击,销毁装备,在背包中生成该装备的镜像,完毕。

根据上述思路,这个功能实现起来比较简单:

①首先为EquipmentItem添加BoxCollider,使装备栏中的装备可以被点击;

②对该EquipmentItem添加脚本如下:

Class EquipmentItem

{

       private bool isHovering = false;

       void OnHover( bool isTagert )

       {

             isTarget = isHovering; 

       }

       void Update()

       {

            if(isHovering)

            {

                if(Input.GetMouseDown(1))

                {

                    Inventory._instance.GetId(id);

                    GameObject.Destory(this.gameObject);

                }

            } 

       }

}

这样就实现了卸下装备的功能。

属性加成功能:

需求:将装备上的attack、def和speed值加算到人物上。

需求解析:

将装备中的属性值赋值给加算变量即可。

对Class EquipmentUI进行更新

Class EquipmentUI

{

    private int attack;

    private int def;

    private int speed;

    public void UpdatePropety( )

    {

        attack = 0;

        def = 0;

        speed = 0;

        EquipmentItem headgearItem = headgear.GetCompnentInChild<EquipmentItem>();

        EquipmentItem armorItem = armor.GetCompnentInChild<EquipmentItem>(); 

        EquipmentItem leftHandItem = leftHand.GetCompnentInChild<EquipmentItem>(); 

        EquipmentItem rightHandgearItem = rightHand.GetCompnentInChild<EquipmentItem>();

        EquipmentItem ShoeItem = shoe.GetCompnentInChild<EquipmentItem>();

        EquipmentItem AccessoryItem = accessory.GetCompnentInChild<EquipmentItem>();

        PlusProperty(headgearItem);

        PlusProperty(armorItem);

        PlusProperty(leftHandItem);

        PlusProperty(rightHandItem);

        PlusProperty(shoeItem);

        PlusProperty(accessoryItem);

    }

    void PlusProperty(EquipmentItem item)

    {

        if(item != null)

        {

            ObjectInfo info = ObjectsInfo._instance.GetObjectInfoById(item.id);

            attack += info.attack;

            def += info.def;

            speed += info.speed;

        }

     public bool Dress()//在return true前更新一句

    {

        UpdateProperty();

        return true;

    }

    //创建TakeOff方法,处理卸掉装备的方法

    public void TakeOff(int id,GameObject go)

    {

        Inventory._instance.GetId(id);

        GameObject.Destroy(go);

        UpdateProperty();

    }

}

这样就可以了

原文地址:https://www.cnblogs.com/yanbenxin/p/5875949.html