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(); }
/// <summary> /// 拖拽结束后的处理 /// </summary> /// <param name="oldTransform">被拖拽物品原所在的格子</param> /// <param name="enterTransform">被拖拽物品现所在的格子</param> private void BagItemGrid_OnLeftEndDrag(Transform oldTransform, Transform enterTransform) { if (isDrag == true) { isDrag = false; dragItem.Hide(); if (enterTransform == null) //将物品扔出背包 { Destroy(oldTransform.GetChild(1).gameObject); BagItemGrid bagItemGrid = oldTransform.gameObject.GetComponent <BagItemGrid>(); bagItemGrid.Clear(); } else if (enterTransform.tag == Tags.grid) { BagItemGrid bagItemGrid = oldTransform.gameObject.GetComponent <BagItemGrid>(); BagItemGrid enterGrid = enterTransform.gameObject.GetComponent <BagItemGrid>(); if (enterTransform.childCount == 1) //将物品拖到一个新的地方 { GameObject itemGo = Instantiate(bagItem, enterTransform); itemGo.transform.localPosition = Vector3.zero; enterGrid.SetByID(bagItemGrid.id, bagItemGrid.count); Destroy(oldTransform.GetChild(1).gameObject); bagItemGrid.Clear(); } else //物品位置交换 { int oldID = bagItemGrid.id; int oldCount = bagItemGrid.count; oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true; bagItemGrid.SetByID(enterGrid.id, enterGrid.count); enterGrid.SetByID(oldID, oldCount); } } else if (enterTransform.tag == Tags.shotCutGrid) { ShotCutGrid shotCutGrid = enterTransform.GetComponent <ShotCutGrid>(); BagItemGrid bagItemGrid = oldTransform.GetComponent <BagItemGrid>(); if (bagItemGrid.info.type == objectType.Drug) { shotCutGrid.id = bagItemGrid.id; oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true; Image image = shotCutGrid.transform.FindChild("Image").GetComponent <Image>(); ObjectInfo info = ObjectsInfo._instance.GetObjectInfoById(shotCutGrid.id); image.gameObject.SetActive(true); string path = "Icon/" + info.name_Icon; image.sprite = Resources.Load(path, typeof(Sprite)) as Sprite; } } else //拖到了背包的其他地方,位置复原 { oldTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = true; } } }
/// <summary> /// 鼠标进入显示物品详情 /// </summary> /// <param name="gridTransform"></param> private void BagItemGrid_OnEnter(Transform gridTransform) { BagItemGrid bagItemGrid = gridTransform.gameObject.GetComponent <BagItemGrid>(); ObjectInfo info = bagItemGrid.info; if (info == null) { return; } dressGrid = bagItemGrid; itemDecUI.ShowDec(); string text = GetDecText(info); itemDecUI.UpdateText(text); showingDec = true; }
/// <summary> /// 拖拽物品开始时的处理 /// </summary> /// <param name="gridTransform">被拖拽物所在的格子</param> private void BagItemGrid_OnLeftBeginDrag(Transform gridTransform) { if (gridTransform.childCount == 1) { return; } else { dragItem.Show(); BagItemGrid bagItemGrid = gridTransform.gameObject.GetComponent <BagItemGrid>(); //获取gridT染上form身上的gridItemGrid dragItem.setImage(bagItemGrid.id); //Destroy(gridTransform.GetChild(1).gameObject); gridTransform.GetChild(1).gameObject.GetComponent <Image>().enabled = false; isDrag = true; } }
/// <summary> /// 拾取到id的物品,并添加到物品栏里面 /// 处理拾取物品的功能 /// </summary> /// <param name="id"></param> public bool GetID(int id, int count = 1) { //查找在所有物品中是否有该物品 //如果存在 count +1 //不存在,查找空的方格,然后把新创建的BagItem放到这个空的方格中 getSuccess = false; BagItemGrid grid = null; foreach (BagItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } if (grid != null) { grid.PlusCount(count); getSuccess = true; } else { foreach (BagItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) { GameObject itemGo = Instantiate(bagItem, grid.transform); itemGo.transform.localPosition = Vector3.zero; grid.SetByID(id, count); getSuccess = true; } } return(getSuccess); }
public void GetId(int id) { BagItemGrid grid = null; foreach (BagItemGrid t in ItemList) { if (t.id == id) { grid = t; break; } } if (grid != null) { BagItem item = grid.GetComponentInChildren <BagItem>(); item.add(); } else { foreach (BagItemGrid t in ItemList) { if (t.id == 0) { grid = t; break; } } if (grid != null) { /*bagItem = (BagItem)Instantiate(bagItem, Vector3.zero, transform.rotation); * bagItem.transform.parent = grid.transform; * * bagItem.transform.localPosition = Vector3.zero;*/ bagItem = grid.GetComponentInChildren <BagItem>(); grid.id = id; bagItem.SetId(id); } } }
/// <summary> /// 鼠标移开隐藏物品详情 /// </summary> private void BagItemGrid_OnExit() { dressGrid = null; itemDecUI.CloseDec(); showingDec = false; }
private void Awake() { image = GetComponent <Image>() as Image; itemnum = GetComponentInChildren <Text>();//取到了 parent = GetComponentInParent <BagItemGrid>(); }