Пример #1
0
    public void GridUIOnLeftEndDrag(Transform prevTransform, Transform enterTransform)  //结束拖动
    {
        if (isDragNull)
        {
            return;
        }

        if (enterTransform == null)  //丢弃物品
        {
            //将选择的物品从格子中移出
            ItemModel.RemoveItem(prevTransform.name);
            Debug.Log("丢弃...");
        }
        else if (enterTransform.tag == gridTag)                    //拖到另一个格子里
        {
            if (enterTransform.childCount == 0)                    //格子上没有物品,直接放置到新格子上
            {
                Item item = ItemModel.GetItem(prevTransform.name); //先保存好之前的物品

                /***
                 * 一定要先移出再创建,如果先创建再移除,当prevTransform等于enterTransform时会产生错误
                 ***/

                //将选择的物品从格子中移出
                ItemModel.RemoveItem(prevTransform.name);

                CreateNewItem(enterTransform, item);
            }
            else  //格子上有物品,交换两个物品
            {
                Item prevGridItem  = ItemModel.GetItem(prevTransform.name);
                Item enterGridItem = ItemModel.GetItem(enterTransform.name);
                //删除新格子上的物品
                //Destroy(prevTransform.GetChild(0).gameObject);
                Destroy(enterTransform.GetChild(0).gameObject);
                //交换两个物品的数据
                CreateNewItem(enterTransform, prevGridItem);
                CreateNewItem(prevTransform, enterGridItem);
            }
        }
        else  //拖到其他UI格子里,不允许
        {
            Item item = ItemModel.GetItem(prevTransform.name);
            CreateNewItem(prevTransform, item);
        }

        dragUI.UpdateIcon(0);
        dragUI.UpdateCount(0);
        dragUI.HideItem();
    }