private void CreateSubItem(SChatMessageObjectInfo info, float width, ref float curOffsetX, ref float curOffsetY, List <LineObjCache> curLineObject) { if (width < 0f || curLineObject == null) { return; } ResNode itemPrefab = LogicDataCenter.chatMessageManager.GetChatItemPrefabByObjType(info.type); if (itemPrefab == null) { return; } GameObject itemObj = itemPrefab.InstanceMainRes(); if (itemObj == null) { return; } IChatItem subItem = itemObj.GetComponent <IChatItem>(); if (subItem == null) { itemPrefab.DestroyInstanceRes(ref itemObj); return; } subItem.SetResNode(itemPrefab); currChatBoxItem.Add(subItem); itemObj.transform.SetParent(this.transform, false); if (subItem.SetItemData(info) == false) { return; } for (int i = 0; i < 100; ++i) { IChatItem nextItem; subItem.SplitByWidth(width, curOffsetX, out subItem, out nextItem); if (subItem != null) { curOffsetX += subItem.GetItemWidth(); AddLineObject(subItem, curLineObject); } if (nextItem == null) { break; } AlignLineObject(ref curOffsetX, ref curOffsetY, curLineObject); subItem = nextItem; currChatBoxItem.Add(subItem); } }
public void OnInputfieldAddItem(ChatBoxAddInputFieldItemData msgData) { ResNode itemPrefab = LogicDataCenter.chatMessageManager.GetChatItemPrefabByObjType(msgData.objInfo.type); if (itemPrefab == null) { return; } GameObject itemObj = itemPrefab.InstanceMainRes(); if (itemObj == null) { return; } IChatItem subItem = itemObj.GetComponent <IChatItem>(); subItem.SetResNode(itemPrefab); if (subItem == null) { itemPrefab.DestroyInstanceRes(ref itemObj); return; } if (subItem.SetItemData(msgData.objInfo) == false) { itemPrefab.DestroyInstanceRes(ref itemObj); return; } if (msgData.bClearInputField) { inputField.ClearContent(); } if (msgData.bActiveInputField) { inputField.ActivateInputField(); } inputField.selectionFocusPosition = inputField.caretPosition; inputField.InsertItem(itemObj, subItem, -1); // 自动发送 if (msgData.bAutoSend) { OnSendBtnClick(); } }