43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
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();
|
||
}
|
||
} |