• 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();

        }

    }

    这样就可以了

  • 相关阅读:
    [支付]银联支付(对jdk有要求,最好直接使用jdk7)
    [支付]支付宝支付(网银在线支付)
    Eclipse编辑窗口放大缩小的快捷键
    jQuery Validation Engine 表单验证
    Eclipse能否把选中的一段代码向前或向后缩进一个tab的位
    hql查询技巧
    Web桌面端
    大型网站技术架构
    FastDFS--分布式文件系统
    消息队列
  • 原文地址:https://www.cnblogs.com/yanbenxin/p/5875949.html
Copyright © 2020-2023  润新知