//拾取到id物品,并添加到物品栏里面 public void AddItemToBag(string id, int count = 1) { InventoryItemGrid grid = null; //查找是否存在该物品, foreach (InventoryItemGrid temp in itemGrid) { if (temp.id == id) { grid = temp; break; } } //存在物品数量+1 if (grid != null) { grid.PlusNumber(count); } else { //不存在,判断背包是否满 foreach (InventoryItemGrid temp in itemGrid) { //当前格子id为空,则未满 if (temp.id == "") { grid = temp; break; } } //背包未满,则创建物体 if (grid != null) { InventoryItem item = grid.GetComponentInChildren <InventoryItem>(); //如果不存在隐藏的Item则创建 if (item == null) { //NGUI的实例化 GameObject itemGo = grid.gameObject.AddChild(inventoryItem); itemGo.transform.localPosition = Vector3.zero; //格子深度为5,数量为7,物品为6 itemGo.GetComponent <UISprite>().depth = 6; grid.SetId(id, count); } else { item.GetComponent <UISprite>().enabled = true; grid.SetId(id, count); } } } }
protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); if (surface != null) { if (surface.tag == Tags.inventoryItemGrid) { if (surface != this.transform.parent.gameObject) // 拖拽到空格子 { InventoryItemGrid oldGrid = this.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid newGrid = surface.GetComponent <InventoryItemGrid>(); newGrid.SetId(oldGrid.GetId(), oldGrid.GetNum()); oldGrid.ClearInfo(); } } else if (surface.tag == Tags.inventoryItem) // 拖拽到有物体的格子 { InventoryItemGrid grid1 = this.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid grid2 = surface.transform.parent.GetComponent <InventoryItemGrid>(); int id = grid1.GetId(); int num = grid1.GetNum(); grid1.SetId(grid2.GetId(), grid2.GetNum()); grid2.SetId(id, num); } } ResetPos(); }
protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); if (surface != null) { if (surface.tag == Tags.Inventory_item_grid) //当拖放到了一个空的格子里面 { if (surface == this.transform.parent.gameObject) //拖放到了自己的格子里面 { } else { InventoryItemGrid oldParent = this.transform.parent.GetComponent <InventoryItemGrid> (); this.transform.parent = surface.transform; ResetPosition(); InventoryItemGrid newParent = surface.GetComponent <InventoryItemGrid> (); newParent.SetId(oldParent.id, oldParent.num); oldParent.ClearInfo(); } } else if (surface.tag == Tags.Inventory_item) //当拖放到了一个有物品的格子里面 { InventoryItemGrid grid1 = this.transform.parent.GetComponent <InventoryItemGrid> (); InventoryItemGrid grid2 = surface.transform.parent.GetComponent <InventoryItemGrid> (); int id = grid1.id; int num = grid1.num; grid1.SetId(grid2.id, grid2.num); grid2.SetId(id, num); } } ResetPosition(); }
public void GetId(int id, int number) { InventoryItemGrid grid = null; if (itemGridList.Count < 1 && number > 0) { GameObject itemGo = GameObject.Instantiate(InventoryItem); itemGo.transform.SetParent(this.transform); grid = itemGo.GetComponent <InventoryItemGrid>(); grid.SetId(id, number); itemGridList.Add(grid); } else { foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } if (grid != null && number > 0) { grid.PlusNumber(number); } else { if (number > 0) { GameObject itemGo = GameObject.Instantiate(InventoryItem); itemGo.transform.SetParent(this.transform); grid = itemGo.GetComponent <InventoryItemGrid>(); grid.SetId(id, number); itemGridList.Add(grid); } } } }
protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); Debug.Log(surface.tag); if (surface != null) { if (surface.tag == Tags.inventoryItemGrid) //当拖放到空格子里 { if (surface == transform.parent.gameObject) //当拖动到自己的格子里 { } else { InventoryItemGrid oldParent = transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid newParent = surface.GetComponent <InventoryItemGrid>(); transform.parent = surface.transform; newParent.SetId(oldParent.id, oldParent.num); oldParent.ClearInfo(); //清空信息 } } else if (surface.tag == Tags.inventoryItem) //当拖放到有物品的格子里 { InventoryItemGrid grid1 = transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid grid2 = surface.transform.parent.GetComponent <InventoryItemGrid>(); int id = grid1.id; int num = grid1.num; grid1.SetId(grid2.id, grid2.num); grid2.SetId(id, num); } else if (surface.tag == Tags.shortCut) //当拖放到快捷栏时 { surface.GetComponent <ShortCutGrid>().SetInventory(id); } else //当拖放到空白的地方时 { } ResetPosition(); } else { ResetPosition(); } }
/// <summary> /// 拾取到Id的物品,并添加到物品栏里面 /// 处理拾取物品的功能 /// </summary> /// <param name="id"></param> public void GetId(int id, int count = 1) { //第一步 查找在所有的物品中是否存在该物品 //第二步 如果存在,让num +1; InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } //存在的情况 if (grid != null) { grid.PlusNumber(count); } //不存在的情况 else { foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) { //第三步 如果不存在,查找空的方格,然后把新创建的Inventory放到这个空的方格中; GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItem); itemGo.transform.localPosition = Vector3.zero; itemGo.GetComponent <UISprite>().depth = 8; grid.SetId(id, count); } } }
public void OnEndDrag(PointerEventData eventData) { transform.SetParent(originalParent); if (eventData.pointerCurrentRaycast.gameObject != null) { if (eventData.pointerCurrentRaycast.gameObject.tag == Tags.Inventory_item_grid.ToString()) //当拖放到空格子中 { if (eventData.pointerCurrentRaycast.gameObject == originalParent.gameObject) //拖放到自己原本的格子中 { } else { InventoryItemGrid oldParent = originalParent.GetComponent <InventoryItemGrid>(); this.transform.parent = eventData.pointerCurrentRaycast.gameObject.transform; InventoryItemGrid newParent = eventData.pointerCurrentRaycast.gameObject.GetComponent <InventoryItemGrid>(); newParent.SetId(oldParent.id, oldParent.num); transform.localPosition = Vector3.zero; oldParent.ClearInfo(); } } else if (eventData.pointerCurrentRaycast.gameObject.tag == Tags.Inventory_item.ToString())//拖放到一个有物品的格子里 { InventoryItemGrid gird1 = originalParent.GetComponent <InventoryItemGrid>(); InventoryItemGrid gird2 = eventData.pointerCurrentRaycast.gameObject.transform.parent.GetComponent <InventoryItemGrid>(); int id = gird1.id, num = gird1.num; gird1.SetId(gird2.id, gird2.num); gird2.SetId(id, num); } else if (eventData.pointerCurrentRaycast.gameObject.tag == Tags.ShortCut.ToString()) { eventData.pointerCurrentRaycast.gameObject.GetComponent <ShortCutGird>().SetInventory(id); } } ResetPosition(); GetComponent <CanvasGroup>().blocksRaycasts = true; }
protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); if (surface != null) { if (surface.tag == Tags.inventory_item_grid) { InventoryItemGrid oldItemGrid = gameObject.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid newItemGrid = surface.GetComponent <InventoryItemGrid>(); if (newItemGrid != oldItemGrid) { this.transform.parent = surface.transform; newItemGrid.SetId(oldItemGrid.id, oldItemGrid.currentNumb); oldItemGrid.ClearInfo(); } } else if (surface.tag == Tags.inventory_item) { InventoryItemGrid oldItemGrid = gameObject.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid newItemGrid = surface.transform.parent.GetComponent <InventoryItemGrid>(); int tempId = newItemGrid.id; int tempNum = newItemGrid.currentNumb; newItemGrid.ClearInfo(); this.transform.parent = newItemGrid.gameObject.transform; newItemGrid.SetId(oldItemGrid.id, oldItemGrid.currentNumb); oldItemGrid.ClearInfo(); InventoryItem newItem = newItemGrid.GetComponentInChildren <InventoryItem>(); newItem.gameObject.transform.parent = oldItemGrid.gameObject.transform; oldItemGrid.SetId(tempId, tempNum); newItem.ResetPosition(); } else if (surface.tag == Tags.shortcut) { ShortcutGrid shortcutGrid = surface.GetComponent <ShortcutGrid>(); shortcutGrid.SetInventory(itemId); } isHover = false; } ResetPosition(); }
// 拾取物品 public void GetId(int id, int count = 1) { // 第一步查找是否存在该物品 // 第二,存在num+1 // 第三,不存在,查找空格,追加物品 InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in itemGridList) { // 已存在 if (temp.id == id) { grid = temp; break; } } // 存在情况 if (grid != null) { grid.PlusNumber(); } // 不存在的情况 else { foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) { // 不存在,查找空格,追加物品 GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItem); itemGo.transform.localPosition = Vector3.zero; // 初始位置,确保正中间 itemGo.GetComponent <UISprite>().depth = 4; grid.SetId(id, count); } } }
/// <summary> /// 拾取物品 /// </summary> /// <param name="id"></param> public void GetId(int id) { //查找是否存在该物品 //存在 num+1 //不存在 查找空的方格存放进去 InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in items) { if (temp.id == id) { grid = temp; break; } } if (grid != null) { //存在 grid.AddNum(); } else { //不存在,查找空的方格 foreach (InventoryItemGrid temp in items) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) { //有足够的格子 grid.SetId(id); } else { print("没有多的格子了"); } } }
/// <summary> /// 拾取到id的物品,并添加到物品栏里面 /// 处理拾取物品的功能 /// </summary> /// <param name="id"></param> public void GetId(int id) { //第一步 在所有的物品中是否存在该物品 //第二 若存在,则物品num+1 //第三 若不存在,查找空的方格,然后把新创建的inventoryItem放到这个空的方格里面 InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } //存在的情况 if (grid != null) { grid.PlusNum(); } //不存在的情况 else { foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } //第三 若不存在,查找空的方格,然后把新创建的inventoryItem放到这个空的方格里面 if (grid != null) { GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItem); itemGo.transform.localPosition = Vector3.zero; itemGo.GetComponent <UISprite>().depth = 9; grid.SetId(id); } } }
//拾取到物品,并添加到物品栏里面 public void GetId(int id, int num = 1) { //第一步:查找在所有物品中是否存在该物品 //第二步:如果存在,让numLabel+1 //第三步:如果不存在,查找空的格子,然后创建新的Iventory-item放入里面 InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } if (grid != null) //存在的情况 { grid.PlusNumber(num); } else //不存在的情况 { foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) { GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItem); itemGo.transform.localPosition = Vector3.zero; itemGo.GetComponent <UISprite>().depth = 3; grid.SetId(id, num); } } }
//拾取id物品的功能,并添加到物品栏里面 public void GetId(int id, int count = 1) { //第一步查找所有的物品是否存在该物品 // 第二,如果存在,num+1 InventoryItemGrid grid = null; foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == id) { grid = temp; break; } } if (grid != null) //存在的情况 { grid.PlusNumber(count); } else { //不存在的话,找个新的格子 foreach (InventoryItemGrid temp in itemGridList) { if (temp.id == 0) { grid = temp; break; } } if (grid != null) //第三 查找新的方格,然后把新创建的 放到新的空格去 { //添加空的物体 GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItem); itemGo.transform.localPosition = Vector3.zero; itemGo.GetComponent <UISprite>().depth = 4; grid.SetId(id, count); } } }
protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); if (surface != null) { // 拖放到空格子 if (surface.tag == Tags.inventory_item_grid) { // 拖放到自己的格子 if (surface == this.transform.parent.gameObject) { } else { InventoryItemGrid oldParent = transform.parent.GetComponent <InventoryItemGrid>(); this.transform.parent = surface.transform; InventoryItemGrid newParent = surface.GetComponent <InventoryItemGrid>(); newParent.SetId(oldParent.id, oldParent.num); oldParent.ClearInfo(); } } else if (surface.tag == Tags.inventory_item) { InventoryItemGrid grid1 = this.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid grid2 = surface.transform.parent.GetComponent <InventoryItemGrid>(); int id = grid1.id; int num = grid1.num; grid1.SetId(grid2.id, grid2.num); grid2.SetId(id, num); } else if (surface.tag == Tags.shortcut) { surface.GetComponent <ShortCutGrid>().SetInventory(id); } } ResetPosition(); }
/// <summary> /// 拾取到Id的物品,并添加到物品栏里 /// </summary> /// <param name="id"></param> public void GetId(int id, int count = 1) { InventoryItemGrid grid = null; foreach (var item in itemGridList) { if (item.id == id) { grid = item; break; } } if (grid != null) { grid.PlusNumber(count); } else { foreach (var item in itemGridList) { if (item.id == 0) { grid = item; break; } } if (grid != null) { var tempItem = GameObject.Instantiate(inventoryItem); tempItem.transform.SetParent(grid.transform); tempItem.transform.localPosition = Vector3.zero; grid.SetId(id, count); } } }
// 根据 id 拾取物品 public void GetId(int id) { InventoryItemGrid grid = null; // 查找是否已有该物品 foreach (InventoryItemGrid temp in itemGridList) { if (temp.GetId() == id) // 已有 { grid = temp; break; } } if (grid != null) { grid.PlusNum(); // 该物品数目+1 } else { // 查找是否有空格子 foreach (InventoryItemGrid temp in itemGridList) { if (temp.GetId() == 0) // 有空格子 { grid = temp; break; } } if (grid != null) // 往空格子里放物品 { GameObject itemGo = NGUITools.AddChild(grid.gameObject, inventoryItemPrefab); itemGo.transform.localPosition = Vector3.zero; itemGo.GetComponent <UISprite>().depth = 4; grid.SetId(id); // 改变各自装的物品 } } }
//拖拽结束时调用 protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); if (surface != null) { //拖放到了空的格子里 if (surface.tag == Tags.inventory_item_grid) { //拖放到了自己的格子里 if (surface == this.transform.parent.gameObject) { } //拖放到了其它空的格子里 else { InventoryItemGrid oldParent = this.transform.parent.GetComponent <InventoryItemGrid>(); this.transform.parent = surface.transform; InventoryItemGrid newParent = surface.GetComponent <InventoryItemGrid>(); newParent.SetId(oldParent.id, oldParent.num); oldParent.ClearInfo(); } } //拖放到了有物品的格子里 else if (surface.tag == Tags.inventory_item) { InventoryItemGrid thisParent = this.transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid surgaceParent = surface.transform.parent.GetComponent <InventoryItemGrid>(); int id = thisParent.id; int num = thisParent.num; thisParent.SetId(surgaceParent.id, surgaceParent.num); surgaceParent.SetId(id, num); } } ResetPosition(); }
//surface本质上传过来的是UICamera.hoveredObject,也就是图片下面的是那个ui物体 protected override void OnDragDropRelease(GameObject surface) { base.OnDragDropRelease(surface); bool isCleanChildren = false; //拖放到空格子 if (surface.tag == Tags.inventoryItemGrid) { //拖放到非自身的空格子 if (surface != transform.parent.gameObject) { InventoryItem hideItem = surface.GetComponentInChildren <InventoryItem>(); InventoryItemGrid oldGrid = transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid newGrid = surface.GetComponent <InventoryItemGrid>(); //判断这个空格子是真的没有物体,还是有一个隐藏的InventoryItem if (hideItem == null) { //必须把设置放在SetId之前,SetId会获取子组件 transform.parent = surface.transform; newGrid.SetId(oldGrid.id, oldGrid.itemNum); oldGrid.CleanInfo(); } else { hideItem.GetComponent <UISprite>().enabled = true; newGrid.SetId(oldGrid.id, oldGrid.itemNum); oldGrid.CleanInfoInChildren(); isCleanChildren = true; } } } //拖放到有物品的格子,两个格子信息交换 else if (surface.tag == Tags.inventoryItem) { InventoryItemGrid originalGrid = transform.parent.GetComponent <InventoryItemGrid>(); InventoryItemGrid targetGrid = surface.transform.parent.GetComponent <InventoryItemGrid>(); string id = targetGrid.id; int num = targetGrid.itemNum; targetGrid.SetId(originalGrid.id, originalGrid.itemNum); originalGrid.SetId(id, num); } //拖放到快捷栏 else if (surface.tag == Tags.shortCut) { surface.GetComponent <ShortCutGrid>().SetInventoryItem(m_id); } ResetItemPosition(); //因为如果清空格子的子物体代表会执行隐藏操作,这里把它显示有不合理 if (isCleanChildren == false) { transform.parent.GetComponentInChildren <UILabel>().enabled = true; } sprite.depth = originalDepth; }