public void GridUI_OnLeftEndDrag(Transform GridTransform, Transform GridEndTransform) { isDrag = false; DragItemUi.Hide(); /*判断拖拽结束时指着的格子上有没有物体,如果有就进行交换,没有就把物品直接放上去*/ if (GridEndTransform == null) //扔东西 { ItemModel.DeleteItem(GridTransform.name); //删除之前格子的信息 Debug.LogWarning("物品已扔"); } else if (GridEndTransform.tag == "Grid") //如果拖到另一个格子或者当前格子里里 { if (GridEndTransform.childCount == 0) //直接扔进去 { Item item = ItemModel.GetItem(GridTransform.name); //获得之前的数据 this.CreateNewItem(item, GridEndTransform); //创建出新的Item ItemModel.DeleteItem(GridTransform.name); //删除之前格子的信息 } else//交换 { Item item1 = ItemModel.GetItem(GridTransform.name); //获得之前的数据 Item item2 = ItemModel.GetItem(GridEndTransform.name); //获得之后的数据 Destroy(GridEndTransform.GetChild(0).gameObject); //将该位置的物体删除 ItemModel.DeleteItem(GridTransform.name); //删除之后格子的信息 ItemModel.DeleteItem(GridTransform.name); //删除之前格子的信息 this.CreateNewItem(item1, GridEndTransform); //创建出新的Item this.CreateNewItem(item2, GridTransform); //创建出新的Item } } else//如果拖到UI其他地方 { Item item = ItemModel.GetItem(GridTransform.name);//获得之前的数据 this.CreateNewItem(item, GridTransform);//创建出新的Item } }
private void GridUI_ExitDrag(Transform lasttransform, Transform transform) { Isdrag = false; dragitemui.HideText(); if (transform == null) //ui 外 { ItemModel.DeleteItem(lasttransform.name); Debug.Log("物品已移除"); } else if (transform.tag == "Grid") //拖到格子里 { if (transform.childCount == 0) //空格子 { Item item = ItemModel.GetItem(lasttransform.name); if (item != null) { ItemModel.DeleteItem(lasttransform.name); } CreatNewItem(item, transform); } else //已存在交换 { //删除原来的物品 Destroy(transform.GetChild(0).gameObject); //获取数据 Item prevGirdItem = ItemModel.GetItem(lasttransform.name); Item enterGirdItem = ItemModel.GetItem(transform.name); //交换的两个物体 this.CreatNewItem(prevGirdItem, transform); this.CreatNewItem(enterGirdItem, lasttransform); } } else //格子外 { // Item item = ItemModel.GetItem(lasttransform.name); // CreatNewItem(item, lasttransform); } }
//放弃把背包内物品拖拽到场景里了。。。还是试试点击吧 //private void GridUI_OnLeftDrag(Transform DragTransform) //{ // isdrag = true; // Vector2 position; // float leftPos,rightPos,upPos,downPos; // RectTransformUtility.ScreenPointToLocalPointInRectangle(GameObject.Find("Canvas").transform as RectTransform, // Input.mousePosition, MainCamera, out position); // rightPos = GridPanel.sizeDelta.x / 2; // leftPos = -GridPanel.sizeDelta.x / 2; // upPos = GridPanel.sizeDelta.y / 2; // downPos = -GridPanel.sizeDelta.y / 2; // Debug.Log(position); // if (position.x < leftPos || position.x > rightPos || position.y > upPos || position.y < downPos) // { // isOut = true; // } // if (isOut == true) // { // GameObject.Find("Canvas").GetComponent<Canvas>().planeDistance = 0; // isOut = false; // } //} private void GridUI_OnLeftEndDrag(Transform GridTransStart, Transform GridTransEnd) //当鼠标停止拖拽 { isdrag = false; dragItemUI.hidden(); //隐藏被拖拽时出现的物品 if (GridTransEnd.tag == "Grid") //若拖到了另一个格子上 { if (GridTransEnd.childCount == 0) //若为空格子 { Items item = ItemModel.GetItem(GridTransStart.name); //取得开始拖拽的格子对应的物品 ItemModel.DeleteItem(GridTransStart.name); //删除开始拖拽的格子存储的物品信息 CreatNewItem(item, GridTransEnd); //在拖拽结束的格子处创建对应物品并存储数据 } else //交换 { Destroy(GridTransEnd.GetChild(0).gameObject); //获取拖拽开始和结束时的物品信息 Items ItemStart = ItemModel.GetItem(GridTransStart.name); Items ItemEnd = ItemModel.GetItem(GridTransEnd.name); //得到未点燃的火把 if ((ItemStart.ID == 2 && ItemEnd.ID == 1) || (ItemStart.ID == 1 && ItemEnd.ID == 2)) { CreatNewItem(PackageItemList[4], GridTransEnd); } else { //在开始结束的格子中分别创建结束开始的物品 CreatNewItem(ItemStart, GridTransEnd); CreatNewItem(ItemEnd, GridTransStart); } } } else //拖到其他地方,返回原位置 { Items item = ItemModel.GetItem(GridTransStart.name); CreatNewItem(item, GridTransStart); } }
public void GridUIOnEnter(Transform gridTransform) //鼠标移动到物品上面 { Item item = ItemModel.GetItem(gridTransform.name); if (item == null) { return; } else { //des更新为选择的物品 string des = GetDesText(item); desUI.UpdateDes(des); Vector2 position; RectTransformUtility.ScreenPointToLocalPointInRectangle(GameObject.Find("Canvas").transform as RectTransform, Input.mousePosition, null, out position); desUI.SetLocalPosition(position); desUI.ShowDes(); } }
private void GridUI_OnLeftEndDrag(Transform prevTransform, Transform enterTransform) { isDrag = false; DragItemUI.Hide(); if (enterTransform == null)//扔东西 { ItemModel.DeleteItem(prevTransform.name); Debug.LogWarning("物品已扔"); } else if (enterTransform.tag == "Grid") //拖到另一个或者当前格子里 { if (enterTransform.childCount == 0) //直接扔进去 { Item item = ItemModel.GetItem(prevTransform.name); this.CreatNewItem(item, enterTransform); ItemModel.DeleteItem(prevTransform.name); } else //交换 { //删除原来的物品 Destroy(enterTransform.GetChild(0).gameObject); //获取数据 Item prevGirdItem = ItemModel.GetItem(prevTransform.name); Item enterGirdItem = ItemModel.GetItem(enterTransform.name); //交换的两个物体 this.CreatNewItem(prevGirdItem, enterTransform); this.CreatNewItem(enterGirdItem, prevTransform); } } else//拖到UI的其他地方,让他还原 { Item item = ItemModel.GetItem(prevTransform.name); this.CreatNewItem(item, prevTransform); } }
private void GridUIItem_onLeftEndDrag(Transform prevTransform, Transform enterTransform) { //ragItemUIScript isDrag = false; dragItemUIScript.IsShowDragItem(false); if (enterTransform == null)//拖到UI外面,扔了 { ItemModel.DeleteItem(prevTransform.name); Debug.Log("扔东西"); } //1.拖到另一地方, else if (enterTransform.tag == "Grid") {//是否子物体有值 if (enterTransform.childCount == 0) { Item item = ItemModel.GetItem(prevTransform.name); createNewItem(item, enterTransform); ItemModel.DeleteItem(prevTransform.name); } else { Destroy(enterTransform.GetChild(0).gameObject); Item prevGridItem = ItemModel.GetItem(prevTransform.name); Item enterGridItem = ItemModel.GetItem(enterTransform.name); this.createNewItem(prevGridItem, enterTransform); this.createNewItem(enterGridItem, prevTransform); } } else//拖到UI的其他 的地方 { Item item = ItemModel.GetItem(prevTransform.name); createNewItem(item, prevTransform); } }
/// <summary> /// 结束拖拽,实现物品的交换或者恢复原位置 /// </summary> /// <param name="prevTransform"></param> /// <param name="enterTransform"></param> void GridUI_OnLeftEndDrag(Transform prevTransform, Transform enterTransform) { isDrag = false; m_DragItemUI.Hide(); if (enterTransform == null) //拖到其他位置,丢弃 { ItemModel.DeleteItem(prevTransform.name); Debug.Log("物品已扔"); } else if (enterTransform.tag == "Grid") //和别的网格交换或者自己交换 { if (prevTransform == enterTransform) //和自己交换 { Debug.Log("果然是同一位置!"); Item item = ItemModel.GetItem(prevTransform.name); if (item != null) { this.CreateNewItem(item, prevTransform); } } else //和别的网格交换 { if (enterTransform.childCount == 0) //如果拖拽到的位置为空 { Item item = ItemModel.GetItem(prevTransform.name); //保证拖拽的网格内部有物体,如果没有,则不会创建新的物体 if (item == null) { return; } ItemModel.DeleteItem(prevTransform.name); this.CreateNewItem(item, enterTransform); } else //有物体 { Destroy(enterTransform.FindChild("Item(Clone)").gameObject); Item curItem = ItemModel.GetItem(prevTransform.name); Item nextItem = ItemModel.GetItem(enterTransform.name); this.CreateNewItem(curItem, enterTransform); this.CreateNewItem(nextItem, prevTransform); } } } else //拖到别的位置,恢复到自身状态 { Item item = ItemModel.GetItem(prevTransform.name); if (item != null) { this.CreateNewItem(item, prevTransform); } } }