上期工程完成了装备的穿戴功能,本期开始创建装备的卸下功能和属性加成功能。
需求:
右键点击装备栏上的装备图标,使其返回至背包中。
需求拆解:
鼠标移动至装备图标上,右键点击,销毁装备,在背包中生成该装备的镜像,完毕。
根据上述思路,这个功能实现起来比较简单:
①首先为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();
}
}
这样就可以了