UGUI Text 重写Spacing字体间距

2024-03-11 18:36

本文主要是介绍UGUI Text 重写Spacing字体间距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

using UnityEngine;
using UnityEngine.UI;[AddComponentMenu("UI/Effect/UGUITextSpacing")]
[RequireComponent(typeof(UnityEngine.UI.Text))]//Text组件是必须的
public class UGUITextSpacing : BaseMeshEffect
{public enum HorizontalAligmentType{Left,Center,Right}public float fSpacing = 1.0f;public override void ModifyMesh(VertexHelper vh){//一个文字有4个顶点  4个顶点组成两个三角面  如果顶点少于4个 说明text内容为空 就没必要去做字间距调整了if (!IsActive() || vh.currentVertCount < 4 || fSpacing == 0){return;}Text cText = transform.GetComponent<Text>();// 对齐方式,对于不同的对齐方式 对文字顶点的坐标偏移值计算方式不同HorizontalAligmentType alignment;if (cText.alignment == TextAnchor.LowerLeft || cText.alignment == TextAnchor.MiddleLeft || cText.alignment == TextAnchor.UpperLeft){alignment = HorizontalAligmentType.Left;}else if (cText.alignment == TextAnchor.LowerCenter || cText.alignment == TextAnchor.MiddleCenter || cText.alignment == TextAnchor.UpperCenter){alignment = HorizontalAligmentType.Center;}else{alignment = HorizontalAligmentType.Right;}int nWordCount = vh.currentVertCount / 4;//总字数//总的字间距偏移值float fTotalSpace = (nWordCount - 1) * fSpacing;float fOffsetX = 0.0f;UIVertex vertex = new UIVertex();for (int index = 0; index < nWordCount; index++){if (alignment == HorizontalAligmentType.Left){//左对齐的话 相当于对于每个字 坐标往右偏移对应字间距值  第一个字不用偏移 fOffsetX = index * fSpacing;}else if (alignment == HorizontalAligmentType.Right){//和左对齐类似fOffsetX = index * fSpacing  - fTotalSpace;}else if (alignment == HorizontalAligmentType.Center){//居中对齐 类似左对齐之后 整体往左偏移总字间距的50% 那么在计算的时候直接减50%总字间距就好了fOffsetX = index * fSpacing - fTotalSpace / 2;}for (int pIndex = 0; pIndex < 4; pIndex++){int nVerticeIndex = index * 4 + pIndex;//对应索引vh.PopulateUIVertex(ref vertex, nVerticeIndex);//取出对应对应索引的顶点vertex.position += new Vector3(fOffsetX, 0, 0);//顶点偏移vh.SetUIVertex(vertex, nVerticeIndex);//更新下顶点坐标信息}}}
}

这篇关于UGUI Text 重写Spacing字体间距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798683

相关文章

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

什么是LED智能会议一体机?COB超微小间距LED会议一体机大势所趋

LED智能会议一体机,作为现代会议室革新的核心装备,正逐步颠覆传统会议模式的界限。它不仅仅是一台集成了高清显示、触控互动、音视频处理及远程协作等功能于一体的智能设备,更是推动会议效率与体验双重飞跃的关键力量。随着技术的不断进步,特别是COB(Chip On Board)超微小间距LED技术的引入,LED智能会议一体机正迎来前所未有的发展机遇,成为大势所趋。 COB技术通过将LED芯片直接封装在基

全倒装COB超微小间距LED显示屏的工艺技术,相比SMD小间距有何优势

全倒装COB(Chip On Board)超微小间距LED显示屏,在工艺技术上的革新,相较于传统的SMD(Surface Mount Device)小间距LED显示屏,展现出了多方面的显著优势。 首先,全倒装技术极大地提升了LED芯片的散热性能。通过将芯片直接焊接在基板上,减少了热阻,使得热量能够更快速地传导至基板并散发出去,有效避免了因高温导致的光衰和色彩偏移问题,从而保证了显示屏的长期稳定性

【ReactJS】困惑于text/babel与browser.js还是babel.js?

使用JSX   使用JSX,可以极大的简化React元素的创建,JSX抽象化了React.createElement()函数的使用,其语法风格类似于HTML语法风格。对比如下代码可以让你更好的理解这一点。 // 使用React.createElement()return React.createElement('div',null,'Hello',this.props.name);//使用J

【超简单】1分钟解决ppt全文字体一键设置

省流 ppt的全部字体需要在“幻灯片母版”里面,“自定义字体”去设置好标题与正文的字体之后才算全部设置完毕 “视图”---“幻灯片母版” 找到“字体”---“自定义字体” 设置好中文和西文的字体,都可以按照自己的选择来,保存即可 吐槽 之所以发这么一个基础的帖子是因为,之前全网到处搜都没看到成功设置了的,其实才发现在自定义里面得多一步这个才可以,还好早发现了,希望能

UIFrameWork-基于UGUI-如何比较设计优劣

一、简化需求 1、从界面1打开界面2,屏蔽界面1事件响应。 2、关闭界面2,恢复界面1的事件响应。 二、暴力方案 1、对象1设置屏蔽自身事件响应,对象1通知对象2显示。 2、对象1设置恢复自身事件响应,对象2通知对象1显示。 三、UIFrameWork方案 1、对象1通知管理器对象要打开的界面信息(字符串),管理器对象通知对象1屏蔽事件响应,管理器通知对象2显示。 2、对象2通知管

UGUI 背景自适应文本框

需求 UGUI背景自适应文本框UGUI背景图片随文本框长度变化 解决方案 仅文本框宽度自适应 背景节点配置: 背景节点下的Text子节点配置: 文本框宽高自适应 将Vertical Fit设置为Preferred Size 将Child Controls Size Height选项勾上

Ext重写手法

常用的几种方式:1、Ext.apply()和Ext.applyIf()2、Ext.override()3、想做某个类大的修改,可以把该类单独从源码中拿出来,直接修改,然后引用时先应用ext-all.js,再引用从源码中拿出修改的那个类4、obj.prototype.method=function(){}

Android:EditText在hint字体大小和text字体大小不一致时的设置方法

今天碰到一个需求,有一个输入框EditText,要求输入某项金额,要求在未输入文字之前,hint提示,输入文字之后显示输入的文字,要求是未输入内容时hint字体大小为14sp,输入金额之后字体大小要变成30sp。,可是EditText本身没有这个属性可以设置,怎么办呢,只有在代码中添加监听事件了: /*** 添加监听,在hint时和text时切换字体大小*/cetMoney.addTextCha

【字体反爬虫】woff字体反爬虫实战

目标:http://www.porters.vip/confusion/movie.html 目标是抓取用户评分,评分人数,累计票房,三个字段。简单一看很简单是不是,我们查看源代码,发现不是那么容易。 跟我们看到的并非如此啊。这是什么操作,仔细分析网络请求,我们发现这是使用了字体反爬虫的技术,那么我们如何破解呢? 首先我们得用网络请求这个字体文件,然后下载下来。 woff_url