UGUI之Text对齐至格子
来源:互联网 发布:清华大学研究生 知乎 编辑:程序博客网 时间:2024/06/05 06:38
UGUI之Text对齐至格子
背景:前几天有个需求:玩家输入的6位房间ID号,要对齐至背景格子图中,故将前面写的调整Text字间距勉强给boss用了
大致效果如图:
具体脚本代码如下:
using UnityEngine;using System.Collections;using UnityEngine.UI;using System;using System.Collections.Generic;[AddComponentMenu("UI/Effects/TextAlignToGrid")]public class TextAlignToGrid : BaseMeshEffect{ public RectTransform _gridBg; //格子背景 public int _gridNum; //我的格子数为6 private Vector2 _gridSize; //格子大小 private Vector3[] _targetFocusPos; //目标中心点,也就是对应的格子中心点 public override void ModifyMesh(VertexHelper vh) { if (!IsActive() || vh.currentVertCount == 0) { return; } if (_gridBg == null) { Debug.Log("Missing Grid Background"); return; } Text text = GetComponent<Text>(); if (text == null) { Debug.Log("Missing Text component"); return; } _gridSize = _gridBg.sizeDelta; int textLen = text.text.Length; Vector3[] textFocusPos = new Vector3[textLen]; List<UIVertex> vertexs = new List<UIVertex>(); _targetFocusPos = new Vector3[textLen]; vh.GetUIVertexStream(vertexs); //计算text各文字中心点坐标 for (int i = 0; i < textLen; i++) { float x = (vertexs[i * 6].position.x + vertexs[i * 6 + 1].position.x) / 2; float y = (vertexs[i * 6 + 1].position.y + vertexs[i * 6 + 2].position.y) / 2; textFocusPos[i] = new Vector3(x, y, 0); } //根据格子大小_gridSize计算目标中心点 float xOffset = _gridSize.x / _gridNum; for (int i = 0; i < textLen; i++) { float x = (float)(-_gridSize.x / 2 + xOffset * (i + 0.5)); _targetFocusPos[i] = new Vector3(x, 0, 0); } //计算text各顶点新坐标 UIVertex v = new UIVertex(); for (int i = 0; i < vh.currentVertCount; i++) { vh.PopulateUIVertex(ref v, i); float x = v.position.x + _targetFocusPos[i / 4].x - textFocusPos[i / 4].x; float y = v.position.y + _targetFocusPos[i / 4].y - textFocusPos[i / 4].y; v.position = new Vector3(x, y, 0); vh.SetUIVertex(v, i); } }}
1 0
- UGUI之Text对齐至格子
- Unity UGUI基础之Text
- 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文本渐变(十一)
- UGUI研究院之Text文本渐变(十一)
- UGUI Text Gradient
- Unity UGUI--Text组件
- UGUI Text换行问题
- cdoj 1351 柱爷抢银行III
- PHP程序设计读书笔记三
- MySQL笔记-数据库约束条件
- 分类的线性方法
- 【DRP】——servlet
- UGUI之Text对齐至格子
- Javascript算法练习(七)
- Hdu 3694 Fermat Point in Quadrangle(三分)
- hdu 3966 Aragorn's Story 树链剖分 bfs实现(不知道为什么会RE)
- linphone-PresenceNoteImpl文件对应的JNI层文件分析
- 数据查看表结构的三种方式
- Unity触摸操作
- 量化分析师的Python日记【第4天:一大波金融Library来袭之scipy篇】
- 或许,我渐渐懂了父亲