Unity UGUI Text竖排显示

2023-10-24 10:30
文章标签 显示 unity text ugui 竖排

本文主要是介绍Unity UGUI Text竖排显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发项目中偶尔会用到竖排显示字体,因为原生的UGUI没有这个功能,自己就结合一些网上资料整理写一个UI组件TextVirtical。
在Canvas下点击右键UI里找到TextVirtical创建即可

核心代码:

[AddComponentMenu("UI/TextVirtical", 10)]
public class TextVirtical : Text
{public bool IsVirtical = true;private float lineSpace = 1;private float textSpace = 1;private float xOffset = 0;private float yOffset = 0;protected override void OnPopulateMesh(VertexHelper toFill){base.OnPopulateMesh(toFill);if (IsVirtical){VirticalText(toFill);}}private void VirticalText(VertexHelper toFill){if (!IsActive())return;lineSpace = fontSize * lineSpacing;textSpace = fontSize * lineSpacing;xOffset = rectTransform.sizeDelta.x / 2 - fontSize / 2;yOffset = rectTransform.sizeDelta.y / 2 - fontSize / 2;for (int i = 0; i < cachedTextGenerator.lines.Count; i++){UILineInfo line = cachedTextGenerator.lines[i];int step = i;if (i + 1 < cachedTextGenerator.lines.Count){UILineInfo line2 = cachedTextGenerator.lines[i + 1];int current = 0;for (int j = line.startCharIdx; j < line2.startCharIdx - 1; j++){modifyText(toFill, j, current++, step);}}else if (i + 1 == cachedTextGenerator.lines.Count){int current = 0;for (int j = line.startCharIdx; j < cachedTextGenerator.characterCountVisible; j++){modifyText(toFill, j, current++, step);}}}}void modifyText(VertexHelper helper, int i, int charYPos, int charXPos){UIVertex lb = new UIVertex();helper.PopulateUIVertex(ref lb, i * 4);UIVertex lt = new UIVertex();helper.PopulateUIVertex(ref lt, i * 4 + 1);UIVertex rt = new UIVertex();helper.PopulateUIVertex(ref rt, i * 4 + 2);UIVertex rb = new UIVertex();helper.PopulateUIVertex(ref rb, i * 4 + 3);Vector3 center = Vector3.Lerp(lb.position, rt.position, 0.5f);Matrix4x4 move = Matrix4x4.TRS(-center, Quaternion.identity, Vector3.one);float x = -charXPos * lineSpace + xOffset;float y = -charYPos * textSpace + yOffset;Vector3 pos = new Vector3(x, y, 0);Matrix4x4 place = Matrix4x4.TRS(pos, Quaternion.identity, Vector3.one);Matrix4x4 transform = place * move;lb.position = transform.MultiplyPoint(lb.position);lt.position = transform.MultiplyPoint(lt.position);rt.position = transform.MultiplyPoint(rt.position);rb.position = transform.MultiplyPoint(rb.position);helper.SetUIVertex(lb, i * 4);helper.SetUIVertex(lt, i * 4 + 1);helper.SetUIVertex(rt, i * 4 + 2);helper.SetUIVertex(rb, i * 4 + 3);}
}

}`

自己整理一个package地址:链接:https://pan.baidu.com/s/1YDf3ireTh2n3ZVf4Js581A 提取码:p7sz
使用方式: 在导入package后在Canvas下点击鼠标右键UI里找到TextVirtical创建即可

这篇关于Unity UGUI Text竖排显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

C#实现SHP文件读取与地图显示的完整教程

《C#实现SHP文件读取与地图显示的完整教程》在地理信息系统(GIS)开发中,SHP文件是一种常见的矢量数据格式,本文将详细介绍如何使用C#读取SHP文件并实现地图显示功能,包括坐标转换、图形渲染、平... 目录概述功能特点核心代码解析1. 文件读取与初始化2. 坐标转换3. 图形绘制4. 地图交互功能缩放

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL