关于UGUI之修改Text字间距
来源:互联网 发布:韩国妹子活好吗 知乎 编辑:程序博客网 时间:2024/06/01 09:13
using UnityEngine;using System.Collections;using UnityEngine.UI;using System;using System.Collections.Generic;using System.IO;using System.Text;[AddComponentMenu("UI/Effects/TextSpacing")]public class TextSpacing : BaseMeshEffect{ //Font public string Font = ""; //数字间隔 public float _textSpacing = 1f; //字符默认 size //[SerializeField] public float DefaultSize = 32f; //字符当前 size public float CurrentSize = 32f; public override void ModifyMesh(VertexHelper vh) { if (!IsActive() || vh.currentVertCount == 0) { return; } List<UIVertex> vertexs = new List<UIVertex>(); vh.GetUIVertexStream(vertexs); int indexCount = vh.currentIndexCount; Debug.Log("Bug测试" + indexCount+" --- "+ gameObject.GetComponent<Text>().text); UIVertex vt; for (int i = 6; i < indexCount; i++) { //第一个字不用改变位置 vt = vertexs[i]; vt.position += new Vector3(_textSpacing * (i / 6), 0, 0); vertexs[i] = vt; //以下注意点与索引的对应关系 if (i % 6 <= 2) { vh.SetUIVertex(vt, (i / 6) * 4 + i % 6); } if (i % 6 == 4) { vh.SetUIVertex(vt, (i / 6) * 4 + i % 6 - 1); } } if (DefaultSize == 0) { gameObject.transform.localScale = Vector3.one; } else { gameObject.transform.localScale = new Vector3(CurrentSize / DefaultSize, CurrentSize / DefaultSize, CurrentSize / DefaultSize); } Font = gameObject.GetComponent<Text>().font.name; }}
以上内容借鉴UGUI之修改Text字间距,一个字符会生成6个顶点,6个顶点构成2个三角面
using System.Collections.Generic;using System.Linq;using UnityEngine;using UnityEngine.UI;public class UIVertexOptimize : BaseMeshEffect{ struct Triangle { public UIVertex v1; public UIVertex v2; public UIVertex v3; } List<UIVertex> verts = new List<UIVertex>(); public override void ModifyMesh(VertexHelper vh) { vh.GetUIVertexStream(verts); Debug.Log(verts.Count); OptimizeVert(ref verts); Debug.Log(verts.Count); vh.Clear(); vh.AddUIVertexTriangleStream(verts); } void OptimizeVert(ref List<UIVertex> vertices) { List<Triangle> tris = new List<Triangle>(); for (int i = 0; i < vertices.Count - 3; i += 3) { tris.Add(new Triangle() { v1 = vertices[i], v2 = vertices[i + 1], v3 = vertices[i + 2] }); } vertices = tris.Distinct().SelectMany(tri => new[]{ tri.v1, tri.v2, tri.v3 }).ToList(); }}以上内容借鉴UGUI Text富文本的顶点数优化
注意若Text挂在 修改间距脚本的同时添加OutLine组件,脚本在上OutLine组件在下,不然会发生越界,(好像是OutLine组件会将文本定点数乘以5)
阅读全文
0 0
- 关于UGUI之修改Text字间距
- UGUI之修改Text字间距
- UGUI之修改Text字间距
- UGUI修改Text组件字间距代码
- UGUI之Text彩虹字
- 关于Portlet 间距修改
- Unity UGUI基础之Text
- UGUI之Text组件详解
- unity4.6 Ugui中文教程之UGUI Rich Text详解
- UGUI - Text
- UGUI系统学习之Text控件
- UGUI之Text镜像效果
- UGUI之Text对齐至格子
- UGUI研究院之Text文本渐变
- UGUI源码学习之初涉Text(二)
- UGUI研究院之Text文本渐变(十一)
- UGUI研究院之Text文本渐变(十一)
- UGUI Text Gradient
- Java并发工具包使用指南(全)
- 记一次阿里电面
- switch
- redis的monitor升级及监控配置项优化
- appium 自动化测试之知乎Android客户端
- 关于UGUI之修改Text字间距
- My Debug 01
- Lucene:全文检索工具
- Android学习使用PorterDuff.Mode
- uva 230 Borrowers
- es 监控 系统 bigdesk
- Java实现爬虫给App提供数据(Jsoup 网络爬虫)
- “青涩不及当初,聚散不由你我”
- 【数据结构】双向链表实现