public override void OnPointerDown(PointerEventData eventData) { // 鼠标右键点击脱下装备 if (eventData.button == PointerEventData.InputButton.Right) { if (transform.childCount > 0 && InventroyManager.Instance.IsPickedItem == false) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); ItemDetail item = currentItemUI.ItemDetail; DestroyImmediate(currentItemUI.gameObject); transform.parent.SendMessage("PutOff", item); InventroyManager.Instance.HideToolTip(); } } // 鼠标左键有点击则往下 if (eventData.button != PointerEventData.InputButton.Left) { return; } // 鼠标上有物品 if (InventroyManager.Instance.IsPickedItem == true) { ItemUI pickedItemUI = InventroyManager.Instance.PickedItem; // 装备槽有装备 if (transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); if (IsRightItem(pickedItemUI.ItemDetail) && pickedItemUI.Amount == 1) { transform.parent.SendMessage("Equip", (Equipment)pickedItemUI.ItemDetail); transform.parent.SendMessage("Remove", (Equipment)currentItemUI.ItemDetail); pickedItemUI.Exchange(currentItemUI); } } // 装备槽无装备 else { if (IsRightItem(pickedItemUI.ItemDetail)) { this.StoreItem(pickedItemUI.ItemDetail); InventroyManager.Instance.ReduceAmountItem(1); transform.parent.SendMessage("Equip", (Equipment)pickedItemUI.ItemDetail); } } } // 鼠标上没有物品 else { // 装备槽有物品,则鼠标拾取物品 if (transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); transform.parent.SendMessage("Remove", (Equipment)currentItemUI.ItemDetail); InventroyManager.Instance.PickUpItem(currentItemUI.ItemDetail, currentItemUI.Amount); Destroy(currentItemUI.gameObject); } } }
public override void OnPointerDown(PointerEventData eventData) { if (eventData.button == PointerEventData.InputButton.Right) { if (InventoryManager.Instance.IsPickedItem == false && transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); Item itemTemp = currentItemUI.Item; DestroyImmediate(currentItemUI.gameObject); transform.parent.parent.SendMessage("PutOff", itemTemp); InventoryManager.Instance.HideToolTip(); } } if (eventData.button != PointerEventData.InputButton.Left) { return; } bool isUpdateProperty = false; if (InventoryManager.Instance.IsPickedItem == true) { ItemUI pickedItem = InventoryManager.Instance.PickedItem; if (transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); if (IsRightItem(pickedItem.Item)) { pickedItem.Exchange(currentItemUI); isUpdateProperty = true; } } else { if (IsRightItem(pickedItem.Item)) { this.StoreItem(pickedItem.Item); InventoryManager.Instance.RemoveItem(1); isUpdateProperty = true; } } } else { if (transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); InventoryManager.Instance.PickupItem(currentItemUI.Item, currentItemUI.Amount); DestroyImmediate(currentItemUI.gameObject); isUpdateProperty = true; } } if (isUpdateProperty) { transform.parent.parent.SendMessage("UpdatePropertyText"); } }
//捡起UI public void OnPointerDown(PointerEventData eventData) { if (UIKnapscakPanel.isPick) { //正在拖拽 ItemUI PickUI = UIKnapscakPanel.pickUI; PickUI.Exchange(itemUI); UIKnapscakPanel.isPick = false; UIKnapscakPanel.pickUI = null; } else { if (null != itemUI.Item) { UIKnapscakPanel.isPick = true; UIKnapscakPanel.pickUI = itemUI; } } }
public Weapon.WeaponType wpType; //武器类型,只有副手和主手能有武器,其他为Null public override void OnPointerDown(UnityEngine.EventSystems.PointerEventData eventData) //重写父类Slot的方法 { if (eventData.button == PointerEventData.InputButton.Right) //鼠标右键点击直接实现脱掉,不经过拖拽 { if (transform.childCount > 0 && InventroyManager.Instance.IsPickedItem == false) //需要脱掉的物品得有,并且鼠标上要没有物品,否则就发生:当鼠标上有物品,在其他物品上点击鼠标右键也能脱掉这种情况。 { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); Item item = currentItemUI.Item; //临时保存物品信息,防止下面一销毁就没了 DestroyImmediate(currentItemUI.gameObject); //立即销毁物品槽中的物品 transform.parent.SendMessage("PutOff", item); //脱掉物品放入背包里(发送消息方式) InventroyManager.Instance.HideToolTip(); //隐藏该物品的提示框 } } if (eventData.button != PointerEventData.InputButton.Left) { return; //只有鼠标左键能够点击物品拖动 } //情况分析: //一:鼠标上有物品 //1.当前装备槽有装备 //2.当前装备槽无装备 //二:鼠标上没有物品 //1.当前装备槽有装备 //2.当前装备槽无装备(不做任何处理) bool isUpdataProperty = false; //是否需要更新角色属性 if (InventroyManager.Instance.IsPickedItem == true) //一:鼠标上有物品 { ItemUI pickedItemUI = InventroyManager.Instance.PickedItem; //鼠标上的物品 if (transform.childCount > 0) //1.当前装备槽有装备 { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); //当前物品槽中的物品 if (IsRightItem(pickedItemUI.Item) && pickedItemUI.Amount == 1) //如果鼠标上的物品是否适合放在该位置并且鼠标上的物品只有一个时,那就交换,否则不做处理 { pickedItemUI.Exchange(currentItemUI); isUpdataProperty = true;//需要更新角色属性 } } else//2.当前装备槽无装备 { if (IsRightItem(pickedItemUI.Item))//如果鼠标上的物品是否适合放在该位置,那就把该物品放入角色面板,并且鼠标上的物品减少一个,否则不做处理 { this.StoreItem(pickedItemUI.Item); InventroyManager.Instance.ReduceAmountItem(1); isUpdataProperty = true;//需要更新角色属性 } } } else//二:鼠标上没有物品 { if (transform.childCount > 0) //1.当前装备槽有装备,把装备去到鼠标上,销毁物品槽中的物品 { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); InventroyManager.Instance.PickUpItem(currentItemUI.Item, currentItemUI.Amount); Destroy(currentItemUI.gameObject); isUpdataProperty = true;//需要更新角色属性 } //2.当前装备槽无装备(不做任何处理) } if (isUpdataProperty == true) { transform.parent.SendMessage("UpdatePropertyText"); } }
public virtual void OnPointerDown(PointerEventData eventData) { Debug.Log(eventData.button + ":OnPointerDown"); if (eventData.button == PointerEventData.InputButton.Right) { if (InventoryManager.Instance.IsPickedItem == false && transform.childCount > 0) { ItemUI currentItemUI = transform.GetChild(0).GetComponent <ItemUI>(); if (currentItemUI.Item is Equipment || currentItemUI.Item is Weapon) { currentItemUI.ReduceAmount(); if (currentItemUI.Amount <= 0) { DestroyImmediate(currentItemUI.gameObject); } } } } // 自身是空 1,IsPickedItem ==true pickedItem放在这个位置 // 按下ctrl 放置当前鼠标上的物品的一个 // 没有按下ctrl 放置当前鼠标上的物品的所有 //2,IsPickedItem==false 不做任何处理 // 自身不是空 //1,IsPickedItem==true //自身的id==pickedItem.id // 按下ctrl 放置当前鼠标上的物品的一个 // 没有按下ctrl 放置当前鼠标上的物品的所有 //可以完全放下 //只能放下其中一部分 //自身的id!=pickedItem.id pickedItem跟当前物品交换 //2,IsPickedItem==false //ctrl按下 取得当前物品槽中物品的一半 //ctrl没有按下 把当前物品槽里面的物品放到鼠标上 if (eventData.button != PointerEventData.InputButton.Left) { return; } if (transform.childCount > 0) // 卡槽里不为空 { Debug.Log(InventoryManager.Instance.IsPickedItem + "fwefw"); if (InventoryManager.Instance.IsPickedItem == false) // 没有选中物体 { if (Input.GetKey(KeyCode.LeftControl)) //选中一半物体 { int half = Mathf.CeilToInt(ItemUI.Amount / 2); InventoryManager.Instance.PickupItem(ItemUI.Item, half); ItemUI.ReduceAmount(half); } else //全选物体 { InventoryManager.Instance.PickupItem(ItemUI.Item, ItemUI.Amount); Destroy(ItemUI.gameObject); ItemUI = null; } } else // 当前有选中物体 { ItemUI pickedItem = InventoryManager.Instance.PickedItem; //1,IsPickedItem==true //自身的id==pickedItem.id // 按下ctrl 放置当前鼠标上的物品的一个 // 没有按下ctrl 放置当前鼠标上的物品的所有 //可以完全放下 //只能放下其中一部分 //自身的id!=pickedItem.id pickedItem跟当前物品交换 if (pickedItem.Item.ID != ItemUI.Item.ID) { pickedItem.Exchange(ItemUI); } } } else // 卡槽里为空 { Debug.Log("others ssss "); } }