/// <summary> /// 全部合成点击 /// </summary> private void CraftAllClick() { SendMessageUpwards("CalcMinMaterial"); Debug.Log("全部合成"); Debug.Log("最小数是:" + min); for (int i = 0; i < min; i++) { GameObject go = Instantiate <GameObject>(newItem); //设置父物体 go.transform.SetParent(goodItem_Transform); //查找组件,预制体上面有了 InventoryItemManager iim = go.GetComponent <InventoryItemManager>(); //设置初始值 iim.SetItemValue(tempSpriteName, tempId, 1, 1); //重置位置 go.GetComponent <RectTransform>().localPosition = Vector3.zero; //重置大小 iim.ResetSpriteSize(go.GetComponent <RectTransform>(), 110, 110); //不在背包里 iim.IsInventory = false; } //结果槽显示数量 CraftResultNum(); //向C层发送消息 SendMessageUpwards("CraftingAllOK"); }
/// <summary> /// 单个合成点击 /// </summary> private void CraftClick() { SendMessageUpwards("CalcMinMaterial"); Debug.Log("单个合成"); GameObject go = Instantiate <GameObject>(newItem); //设置父物体 go.transform.SetParent(goodItem_Transform); //查找组件,预制体上面有了 InventoryItemManager iim = go.GetComponent <InventoryItemManager>(); //设置初始值 iim.SetItemValue(tempSpriteName, tempId, 1, 1); //重置位置 go.GetComponent <RectTransform>().localPosition = Vector3.zero; //重置大小 iim.ResetSpriteSize(go.GetComponent <RectTransform>(), 110, 110); //不在背包里 iim.IsInventory = false; //变为普通按钮 //NorCraft(); //结果槽显示数量 CraftResultNum(); Debug.Log("结果槽里面" + go.GetComponent <InventoryItemManager>().ToString()); //向C层发送消息 SendMessageUpwards("CraftingOK"); }
/// <summary> /// 接收合成面板返回来的材料放到背包里面(先看看背包里面有没有同id的,如果有就放回同id的地方,没有就找一个材料的地方放下) /// </summary> /// <param name="list">材料列表</param> public bool ReciveMaterial(List <GameObject> materialList) { int tempIndex = 0; for (int i = 0; i < materialList.Count; i++) { if (tempIndex == materialList.Count) { break; } for (int j = 0; j < slotList.Count; j++) { //当前背包槽里有物品且槽里面的东西没用耐久值就允许叠加 if (slotList[j].transform.Find("InventoryItem") != null) { if (materialList[tempIndex].GetComponent <InventoryItemManager>().ItemId == slotList[j].transform.Find("InventoryItem").GetComponent <InventoryItemManager>().ItemId) { //二重判断,结果槽里的东西丢回背包栏可能会有耐久度,因此不能叠加 if (materialList[tempIndex].GetComponent <InventoryItemManager>().ItemBar == 0 && slotList[j].transform.Find("InventoryItem").GetComponent <InventoryItemManager>().ItemBar == 0) { materialList[tempIndex].GetComponent <InventoryItemManager>().MergeMaterials(slotList[j].transform.Find("InventoryItem").GetComponent <InventoryItemManager>()); tempIndex++; Debug.Log("材料放回到背包的已经有次材料的地方了"); break; } //id相同的话有耐久值就什么也不做,等着出循环然后最后会在空槽里放这个东西。 } } //在空槽里放这个东西 else { materialList[tempIndex].transform.SetParent(slotList[j].transform); InventoryItemManager iim = materialList[tempIndex].GetComponent <InventoryItemManager>(); iim.IsInventory = true; iim.InCrafting = false; Debug.Log("材料放回到背包的空槽:" + iim.ToString()); iim.ResetSpriteSize(materialList[tempIndex].GetComponent <RectTransform>(), 85, 85); tempIndex++; break; } } } //如果当前材料都放回背包槽了,就返回true if (tempIndex == materialList.Count) { return(true); } //如果当前材料放回背包放不下,就返回false return(false); ////临时引用 (直接丢回来不加判断) //int tempIndex = 0; //for (int i = 0; i < slotList.Count; i++) //{ // Transform itemTransform = slotList[i].transform.Find("InventoryItem"); // //如果背包栏的位置是空的且当前索引小于传过来的材料列表的大小,因为大于或者等于了就等于说材料都放回背包里面了 // if (itemTransform == null && tempIndex < materialList.Count) // { // materialList[tempIndex].transform.SetParent(slotList[i].transform); // InventoryItemManager iim = materialList[tempIndex].GetComponent<InventoryItemManager>(); // iim.IsInventory = true; // iim.InCrafting = false; // Debug.Log("材料放回背包:" + iim.ToString()); // iim.ResetSpriteSize(materialList[tempIndex].GetComponent<RectTransform>(), 85, 85); // tempIndex++; // } //} //背包栏中的ID相同的融合 //IdFuse(slotList); }