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