public void reloadData() { this.removeAllElements(); RectTransform rtran = this.GetComponent <RectTransform>(); //align if (alignType == RichAlignType.DESIGN_CENTER) { rtran.GetComponent <RectTransform>().pivot = new Vector2(0.5f, 0.5f); } else if (alignType == RichAlignType.LEFT_TOP) { rtran.GetComponent <RectTransform>().pivot = new Vector2(0f, 1f); } int len = _richElements.Count; for (int i = 0; i < len; i++) { LRichElement elem = _richElements[i]; if (elem.type == RichType.TEXT) { LRichElementText elemText = elem as LRichElementText; char[] _charArr = elemText.txt.ToCharArray(); TextGenerator gen = new TextGenerator(); foreach (char strChar in _charArr) { LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.TEXT; rendElem.strChar = strChar.ToString(); rendElem.isOutLine = elemText.isOutLine; rendElem.isUnderLine = elemText.isUnderLine; rendElem.outLineColor = elemText.outLineColor; rendElem.font = this.font; rendElem.fontSize = elemText.fontSize; rendElem.data = elemText.data; rendElem.color = elemText.color; TextGenerationSettings setting = new TextGenerationSettings(); setting.font = this.font; setting.fontSize = elemText.fontSize; setting.lineSpacing = 0; setting.scaleFactor = 1; setting.verticalOverflow = VerticalWrapMode.Overflow; setting.horizontalOverflow = HorizontalWrapMode.Overflow; rendElem.width = (int)gen.GetPreferredWidth(rendElem.strChar, setting); rendElem.height = (int)gen.GetPreferredHeight(rendElem.strChar, setting); _elemRenderArr.Add(rendElem); } } else if (elem.type == RichType.IMAGE) { LRichElementImage elemImg = elem as LRichElementImage; LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.IMAGE; rendElem.path = elemImg.path; rendElem.data = elemImg.data; string atlas = System.IO.Path.GetDirectoryName(rendElem.path); string spname = System.IO.Path.GetFileName(rendElem.path); Sprite sp = LLoadBundle.GetInstance().GetSpriteByName(atlas, spname); rendElem.width = (int)sp.rect.size.x; rendElem.height = (int)sp.rect.size.y; _elemRenderArr.Add(rendElem); } else if (elem.type == RichType.ANIM) { LRichElementAnim elemAnim = elem as LRichElementAnim; LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.ANIM; rendElem.path = elemAnim.path; rendElem.data = elemAnim.data; rendElem.fs = elemAnim.fs; string atlas = System.IO.Path.GetDirectoryName(rendElem.path); string spname = System.IO.Path.GetFileName(rendElem.path); Sprite sp = LLoadBundle.GetInstance().GetSpriteByName(atlas, spname); rendElem.width = (int)sp.rect.size.x; rendElem.height = (int)sp.rect.size.y; _elemRenderArr.Add(rendElem); } else if (elem.type == RichType.NEWLINE) { LRenderElement rendElem = new LRenderElement(); rendElem.isNewLine = true; rendElem.type = RichType.NEWLINE; _elemRenderArr.Add(rendElem); } } _richElements.Clear(); formatRenderers(); }
public void reloadData(float newElemOffset = 3.5f) { this.removeAllElements(); RectTransform rtran = this.GetComponent <RectTransform>(); //align switch (alignType) { default: case RichAlignType.LEFT_TOP: rtran.GetComponent <RectTransform>().pivot = new Vector2(0f, 1f); break; case RichAlignType.DESIGN_CENTER: rtran.GetComponent <RectTransform>().pivot = new Vector2(0.5f, 0.5f); break; case RichAlignType.RIGHT_BOTTOM: rtran.GetComponent <RectTransform>().pivot = new Vector2(1f, 0f); break; case RichAlignType.LEFT_BOTTOM: rtran.GetComponent <RectTransform>().pivot = new Vector2(0f, 0f); break; } for (int i = 0; i < _richElements.Count; i++) { LRichElement elem = _richElements[i]; if (elem.type == RichType.TEXT) { LRichElementText elemText = elem as LRichElementText; char[] _charArr = elemText.txt.ToCharArray(); TextGenerator gen = new TextGenerator(); for (int j = 0; j < _charArr.Length; j++) { char strChar = _charArr[j]; LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.TEXT; rendElem.strChar = strChar.ToString(); rendElem.isOutLine = elemText.isOutLine; rendElem.isUnderLine = elemText.isUnderLine; rendElem.font = this.font; rendElem.fontSize = elemText.fontSize; rendElem.data = elemText.data; float r = elemText.color.r, g = elemText.color.g, b = elemText.color.b; if (r > 1) { r = r / 255f; } if (g > 1) { g = g / 255f; } if (b > 1) { b = b / 255f; } rendElem.color = new Color(r, g, b); TextGenerationSettings setting = new TextGenerationSettings(); setting.font = this.font; setting.fontSize = elemText.fontSize; setting.lineSpacing = 1; //setting.scaleFactor = 1; setting.verticalOverflow = VerticalWrapMode.Overflow; setting.horizontalOverflow = HorizontalWrapMode.Overflow; rendElem.width = (int)gen.GetPreferredWidth(rendElem.strChar, setting); rendElem.height = (int)gen.GetPreferredHeight(rendElem.strChar, setting); _elemRenderArr.Add(rendElem); } } else if (elem.type == RichType.IMAGE) { LRichElementImage elemImg = elem as LRichElementImage; LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.IMAGE; rendElem.path = elemImg.path; rendElem.data = elemImg.data; Sprite sp = GAMEAPI.ABUI_LoadSprite(rendElem.path); rendElem.width = (int)sp.rect.size.x; rendElem.height = (int)sp.rect.size.y; _elemRenderArr.Add(rendElem); } else if (elem.type == RichType.ANIM) { LRichElementAnim elemAnim = elem as LRichElementAnim; LRenderElement rendElem = new LRenderElement(); rendElem.type = RichType.ANIM; rendElem.path = elemAnim.path; rendElem.data = elemAnim.data; rendElem.fs = elemAnim.fs; Sprite sp = GAMEAPI.ABUI_LoadSprite(rendElem.path + "/1"); rendElem.width = (int)sp.rect.size.x; rendElem.height = (int)sp.rect.size.y; _elemRenderArr.Add(rendElem); } else if (elem.type == RichType.NEWLINE) { LRenderElement rendElem = new LRenderElement(); rendElem.isNewLine = true; _elemRenderArr.Add(rendElem); } } _richElements.Clear(); formarRenderers(newElemOffset); }