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); } }
private void AddLineObject(IChatItem item, List <LineObjCache> curLineObject) { LineObjCache objCache; objCache.width = item.GetItemWidth(); objCache.height = item.GetItemHeight(); objCache.trans = item.GetTransform(); objCache.trans.sizeDelta = new Vector2(objCache.width, objCache.height); curLineObject.Add(objCache); }