zoukankan      html  css  js  c++  java
  • 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();

        }

    }

    这样就可以了

  • 相关阅读:
    async await 死锁简单分析
    如何在Linux上安装Git Server
    Winform业务层如何调用UI层的代码
    Git是怎么Ignore文件的?
    使用委托把方法写得更容易维护
    我们检测到您的浏览器不兼容传输层安全协议 (TLS) 1.1 或更高版本,此协议在 Internet 上用于确保您通信的安全性。
    【腾讯bugly干货】QQ空间直播秒开优化实践
    【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动
    【腾许Bugly干货分享】“HTTPS”安全在哪里?
    【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?
  • 原文地址:https://www.cnblogs.com/yanbenxin/p/5875949.html
Copyright © 2011-2022 走看看