Unity - 竖行文本逐字显示
简单测了下 还可以
效果:
代码:
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System;
using System.Text.RegularExpressions;
[ExecuteInEditMode]
public class VerticalText : BaseMeshEffect
{
public float spacing = 1.05f;
private float lineSpacing = 1;
private float textSpacing = 1;
private float xOffset = 0;
private float yOffset = 0;
private string content = string.Empty;
private Action endAciton = null;
public override void ModifyMesh(VertexHelper helper)
{
if (!IsActive())
return;
List<UIVertex> verts = new List<UIVertex>();
helper.GetUIVertexStream(verts);
Text text = GetComponent<Text>();
TextGenerator tg = text.cachedTextGenerator;
lineSpacing = text.fontSize * text.lineSpacing;
textSpacing = text.fontSize * spacing;
xOffset = text.rectTransform.sizeDelta.x / 2 - text.fontSize / 2;
yOffset = text.rectTransform.sizeDelta.y / 2 - text.fontSize / 2;
List<UILineInfo> lines = new List<UILineInfo>();
tg.GetLines(lines);
for (int i = 0; i < lines.Count; i++)
{
UILineInfo line = lines[i];
int startIndex = line.startCharIdx;
if (i + 1 < lines.Count)
{
UILineInfo line2 = lines[i + 1];
int current = 0;
bool isStart = false;
for (int j = startIndex; j < line2.startCharIdx - 1; j++)
{
if (text.text[j].Equals('>'))
{
isStart = false;
continue;