public void PutOn(ItemUI item) { foreach (EquipmentSlot temp in slotList) { if (item.item is Equipment) {//当点击的物品是装备时, //目的槽上已经有物品了,此时执行交换 //如果槽上没有物品时,此时直接将选中物品放到槽上 if (temp.equipType == ((Equipment)(item.item)).equipType) { //判断物品的类型与槽的类型相同 if (temp.transform.childCount > 0) { //此时执行交换操作, if (item.amount == 1) { if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Weapon) { //判断槽上的物品是属于武器还是装备 ,是武器才可以交换,是装备不可以交换 UpgradeText(item); //更新交换的物品的显示信息 item.ExchangeItem(temp.transform.GetChild(0).GetComponent <ItemUI>()); } } else { //此时就说明背包槽上的物品多于一个,此时要判断当角色面板槽上的物品是属于什么类型 //属于装备类型,就不进行交换操作 //属于武器类型,就进行交换操作,交换时只需要先将背包上的物品数量减一,再将从角色面板传过来的武器放到背包上 if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Weapon) { UpgradeText(item); //更新交换的物品的显示信息 item.RemoveAmount(); //将背包上的数量减1 Knapsack.Instance.StoreItem(temp.transform.GetChild(0).GetComponent <ItemUI>().item); //调用背包上的创建新物品的方法,将角色面板上的物品放上去 temp.transform.GetChild(0).GetComponent <ItemUI>().SetItem(item.item, 1); //将背包上的选中的物品放到角色面板上 } } } else { //说明角色面板的槽上空的 //此时直接将物品放到槽上 UpgradeText(item); //更新交换的物品的显示信息 temp.StoreItem(item.item); //直接调用该槽上的创建物品的方法 item.RemoveAmount(); //减少自身的数量 if (item.amount <= 0) { Destroy(item.gameObject); InventoryManager.Instance.HideToolTip(); } } } } else {//当点击的物品是武器时, //目的槽上已经有物品了,此时执行交换 //如果槽上没有物品时,此时直接将选中物品放到槽上 if (temp.weaponType == ((Weapon)(item.item)).weaponType) { //判断物品的类型与槽的类型相同 if (temp.transform.childCount > 0) { //此时执行交换操作, if (item.amount == 1) { if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Equipment) { //判断槽上的物品是属于武器还是装备 ,是武器才可以交换,是装备不可以交换 UpgradeText(item); //更新交换的物品的显示信息 item.ExchangeItem(temp.transform.GetChild(0).GetComponent <ItemUI>()); } } else { //此时就说明背包槽上的物品多于一个,此时要判断当角色面板槽上的物品是属于什么类型 //属于装备类型,就不进行交换操作 //属于武器类型,就进行交换操作,交换时只需要先将背包上的物品数量减一,再将从角色面板传过来的武器放到背包上 if (temp.transform.GetChild(0).GetComponent <ItemUI>().item is Equipment) { UpgradeText(item); //更新交换的物品的显示信息 item.RemoveAmount(); //将背包上的数量减1 Knapsack.Instance.StoreItem(temp.transform.GetChild(0).GetComponent <ItemUI>().item); //调用背包上的创建新物品的方法,将角色面板上的物品放上去 temp.transform.GetChild(0).GetComponent <ItemUI>().SetItem(item.item, 1); //将背包上的选中的物品放到角色面板上 } } } else { //说明角色面板的槽上空的 //此时直接将物品放到槽上 UpgradeText(item); //更新交换的物品的显示信息 temp.StoreItem(item.item); //直接调用该槽上的创建物品的方法 item.RemoveAmount(); //减少自身的数量 if (item.amount <= 0) { Destroy(item.gameObject); InventoryManager.Instance.HideToolTip(); } } } } } }
public Weapon.WeaponType weaponType; //设置一个槽上可存储的武器类型 // Use this for initialization public override void OnPointerDown(PointerEventData eventData) { if (eventData.button == PointerEventData.InputButton.Right) { //如果点击了鼠标右键 则执行脱下操作 if (transform.childCount > 0 && InventoryManager.Instance.IspickedItem == false) { //大于0 说明物品槽上有物品 ItemUI currentItem = transform.GetChild(0).GetComponent <ItemUI>(); if (currentItem.item is Equipment || currentItem.item is Weapon) { transform.parent.parent.SendMessage("PutOff", currentItem);//给父类发送一个信息 InventoryManager.Instance.HideToolTip(); Destroy(currentItem.gameObject); CharacterPanel.Instance.UpgradeText();//更新交换的物品的显示信息 } } } if (eventData.button != PointerEventData.InputButton.Left) { return; } if (InventoryManager.Instance.IspickedItem == true) {//鼠标上有物品的情况 ItemUI currentPickedItem = InventoryManager.Instance.PickedItem; if (transform.childCount > 0) { //槽上有物品时 if (currentPickedItem.item is Equipment) { //判断鼠标上的物品是否是属于装备类型的 if (((Equipment)(currentPickedItem.item)).equipType == equipType) { //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同 if (currentPickedItem.amount == 1) { //我要求他只能在鼠标上的物品只有一个时才允许被交换,若果多于一个那么就不允许交换 CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息 currentPickedItem.ExchangeItem(transform.GetChild(0).GetComponent <ItemUI>()); } } } else { if (currentPickedItem.item is Weapon) { //判断鼠标上的物品是否是武器类型 if (((Weapon)(currentPickedItem.item)).weaponType == weaponType) { //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同 if (currentPickedItem.amount == 1) { CharacterPanel.Instance.UpgradeText(currentPickedItem);//更新交换的物品的显示信息 currentPickedItem.ExchangeItem(transform.GetChild(0).GetComponent <ItemUI>()); } } } } } else { //选中槽上没有物品时,直接把鼠标上的物品放到槽上即可 if (currentPickedItem.item is Equipment) { //判断鼠标上的物品是否是属于装备类型的 if (((Equipment)(currentPickedItem.item)).equipType == equipType) { //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同 this.StoreItem(currentPickedItem.item); currentPickedItem.RemoveAmount(); //减少一个物品 CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息 if (currentPickedItem.amount <= 0) { InventoryManager.Instance.HidePicked(); InventoryManager.Instance.IspickedItem = false; } } } else { if (currentPickedItem.item is Weapon) { //判断鼠标上的物品是否是武器类型 if (((Weapon)(currentPickedItem.item)).weaponType == weaponType) { //鼠标上的物品若属于装备类型,那么将其强制类型转换为装备类型,并判断,其装备的物品类型是否属于跟该物品槽相同 this.StoreItem(currentPickedItem.item); currentPickedItem.RemoveAmount(); //减少一个物品 CharacterPanel.Instance.UpgradeText(currentPickedItem); //更新交换的物品的显示信息 if (currentPickedItem.amount <= 0) { InventoryManager.Instance.HidePicked(); InventoryManager.Instance.IspickedItem = false; } } } } } } else { if (transform.childCount > 0) { InventoryManager.Instance.SetPickedItem(transform.GetChild(0).GetComponent <ItemUI>().item, transform.GetChild(0).GetComponent <ItemUI>().amount); CharacterPanel.Instance.UpgradeText();//更新交换的物品的显示信息 Destroy(transform.GetChild(0).gameObject); } } }