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(); }