短视频商城源码Unity改变text字间距

CMS系统
0 1093
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using System.Collections.Generic;
namespace FrameWork
{
    /// <summary>
    /// 字体间距
    /// </summary>
    public class TextSpacing : BaseMeshEffect
    {
        public float _textSpacing = 1f;
 
        public override void ModifyMesh(VertexHelper vh)
        {
            if (!IsActive() || vh.currentVertCount == 0)
            {
                return;
            }
 
            Text text = GetComponent<Text>();
            if (text == null)
            {
                Debug.LogError("Missing Text component");
                return;
            }
 
            List<UIVertex> vertexs = new List<UIVertex>();
            vh.GetUIVertexStream(vertexs);
            int indexCount = vh.currentIndexCount;
 
            string[] lineTexts = text.text.Split('\n');
 
            Line[] lines = new Line[lineTexts.Length];
 
            //根据lines数组中各个元素的长度计算每一行中第一个点的索引,每个字、字母、空母均占6个点
            for (int i = 0; i < lines.Length; i++)
            {
                //除最后一行外,vertexs对于前面几行都有回车符占了6个点
                if (i == 0)
                {
                    lines[i] = new Line(0, lineTexts[i].Length + 1);
                }
                else if (i > 0 && i < lines.Length - 1)
                {
                    lines[i] = new Line(lines[i - 1].EndVertexIndex + 1, lineTexts[i].Length + 1);
                }
                else
                {
                    lines[i] = new Line(lines[i - 1].EndVertexIndex + 1, lineTexts[i].Length);
                }
            }
 
            UIVertex vt;
 
            for (int i = 0; i < lines.Length; i++)
            {
                for (int j = lines[i].StartVertexIndex + 6; j <= lines[i].EndVertexIndex; j++)
                {
                    if (j < 0 || j >= vertexs.Count)
                    {
                        continue;
                    }
                    vt = vertexs[j];
                    vt.position += new Vector3(_textSpacing * ((j - lines[i].StartVertexIndex) / 6), 0, 0);
                    vertexs[j] = vt;
                    //以下注意点与索引的对应关系
                    if (j % 6 <= 2)
                    {
                        vh.SetUIVertex(vt, (j / 6) * 4 + j % 6);
                    }
                    if (j % 6 == 4)
                    {
                        vh.SetUIVertex(vt, (j / 6) * 4 + j % 6 - 1);
                    }
                }
            }
        }
    }
}
public class Line
{
 
    private int _startVertexIndex = 0;
    /// <summary>
    /// 起点索引
    /// </summary>
    public int StartVertexIndex
    {
        get
        {
            return _startVertexIndex;
        }
    }
 
    private int _endVertexIndex = 0;
    /// <summary>
    /// 终点索引
    /// </summary>
    public int EndVertexIndex
    {
        get
        {
            return _endVertexIndex;
        }
    }
 
    private int _vertexCount = 0;
 
 
    public Line(int startVertexIndex, int length)
    {
        _startVertexIndex = startVertexIndex;
        _endVertexIndex = length * 6 - 1 + startVertexIndex;
        _vertexCount = length * 6;
    }
}


精选帖子
Android 可可影视 v3.3.6无广告纯净版 2932
Android QQ音乐 v11.3.7 定制版解锁免费听歌无广告版 3500
Android 草图大师SKP v1.5 解锁会员版 8838
Android OmoFun追漫神器 v4.2.1 无广告绿色版 5901
AdobeGenP Adobe全家桶系列激活工具 v3.5.0/3.4.14.1 绿色版 6478
Android 七猫免费听书 v1.4 解锁高级版 4911
超良心的抢票神器——Bypass1.16 4634
Android 玲珑加速器 v6.10.9.40 解锁无限时间 3287
Android 大师兄影视 v3.3.8 去广告会员版 2408
热门帖子
3个月收入25003元,长期稳定Ai任务,新手3天入门 全民可做! 62
卡通知识科普短视频教学|小白轻松上手,打造高赞内容,稳定拿平台收益 52
全流程AI托管,当天做当天出单,单账号轻松日入500+,小白轻松上手 52
拼多多虚拟类目懒人经济新玩法,无需人工值守,机器人自动发货月入 1-5W 50
超强大的AI工具,免费无限制,一键生成原创中视频,单号日入1000+,小白秒上手 48
连电脑都不太会用?AI美女视频课专治小白,1小时从安装到出片,门槛低到没朋友 47
从流量到变现|百万博主实战,一人公司搭建,轻资产放大商业价值 44
OiiOii一键式动画创作:漫画转视频+动漫音乐MV+剧情故事短片全流程实战 44
红果免费短剧 v7.2.1.33 网络短剧观看APP 纯净优化版 43