// 拆分材料 private void BreakMaterial() { // 射线检测相关的 RaycastHit rayhit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Physics.Raycast(ray, out rayhit); // 是不是检测到物体,并且这个物体的标签是合成槽 if (rayhit.transform != null && rayhit.transform.tag == "CraftingSlot") { GameObject target = rayhit.transform.gameObject; // 判断是不是同类型的合成槽 if (target.GetComponent <CraftingSlotController>().ItemId == itemId) { InventoryItemController childController = target.GetComponentInChildren <InventoryItemController>(); // 如果子物体带有这个,说明合成槽不是空的,则执行else 语句 // 否则复制一份出来进行初始化作为合成槽新物品 if (childController == null) { GameObject item = GameObject.Instantiate(gameObject, target.transform); item.name = gameObject.name; childController = item.GetComponent <InventoryItemController>(); item.transform.localPosition = Vector3.zero; ResizeImage(item.GetComponent <RectTransform>(), 70, 70); childController.isDragging = false; childController.isInventory = false; childController.InitSingleItem(itemId, m_Image.sprite, 1, itemBar); item.GetComponent <CanvasGroup>().blocksRaycasts = true; MinusNum(); // 更新合成槽管理的 List InventoryPanelController.Instance.SendAddSlotItem(item, true); } else { if (MinusNum()) { childController.Number = int.Parse(childController.m_Text.text) + 1; childController.isInventory = false; } // 更新合成槽管理的 List InventoryPanelController.Instance.SendAddSlotItem(null, false); } } } }