using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;
public class AvoidPunctuation : Text{
//避头点,每行第一一个文字不出现标点,继承Text
public string CullList = @"\!|\?|\,|\。|\《|\》|\)|\:|\“|\”|\‘|\’|\、|\;|\+|\-";
public IList<UILineInfo> lineInfos;
public StringBuilder stringBuilder;
public override void SetVerticesDirty() {
base.SetVerticesDirty();
stringBuilder = new StringBuilder(text);
lineInfos = cachedTextGenerator.lines;
if (text.Length<=0)
return;
foreach (var i in lineInfos) {
bool isMach = Regex.IsMatch(text[i.startCharIdx].ToString(), CullList);
if (isMach) {
if (i.startCharIdx <= 0)
continue;
stringBuilder.Insert(i.startCharIdx - 1, "*****"); } }
this.text = stringBuilder.ToString();
}}
UGUI采用脏标记系统,只要控件被标记为“脏”状态,就会强制刷新一遍,在每次改变了顶点或者纹理后,调用SetVerticesDirty() 或 SetMaterialDirty()即可