Exemplo n.º 1
0
    protected override void OnDragDropRelease(GameObject surface)       //每次UI拖拽结束后都会调用这个函数,surface表示拖拽后鼠标下的物体
    {
        base.OnDragDropRelease(surface);
        if (surface != null)                                            //鼠标下物体不为空,先判断下鼠标下的物体时什么
        {
            if (surface.tag == Tags.bag_item_grid)                      //拖放到空的格子里面

            {
                if (surface == this.transform.parent.gameObject)                        //拖放到自己的格子里,位置归零

                {
                }
                else                                                                            //拖放到一个空的格子里
                {
                    BagItemGrid oldparent = this.transform.parent.GetComponent <BagItemGrid>(); //取得原有格子的信息
                    this.transform.parent = surface.transform;                                  //将其父亲更改为新的空格子
                    ResetPosition();
                    BagItemGrid newparent = surface.GetComponent <BagItemGrid>();               //取得新的空格子
                    newparent.SetId(oldparent.id, oldparent.num);                               //将信息存放到新的格子里
                    oldparent.CleanrInfo();                                                     //清除原来格子的信息
                }
            }
            else if (surface.tag == Tags.bag_item)                                                              //拖放到有物体个格子里
            {
                BagItemGrid Grid1 = this.transform.parent.GetComponent <BagItemGrid>();                         //取得现在格子的信息
                BagItemGrid Grid2 = surface.transform.parent.GetComponent <BagItemGrid>();                      //取得拖放到格子的信息
                int         id    = Grid1.id;                                                                   //保存原有格子的信息
                int         num   = Grid1.num;
                Grid1.SetId(Grid2.id, Grid2.num);                                                               //交换两个格子的信息
                Grid2.SetId(id, num);
            }
        }

        ResetPosition();
    }