Exemple #1
0
 /// <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");
 }
Exemple #2
0
    /// <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);
    }