/// <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> /// 拾取到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); }