swapItemRequest() public method

public swapItemRequest ( Int32 srcIndex, Int32 dstIndex ) : void
srcIndex System.Int32
dstIndex System.Int32
return void
示例#1
0
    public void OnEndDrag(PointerEventData data)
    {
        if (data.button == PointerEventData.InputButton.Left)
        {
            canvasGroup.blocksRaycasts = true;
            Transform newSlot = null;
            if (data.pointerEnter != null)
            {
                newSlot = data.pointerEnter.transform;
            }

            if (newSlot != null && newSlot.tag != "Untagged")
            {
                //getting the items from the slots, GameObjects and RectTransform
                UnityEngine.GameObject firstItemGameObject     = this.gameObject;
                UnityEngine.GameObject secondItemGameObject    = newSlot.parent.gameObject;
                RectTransform          firstItemRectTransform  = this.gameObject.GetComponent <RectTransform>();
                RectTransform          secondItemRectTransform = newSlot.parent.GetComponent <RectTransform>();
                Item firstItem  = rectTransform.GetComponent <ItemOnObject>().item;
                Item secondItem = new Item();
                if (newSlot.parent.GetComponent <ItemOnObject>() != null)
                {
                    secondItem = newSlot.parent.GetComponent <ItemOnObject>().item;
                }

                //get some informations about the two items
                bool sameItem            = firstItem.itemName == secondItem.itemName;
                bool sameItemRerferenced = firstItem.Equals(secondItem);
                bool secondItemStack     = false;
                bool firstItemStack      = false;
                if (sameItem)
                {
                    firstItemStack  = firstItem.itemValue < firstItem.maxStack;
                    secondItemStack = secondItem.itemValue < secondItem.maxStack;
                }
                if (secondItemRectTransform.parent == null)//
                {
                    //跳回去
                    this.gameObject.transform.SetParent(oldSlot.transform);
                    this.gameObject.GetComponent <RectTransform>().localPosition = Vector3.zero;
                    return;
                }
                UnityEngine.GameObject Inventory = secondItemRectTransform.parent.gameObject;
                if (Inventory.tag == "Slot")
                {
                    Inventory = secondItemRectTransform.parent.parent.parent.gameObject;
                }

                if (Inventory.tag.Equals("Slot"))
                {
                    Inventory = Inventory.transform.parent.parent.gameObject;
                }

                //dragging in an Inventory
                if (Inventory.GetComponent <Hotbar>() == null && Inventory.GetComponent <EquipmentSystem>() == null && Inventory.GetComponent <CraftSystem>() == null)
                {
                    //you cannot attach items to the resultslot of the craftsystem
                    if (newSlot.transform.parent.tag == "ResultSlot" || newSlot.transform.tag == "ResultSlot" || newSlot.transform.parent.parent.tag == "ResultSlot")
                    {
                        firstItemGameObject.transform.SetParent(oldSlot.transform);
                        firstItemRectTransform.localPosition = Vector3.zero;
                    }
                    else
                    {
                        int  newSlotChildCount = newSlot.transform.parent.childCount;
                        bool isOnSlot          = newSlot.transform.parent.GetChild(0).tag == "ItemIcon";
                        //dragging on a slot where allready is an item on
                        if (newSlotChildCount != 0 && isOnSlot)
                        {
                            //check if the items fits into the other item
                            bool fitsIntoStack = false;
                            if (sameItem)
                            {
                                fitsIntoStack = (firstItem.itemValue + secondItem.itemValue) <= firstItem.maxStack;
                            }
                            //if the item is stackable checking if the firstitemstack and seconditemstack is not full and check if they are the same items

                            if (inventory.stackable && sameItem && firstItemStack && secondItemStack)
                            {
                                //if the item does not fit into the other item
                                if (fitsIntoStack && !sameItemRerferenced)
                                {
                                    secondItem.itemValue = firstItem.itemValue + secondItem.itemValue;
                                    secondItemGameObject.transform.SetParent(newSlot.parent.parent);
                                    Destroy(firstItemGameObject);
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                    if (secondItemGameObject.GetComponent <ConsumeItem>().duplication != null)
                                    {
                                        UnityEngine.GameObject dup = secondItemGameObject.GetComponent <ConsumeItem>().duplication;
                                        dup.GetComponent <ItemOnObject>().item.itemValue = secondItem.itemValue;
                                        dup.GetComponent <SplitItem>().inv.stackableSettings();
                                        dup.transform.parent.parent.parent.GetComponent <Inventory>().updateItemList();
                                    }
                                }

                                else
                                {
                                    //creates the rest of the item
                                    int rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;

                                    //fill up the other stack and adds the rest to the other stack
                                    if (!fitsIntoStack && rest > 0)
                                    {
                                        firstItem.itemValue  = firstItem.maxStack;
                                        secondItem.itemValue = rest;

                                        firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                        secondItemGameObject.transform.SetParent(oldSlot.transform);

                                        firstItemRectTransform.localPosition  = Vector3.zero;
                                        secondItemRectTransform.localPosition = Vector3.zero;
                                    }
                                }
                            }
                            //if does not fit
                            else
                            {
                                //creates the rest of the item
                                int rest = 0;
                                if (sameItem)
                                {
                                    rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;
                                }

                                //fill up the other stack and adds the rest to the other stack
                                if (!fitsIntoStack && rest > 0)
                                {
                                    secondItem.itemValue = firstItem.maxStack;
                                    firstItem.itemValue  = rest;

                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);

                                    firstItemRectTransform.localPosition  = Vector3.zero;
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                }
                                //if they are different items or the stack is full, they get swapped
                                else if (!fitsIntoStack && rest == 0)
                                {
                                    //if you are dragging an item from equipmentsystem to the inventory and try to swap it with the same itemtype
                                    if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null && firstItem.itemType == secondItem.itemType)
                                    {
                                        Int32           srcIndex = Int32.Parse(oldSlot.name) - 1;
                                        Int32           dstIndex = Int32.Parse(secondItemGameObject.transform.parent.name) - 1;
                                        KBEngine.Avatar p        = (KBEngine.Avatar)KBEngineApp.app.player();
                                        if (p != null)
                                        {
                                            p.equipItemRequest(dstIndex, srcIndex);//交换装备
                                        }

                                        newSlot.transform.parent.parent.parent.parent.GetComponent <Inventory>().UnEquipItem1(firstItem);
                                        oldSlot.transform.parent.parent.GetComponent <Inventory>().EquiptItem(secondItem);

                                        firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                        secondItemGameObject.transform.SetParent(oldSlot.transform);
                                        secondItemRectTransform.localPosition = Vector3.zero;
                                        firstItemRectTransform.localPosition  = Vector3.zero;

                                        if (secondItemGameObject.GetComponent <ConsumeItem>().duplication != null)
                                        {
                                            Destroy(secondItemGameObject.GetComponent <ConsumeItem>().duplication);
                                        }
                                    }
                                    //if you are dragging an item from the equipmentsystem to the inventory and they are not from the same itemtype they do not get swapped.
                                    else if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null && firstItem.itemType != secondItem.itemType)
                                    {
                                        firstItemGameObject.transform.SetParent(oldSlot.transform);
                                        firstItemRectTransform.localPosition = Vector3.zero;
                                    }
                                    //swapping for the rest of the inventorys
                                    else if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null)
                                    {
                                        Int32 srcIndex = Int32.Parse(oldSlot.name) - 1;
                                        Int32 dstIndex = Int32.Parse(secondItemGameObject.transform.parent.name) - 1;

                                        firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                        secondItemGameObject.transform.SetParent(oldSlot.transform);
                                        secondItemRectTransform.localPosition = Vector3.zero;
                                        firstItemRectTransform.localPosition  = Vector3.zero;

                                        KBEngine.Avatar p = (KBEngine.Avatar)KBEngineApp.app.player();
                                        if (p != null)
                                        {
                                            p.swapItemRequest(srcIndex, dstIndex);
                                        }
                                    }
                                }
                            }
                        }

                        //empty slot
                        else
                        {
                            if (newSlot.tag != "Slot" && newSlot.tag != "ItemIcon")
                            {
                                firstItemGameObject.transform.SetParent(oldSlot.transform);
                                firstItemRectTransform.localPosition = Vector3.zero;
                            }
                            else
                            {
                                firstItemGameObject.transform.SetParent(newSlot.transform);
                                firstItemRectTransform.localPosition = Vector3.zero;

                                Int32 srcIndex = Int32.Parse(oldSlot.name) - 1;
                                Int32 dstIndex = Int32.Parse(newSlot.name) - 1;

                                KBEngine.Avatar p = (KBEngine.Avatar)KBEngineApp.app.player();
                                if (p != null)
                                {
                                    if (newSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null && oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null)
                                    {
                                        p.equipItemRequest(dstIndex, srcIndex);//卸下装备
                                    }
                                    else
                                    {
                                        p.swapItemRequest(srcIndex, dstIndex);//交换物品
                                    }
                                }

                                if (newSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null && oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null)
                                {
                                    oldSlot.transform.parent.parent.GetComponent <Inventory>().UnEquipItem1(firstItem);
                                }
                            }
                        }
                    }
                }



                //dragging into a Hotbar
                if (Inventory.GetComponent <Hotbar>() != null)
                {
                    int  newSlotChildCount = newSlot.transform.parent.childCount;
                    bool isOnSlot          = newSlot.transform.parent.GetChild(0).tag == "ItemIcon";
                    //dragging on a slot where allready is an item on
                    if (newSlotChildCount != 0 && isOnSlot)
                    {
                        //check if the items fits into the other item
                        bool fitsIntoStack = false;
                        if (sameItem)
                        {
                            fitsIntoStack = (firstItem.itemValue + secondItem.itemValue) <= firstItem.maxStack;
                        }
                        //if the item is stackable checking if the firstitemstack and seconditemstack is not full and check if they are the same items

                        if (inventory.stackable && sameItem && firstItemStack && secondItemStack)
                        {
                            //if the item does not fit into the other item
                            if (fitsIntoStack && !sameItemRerferenced)
                            {
                                secondItem.itemValue = firstItem.itemValue + secondItem.itemValue;
                                secondItemGameObject.transform.SetParent(newSlot.parent.parent);
                                Destroy(firstItemGameObject);
                                secondItemRectTransform.localPosition = Vector3.zero;
                                if (secondItemGameObject.GetComponent <ConsumeItem>().duplication != null)
                                {
                                    UnityEngine.GameObject dup = secondItemGameObject.GetComponent <ConsumeItem>().duplication;
                                    dup.GetComponent <ItemOnObject>().item.itemValue = secondItem.itemValue;
                                    Inventory.GetComponent <Inventory>().stackableSettings();
                                    dup.transform.parent.parent.parent.GetComponent <Inventory>().updateItemList();
                                }
                            }

                            else
                            {
                                //creates the rest of the item
                                int rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;

                                //fill up the other stack and adds the rest to the other stack
                                if (!fitsIntoStack && rest > 0)
                                {
                                    firstItem.itemValue  = firstItem.maxStack;
                                    secondItem.itemValue = rest;

                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);

                                    firstItemRectTransform.localPosition  = Vector3.zero;
                                    secondItemRectTransform.localPosition = Vector3.zero;

                                    createDuplication(this.gameObject);
                                    secondItemGameObject.GetComponent <ConsumeItem>().duplication.GetComponent <ItemOnObject>().item = secondItem;
                                    secondItemGameObject.GetComponent <SplitItem>().inv.stackableSettings();
                                }
                            }
                        }
                        //if does not fit
                        else
                        {
                            //creates the rest of the item
                            int rest = 0;
                            if (sameItem)
                            {
                                rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;
                            }

                            bool fromEquip = oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null;

                            //fill up the other stack and adds the rest to the other stack
                            if (!fitsIntoStack && rest > 0)
                            {
                                secondItem.itemValue = firstItem.maxStack;
                                firstItem.itemValue  = rest;

                                createDuplication(this.gameObject);

                                firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                secondItemGameObject.transform.SetParent(oldSlot.transform);

                                firstItemRectTransform.localPosition  = Vector3.zero;
                                secondItemRectTransform.localPosition = Vector3.zero;
                            }
                            //if they are different items or the stack is full, they get swapped
                            else if (!fitsIntoStack && rest == 0)
                            {
                                if (!fromEquip)
                                {
                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                    firstItemRectTransform.localPosition  = Vector3.zero;

                                    if (oldSlot.transform.parent.parent.gameObject.Equals(UnityEngine.GameObject.FindGameObjectWithTag("MainInventory")))
                                    {
                                        Destroy(secondItemGameObject.GetComponent <ConsumeItem>().duplication);
                                        createDuplication(firstItemGameObject);
                                    }
                                    else
                                    {
                                        createDuplication(firstItemGameObject);
                                    }
                                }
                                else
                                {
                                    firstItemGameObject.transform.SetParent(oldSlot.transform);
                                    firstItemRectTransform.localPosition = Vector3.zero;
                                }
                            }
                        }
                    }
                    //empty slot
                    else
                    {
                        if (newSlot.tag != "Slot" && newSlot.tag != "ItemIcon")
                        {
                            firstItemGameObject.transform.SetParent(oldSlot.transform);
                            firstItemRectTransform.localPosition = Vector3.zero;
                        }
                        else
                        {
                            firstItemGameObject.transform.SetParent(newSlot.transform);
                            firstItemRectTransform.localPosition = Vector3.zero;

                            if (newSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null && oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null)
                            {
                                oldSlot.transform.parent.parent.GetComponent <Inventory>().UnEquipItem1(firstItem);
                            }
                            createDuplication(firstItemGameObject);
                        }
                    }
                }


                //dragging into a equipmentsystem/charactersystem
                if (Inventory.GetComponent <EquipmentSystem>() != null)
                {
                    ItemType[] itemTypeOfSlots   = UnityEngine.GameObject.FindGameObjectWithTag("EquipmentSystem").GetComponent <EquipmentSystem>().itemTypeOfSlots;
                    int        newSlotChildCount = newSlot.transform.parent.childCount;
                    bool       isOnSlot          = newSlot.transform.parent.GetChild(0).tag == "ItemIcon";
                    bool       sameItemType      = firstItem.itemType == secondItem.itemType;
                    bool       fromHot           = oldSlot.transform.parent.parent.GetComponent <Hotbar>() != null;

                    //dragging on a slot where allready is an item on
                    if (newSlotChildCount != 0 && isOnSlot)
                    {
                        //items getting swapped if they are the same itemtype
                        if (sameItemType && !sameItemRerferenced) //
                        {
                            Int32 srcIndex = Int32.Parse(oldSlot.name) - 1;
                            Int32 dstIndex = Int32.Parse(secondItemGameObject.transform.parent.name) - 1;

                            Transform temp1 = secondItemGameObject.transform.parent.parent.parent;
                            Transform temp2 = oldSlot.transform.parent.parent;

                            firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                            secondItemGameObject.transform.SetParent(oldSlot.transform);
                            secondItemRectTransform.localPosition = Vector3.zero;
                            firstItemRectTransform.localPosition  = Vector3.zero;

                            if (!temp1.Equals(temp2))
                            {
                                if (firstItem.itemType == ItemType.UFPS_Weapon)
                                {
                                    Inventory.GetComponent <Inventory>().UnEquipItem1(secondItem);
                                    Inventory.GetComponent <Inventory>().EquiptItem(firstItem);
                                }
                                else
                                {
                                    Inventory.GetComponent <Inventory>().EquiptItem(firstItem);
                                    if (secondItem.itemType != ItemType.Backpack)
                                    {
                                        Inventory.GetComponent <Inventory>().UnEquipItem1(secondItem);
                                    }
                                }
                            }

                            if (fromHot)
                            {
                                createDuplication(secondItemGameObject);
                            }

                            //替换装备
                            KBEngine.Avatar p = (KBEngine.Avatar)KBEngineApp.app.player();
                            if (p != null)
                            {
                                p.equipItemRequest(srcIndex, dstIndex);//替换装备
                            }
                        }
                        //if they are not from the same Itemtype the dragged one getting placed back
                        else
                        {
                            firstItemGameObject.transform.SetParent(oldSlot.transform);
                            firstItemRectTransform.localPosition = Vector3.zero;

                            if (fromHot)
                            {
                                createDuplication(firstItemGameObject);
                            }
                        }
                    }
                    //if the slot is empty
                    else
                    {
                        for (int i = 0; i < newSlot.parent.childCount; i++)
                        {
                            if (newSlot.Equals(newSlot.parent.GetChild(i)))
                            {
                                //checking if it is the right slot for the item
                                if (itemTypeOfSlots[i] == transform.GetComponent <ItemOnObject>().item.itemType)
                                {
                                    transform.SetParent(newSlot);
                                    rectTransform.localPosition = Vector3.zero;

                                    if (!oldSlot.transform.parent.parent.Equals(newSlot.transform.parent.parent))
                                    {
                                        Inventory.GetComponent <Inventory>().EquiptItem(firstItem);
                                    }

                                    KBEngine.Avatar p = (KBEngine.Avatar)KBEngineApp.app.player();
                                    if (p != null)
                                    {
                                        Int32 srcIndex = Int32.Parse(oldSlot.name) - 1;
                                        Int32 dstIndex = Int32.Parse(newSlot.name) - 1;
                                        p.equipItemRequest(srcIndex, dstIndex);  //带上装备
                                    }
                                }
                                //else it get back to the old slot
                                else
                                {
                                    transform.SetParent(oldSlot.transform);
                                    rectTransform.localPosition = Vector3.zero;
                                    if (fromHot)
                                    {
                                        createDuplication(firstItemGameObject);
                                    }
                                }
                            }
                        }
                    }
                }

                if (Inventory.GetComponent <CraftSystem>() != null)
                {
                    CraftSystem cS = Inventory.GetComponent <CraftSystem>();
                    int         newSlotChildCount = newSlot.transform.parent.childCount;


                    bool isOnSlot = newSlot.transform.parent.GetChild(0).tag == "ItemIcon";
                    //dragging on a slot where allready is an item on
                    if (newSlotChildCount != 0 && isOnSlot)
                    {
                        //check if the items fits into the other item
                        bool fitsIntoStack = false;
                        if (sameItem)
                        {
                            fitsIntoStack = (firstItem.itemValue + secondItem.itemValue) <= firstItem.maxStack;
                        }
                        //if the item is stackable checking if the firstitemstack and seconditemstack is not full and check if they are the same items

                        if (inventory.stackable && sameItem && firstItemStack && secondItemStack)
                        {
                            //if the item does not fit into the other item
                            if (fitsIntoStack && !sameItemRerferenced)
                            {
                                secondItem.itemValue = firstItem.itemValue + secondItem.itemValue;
                                secondItemGameObject.transform.SetParent(newSlot.parent.parent);
                                Destroy(firstItemGameObject);
                                secondItemRectTransform.localPosition = Vector3.zero;


                                if (secondItemGameObject.GetComponent <ConsumeItem>().duplication != null)
                                {
                                    UnityEngine.GameObject dup = secondItemGameObject.GetComponent <ConsumeItem>().duplication;
                                    dup.GetComponent <ItemOnObject>().item.itemValue = secondItem.itemValue;
                                    dup.GetComponent <SplitItem>().inv.stackableSettings();
                                    dup.transform.parent.parent.parent.GetComponent <Inventory>().updateItemList();
                                }
                                cS.ListWithItem();
                            }

                            else
                            {
                                //creates the rest of the item
                                int rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;

                                //fill up the other stack and adds the rest to the other stack
                                if (!fitsIntoStack && rest > 0)
                                {
                                    firstItem.itemValue  = firstItem.maxStack;
                                    secondItem.itemValue = rest;

                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);

                                    firstItemRectTransform.localPosition  = Vector3.zero;
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                    cS.ListWithItem();
                                }
                            }
                        }
                        //if does not fit
                        else
                        {
                            //creates the rest of the item
                            int rest = 0;
                            if (sameItem)
                            {
                                rest = (firstItem.itemValue + secondItem.itemValue) % firstItem.maxStack;
                            }

                            //fill up the other stack and adds the rest to the other stack
                            if (!fitsIntoStack && rest > 0)
                            {
                                secondItem.itemValue = firstItem.maxStack;
                                firstItem.itemValue  = rest;

                                firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                secondItemGameObject.transform.SetParent(oldSlot.transform);

                                firstItemRectTransform.localPosition  = Vector3.zero;
                                secondItemRectTransform.localPosition = Vector3.zero;
                                cS.ListWithItem();
                            }
                            //if they are different items or the stack is full, they get swapped
                            else if (!fitsIntoStack && rest == 0)
                            {
                                //if you are dragging an item from equipmentsystem to the inventory and try to swap it with the same itemtype
                                if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null && firstItem.itemType == secondItem.itemType)
                                {
                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                    firstItemRectTransform.localPosition  = Vector3.zero;

                                    oldSlot.transform.parent.parent.GetComponent <Inventory>().EquiptItem(secondItem);
                                    newSlot.transform.parent.parent.parent.parent.GetComponent <Inventory>().UnEquipItem1(firstItem);
                                }
                                //if you are dragging an item from the equipmentsystem to the inventory and they are not from the same itemtype they do not get swapped.
                                else if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null && firstItem.itemType != secondItem.itemType)
                                {
                                    firstItemGameObject.transform.SetParent(oldSlot.transform);
                                    firstItemRectTransform.localPosition = Vector3.zero;
                                }
                                //swapping for the rest of the inventorys
                                else if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null)
                                {
                                    firstItemGameObject.transform.SetParent(secondItemGameObject.transform.parent);
                                    secondItemGameObject.transform.SetParent(oldSlot.transform);
                                    secondItemRectTransform.localPosition = Vector3.zero;
                                    firstItemRectTransform.localPosition  = Vector3.zero;
                                }
                            }
                        }
                    }
                    else
                    {
                        if (newSlot.tag != "Slot" && newSlot.tag != "ItemIcon")
                        {
                            firstItemGameObject.transform.SetParent(oldSlot.transform);
                            firstItemRectTransform.localPosition = Vector3.zero;
                        }
                        else
                        {
                            firstItemGameObject.transform.SetParent(newSlot.transform);
                            firstItemRectTransform.localPosition = Vector3.zero;

                            if (newSlot.transform.parent.parent.GetComponent <EquipmentSystem>() == null && oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null)
                            {
                                oldSlot.transform.parent.parent.GetComponent <Inventory>().UnEquipItem1(firstItem);
                            }
                        }
                    }
                }
            }

            else
            {
                if (oldSlot.transform.parent.parent.GetComponent <EquipmentSystem>() != null)//如果是装备栏的要销毁物品,拒绝,弹回去
                {
                    this.gameObject.transform.SetParent(oldSlot.transform);
                    this.gameObject.GetComponent <RectTransform>().localPosition = Vector3.zero;
                    return;
                }
                KBEngine.Avatar p = (KBEngine.Avatar)KBEngineApp.app.player();
                if (p != null)
                {
                    p.dropRequest(this.gameObject.GetComponent <ItemOnObject>().item.itemUUID);
                    Destroy(this.gameObject);
                }
                //GameObject dropItem = (GameObject)Instantiate(GetComponent<ItemOnObject>().item.itemModel);
                //dropItem.AddComponent<PickUpItem>();
                //dropItem.GetComponent<PickUpItem>().item = this.gameObject.GetComponent<ItemOnObject>().item;
                //dropItem.transform.localPosition = GameObject.FindGameObjectWithTag("Player").transform.localPosition;
                //inventory.OnUpdateItemList();
                //if (oldSlot.transform.parent.parent.GetComponent<EquipmentSystem>() != null)
                //    inventory.GetComponent<Inventory>().UnEquipItem1(dropItem.GetComponent<PickUpItem>().item);
                //Destroy(this.gameObject);
            }
        }
        inventory.OnUpdateItemList();
    }