protected void DoAddText(string text, string hrefb, string hrefColor, string hrefEnable, bool isTitle, bool limitReplace) { if (!limitReplace && 行数限制 > 0 && mNowLineCount >= 行数限制) { return; } UILabel lbl = null; UIFont font = UIResourceManager.LoadFont(FontType); int fontSize = mFontSizeTagStack.Peek(); Color color = mFontColorTagStack.Peek(); UILabelEffect effect = mFontEffectTagStack.Peek(); if (isTitle) { if (string.IsNullOrEmpty(hrefb)) { lbl = UIViewHelper.AddUILabel(底板.gameObject, FontType, fontSize, color); } else { UIHyperLinkLabel linkLbl = UIViewHelper.AddHyperLinkLabel(底板.gameObject, FontType, fontSize, color); linkLbl.OnHyperLinkClicked += OnLinkClicked; linkLbl.LinkDataSource = hrefb; linkLbl.UnderLineColor = hrefColor; linkLbl.LinkDataEnable = hrefEnable; lbl = linkLbl; } Vector2 showSize = new Vector2(lbl.width, lbl.height); lbl.overflowMethod = CalcTextSize(ref showSize); if (effect.type != UILabel.Effect.None) { lbl.effectStyle = effect.type; lbl.effectDistance = effect.dist; lbl.effectColor = effect.color; } lbl.depth = 层级 + 11; lbl.text = text; if (mNowWritePos.x > 0) { DoChangeLine(); } float x = 0; lbl.transform.localPosition = new Vector3(x, mNowWritePos.y - lbl.height * 0.5f); //OnUnitAdded(lbl); DoChangeLine(); } else { UILabel.Overflow overflow = UILabel.Overflow.ResizeFreely; Vector2 showSize = Vector2.zero; if (自动换行) { if (视图尺寸.x < fontSize) { Debug.LogError("富文本设置为自动换行后,视图尺寸至少大于等于一个字的宽度"); return; } string nextLineText = ""; string splitText = text; showSize = CalcTextPrintSize(splitText, font.dynamicFont, fontSize, FontStyle.Normal, true, 1000000, 1000000); overflow = CalcTextSize(ref showSize); float canUseSpace = CalcNowLineCanUsedSpace(); if (showSize.x > canUseSpace) { while (showSize.x > canUseSpace) { for (int i = text.Length - 1; i >= 0; --i) { splitText = splitText.Substring(0, i); showSize = CalcTextPrintSize(splitText, font.dynamicFont, fontSize, FontStyle.Normal, true, 1000000, 1000000); overflow = CalcTextSize(ref showSize); if (showSize.x <= canUseSpace) { break; } } if (string.IsNullOrEmpty(splitText)) { if (DoChangeLine()) { DoAddText(text, hrefb, hrefColor, hrefEnable, false); } return; } } nextLineText = text.Substring(splitText.Length); DoAddText(splitText, hrefb, hrefColor, hrefEnable, false); if (DoChangeLine()) { DoAddText(nextLineText, hrefb, hrefColor, hrefEnable, false); } return; } } if (string.IsNullOrEmpty(hrefb)) { lbl = UIViewHelper.AddUILabel(底板.gameObject, FontType, fontSize, color); } else { UIHyperLinkLabel linkLbl = UIViewHelper.AddHyperLinkLabel(底板.gameObject, FontType, fontSize, color); linkLbl.OnHyperLinkClicked += OnLinkClicked; linkLbl.LinkDataSource = hrefb; linkLbl.UnderLineColor = hrefColor; linkLbl.LinkDataEnable = hrefEnable; lbl = linkLbl; } lbl.width = (int)showSize.x; lbl.height = (int)showSize.y; lbl.overflowMethod = overflow; if (effect.type != UILabel.Effect.None) { lbl.effectStyle = effect.type; lbl.effectDistance = effect.dist; lbl.effectColor = effect.color; } lbl.depth = 层级 + 11; lbl.text = text; Vector3 pos = new Vector3(mNowWritePos.x - (视图尺寸.x - (float)lbl.width) * 0.5f, mNowWritePos.y - lbl.height * 0.5f); lbl.transform.localPosition = pos; OnUnitAdded(lbl); } }