Unity - A计划(一年有效期) 扫二维码继续学习 二维码时效为半小时

(61评价)
价格: 2208.00元
背包系统问题 物品交换功能 鼠标上有东西 它不能放放他格子里面去 如果 把鼠标上的东西 在不是Game里面在其他地方鼠标按一下 那个鼠标东西就没了 实际上鼠标那个东西还是存在 现在在往格子里面放的话就可以放进去了,,,,,,如果鼠标上有物品反复点击格子有可能可以放下去 用的是IptionDownHandle 这个接口
qq747831151发起了问答2018-01-23
9
回复
653
浏览
public void OnPointerDown(PointerEventData eventData)
    {
        if (eventData.button != PointerEventData.InputButton.Left) return;
        print(j++);
        //自身为空
        //1,IsPickItem=true   把pickItem放到当前位置
        //按下Ctrl 放置当前鼠标上的物品的一个
        //没有ctrl 放置当前鼠标上的物品的所有
        //2,IsPickItem=false    不做任何处理

        //自身不为空 
        //1,IsPickItem=true   pickItem跟当前的物品交换
        //自身ID==pickItem.id  
        //按下Ctrl 放置当前鼠标上的物品的一个
        //没有ctrl 放置当前鼠标上的物品的所有
        //可以完全放下
        //放下其中的一部分
        //自身ID!=pickItem.id   pickItem跟当前的物品交换

        //2,IsPickItem=false  把当前的物品槽的物品放在鼠标上
        //按下Ctrl 取得当前物品槽物品的一半
        //没有按下Ctrl 把当前的物品槽的物品放在鼠标上

        // 自身不为空
        if (transform.childCount > 0)
        {
            Item currentUI = transform.GetChild(0).GetComponent<Item>();
            //2,IsPickItem=false 把当前物品槽的物品放到鼠标上
            if (Objectsinfo.Instance.IsPickItem == false)//当前没有选中物品(当前手上没有物品)当前鼠标没有任何物品
            {
                //按下Ctrl 取得当前物品槽物品的一半
                if (Input.GetKey(KeyCode.LeftControl))
                {
                    int AmountPick = (currentUI.Count + 1) / 2;//捡起的个数
                    Objectsinfo.Instance.PickItemUI(currentUI, AmountPick);
                    int Residue = currentUI.Count - AmountPick; //剩余个数
                    if (Residue <= 0)
                    {
                        Destroy(currentUI.gameObject);//销毁当前物品槽里面的物品
                    }
                    else
                    {
                        currentUI.SetAmount(Residue);//更新物品槽里面的物品个数
                    }
                }
                //没有按下Ctrl 把当前的物品槽的物品放在鼠标上
                else
                {
                    Objectsinfo.Instance.PickItem.SetIconName(currentUI.id,currentUI.Count);//把当前物品槽的信息  复制给pickItem(跟随鼠标移动)
                    Objectsinfo.Instance.IsPickItem = true;
                    Objectsinfo.Instance.PickItem.Show();
                    Destroy(currentUI.gameObject);//销毁当前物品槽里面的物品
                }
            }
            //1,IsPickItem = true   pickItem跟当前的物品交换
            else
            {

                //自身ID==pickItem.id  
                if (currentUI.id == Objectsinfo.Instance.PickItem.id)
                {

                    //按下Ctrl 放置当前鼠标上的物品的一个
                    if (Input.GetKey(KeyCode.LeftControl))
                    {

                        if (currentUI.info.capacity > currentUI.Count)//当前物品槽还有容量
                        {

                            currentUI.AddAmount();
                            Objectsinfo.Instance.RemoveItem();
                        }
                        else
                        {
                            return;
                        }
                    }
                    //没有ctrl 放置当前鼠标上的物品的所有
                    else
                    {
                        if (currentUI.info.capacity > currentUI.Count)//当前物品槽还有容量
                        {
                            int amountRemain = currentUI.info.capacity - currentUI.Count;//当前物品槽剩余空间                                              
                            if (amountRemain >= Objectsinfo.Instance.PickItem.Count)//完全可以放下
                            {
                                currentUI.SetAmount(currentUI.Count + Objectsinfo.Instance.PickItem.Count);
                                Objectsinfo.Instance.RemoveItem(Objectsinfo.Instance.PickItem.Count);

                            }
                            //放下其中的一部分
                            else
                            {
                                currentUI.SetAmount(currentUI.Count + amountRemain);
                                Objectsinfo.Instance.RemoveItem(amountRemain);
                            }
                        }
                        else
                        {
                            return;
                        }
                    }

                }
                //自身的ID跟pickItem上的ID不同
                else
                {
                    int id = currentUI.id;
                    int amount = currentUI.Count;
                    currentUI.SetIconName(Objectsinfo.Instance.PickItem.id, Objectsinfo.Instance.PickItem.Count);
                    Objectsinfo.Instance.PickItem.SetIconName(id, amount);
                }
            }
        }
        //自身为空   1,IsPickItem=true   把pickItem放到当前位置
                         //按下Ctrl 放置当前鼠标上的物品的一个
                         //没有ctrl 放置当前鼠标上的物品的所有
        //2,IsPickItem=false    不做任何处理
        else
        {
            //1,IsPickItem=true 
            if (Objectsinfo.Instance.PickItem == true)
            {
                //按下Ctrl 放置当前鼠标上的物品的一个
                if (Input.GetKey(KeyCode.LeftControl))
                {
                    this.StroeItem(Objectsinfo.Instance.PickItem.info, 1);
                    Objectsinfo.Instance.RemoveItem();
                  

                }
                //没有ctrl 放置当前鼠标上的物品的所有
                else
                {
                    for (int i = 0; i < Objectsinfo.Instance.PickItem.Count; i++)
                    {
                        this.StroeItem(Objectsinfo.Instance.PickItem.info);
                    }
                    Objectsinfo.Instance.RemoveItem(Objectsinfo.Instance.PickItem.Count);
                    Objectsinfo.Instance.PickItem.Hide();
                   
                }
            }
            else
            {
                return;
            }
        }

    }
  •  
所有回复
发表回复
你还没有登录,请先 登录或 注册!