DCS/ruiyiweiUX/Assets/GeneralTools/Scripts/Always/Text/CustomText.cs

43 lines
1.3 KiB
C#
Raw Normal View History

2026-06-09 13:59:11 +08:00
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;
public class CustomText : Text
{
private readonly string mArkList = @"(\|\|\|\。|\《|\》|\|\|\“|\|\、|\|\+|\-)";
public override void SetVerticesDirty()
{
var settings = GetGenerationSettings(rectTransform.rect.size);
cachedTextGenerator.Populate(text, settings);
StringBuilder stringBuilder = new StringBuilder(text);
IList<UILineInfo> lineList = cachedTextGenerator.lines;
int changeIndex = -1;
for (int i = 1; i < lineList.Count; i++)
{
bool isMark = Regex.IsMatch(text[lineList[i].startCharIdx].ToString(), mArkList);
if (isMark)
{
bool b = Regex.IsMatch(text[lineList[i].startCharIdx].ToString(), mArkList);
if (b)
{
changeIndex = lineList[i].startCharIdx - 1;
break;
}
}
}
if (changeIndex >= 0)
{
stringBuilder.Insert(changeIndex, '\n');
text = stringBuilder.ToString();
}
base.SetVerticesDirty();
}
}