Unity竖排文字的实现(2019以上新版本可用)
竖排文字网络上主要的实现方式有两种
第一种是对数据进行处理,横转竖排,空格占位。
第二种是重新绘制mesh,重写ModifyMesh方法。
为了一步到位,选择了第二种,但是之前网上的方法,在2019版本上用是报错的,不能支持换行等。这是因为新版unity对text的顶点数管理发生了升级。没办法,只好自己搞一个。顺便支持一下简单的html格式,比如变换颜色,换行,换行变颜色等一些需求,毕竟项目中都要用。
下面这个是老版的报错信息,
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
顶点数对不上啦。
不多说了,贴一些代码
public override void ModifyMesh(VertexHelper helper)
{
if (!IsActive())
return;
List<UIVertex> verts = new List<UIVertex>();
helper.GetUIVertexStream(verts);
Text text = GetComponent<Text>();
string realText = GetStringNoHtml(text.text);
TextGenerator tg = text.cachedTextGenerator;
lineSpacing = text.fontSize * text.lineSpacing;
textSpacing = text.fontSize * spacing;
xOffset = text.rectTransform.sizeDelta.x / 2 - text.fontSize / 2;
yOffset = text.rectTransform.sizeDelta.y / 2 - text.fontSize / 2;
List<UILineInfo> lines = new List<UILineInfo>();
tg.GetLines(lines);
int needDelNum = 0;
for (int i = 0; i < lines.Count; i++)
{
UILineInfo line = lines[i];
int step = i;
int current = 0;
int endCharIdx = (i + 1 == lines.Count) ? tg.characterCountVisible : lines[i + 1].startCharIdx;
for (int j = line.startCharIdx; j < endCharIdx; j++)
{
bool isMatch = Regex.IsMatch(text.text[j].ToString(), strRegex);
bool isShow = (realText.Length > j - needDelNum) &&
text.text[j].ToString() == realText[j - needDelNum].ToString();
if (!isMatch && isShow)
{
modifyText(helper, j - needDelNum, current++, step);
}
else
{
needDelNum++;
if (isMatch)
{
break;
}
}
}
}
}
效果图如下:
整个可运行的工程,请移步下面的链接。我打成了一个包直接传了。
Unity竖排文字的实现(2019以上新版本可用)-C#文档类资源-CSDN下载
Unity竖排文字的实现(2019以上新版本可用)相关推荐
- 超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M
整理 | AI科技大本营 光学字符识别(OCR)技术已经得到了广泛应用.比如发票上用来识别关键字样,搜题App用来识别书本上的试题. 近期,这个叫做chineseocr_lite的OCR项目开源了,这 ...
- Github标星3K+,超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 光学字符识别(OCR)技术已经得到了广泛应用.比如发票上用来识别关键字样,搜题Ap ...
- c4d fbx大小_C4D一键竖排文字预设 建模辅助
想要快速查找设计资源,关注AN素材库 资源大小:5.42M 插件名称: C4D一键竖排文字预设作用分类: 文字设计插件分类: 预设使用教程: 无教程支持版本: R12 R13 R14 R15 R16 ...
- 微信图片怎么添加竖排文字_轻松设置微信竖排昵称
原标题:轻松设置微信竖排昵称 今天给大家带来两个微信小技巧,一个是如何快速设置竖排昵称,一个是微信模糊消息的代码! ▍霸屏模糊文字代码 先看效果吧! 刚发到群里,就引起了一阵骚动,这种将文字模糊以后的 ...
- word里文字竖向排列(设置竖排文字)
word里文字竖向排列(设置竖排文字) 目录 word里文字竖向排列(设置竖排文字) 1.整篇的文字需要竖排,点击菜单栏中[页面布局][文字方向] 2.如果想要部分文字竖排 ,首先选中文字,点击菜单栏 ...
- java如何数字竖排输出_Java输出竖排文字
输出竖排文字,可以作为签名档: ╔ ═╦ ═╦ ═╦ ═╗ ║不║皇║一║天║ ║胜║图║入║下║ ║人║霸║江║风║ ║生║业║湖║云║ ║一║谈║岁║出║ ║场║笑║月║我║ ║醉║中║催║辈║ ...
- CAD怎么打出这种竖排文字
在CAD中输入文字多半是横排的,但是有时也需要输入竖排的文字.那么这种竖排的文字应该怎么样去绘制出来呢?这里有两种方式可以解决 问题:竖排文字 解决方式 第一种:单行文字 1.点击软件左边单行文字按钮 ...
- unity Text文字淡入效果
unity Text文字淡入效果 CrossFadeAlpha()方法 先将alpha降为0,再改为1. public Text t;void Start() {t.CrossFadeAlpha(0f ...
- 微信新玩法,只需三步就可以在朋友圈发送竖排文字,好看又酷炫!
很多小伙伴喜欢用微信朋友圈来记录生活中的点点滴滴,那么如何才能让自己的动态在朋友圈中看起来与众不同呢? 今天给小伙伴们分享一个有意思的微信小程序,只需几步就能设置竖排文字,效果超棒,赶快一起学起来吧! ...
- Unity Text文字超框,末尾显示‘...’省略号
参考博客Unity 实现文字过长显示省略号, // 超框显示...public static void SetTextWithEllipsis(this Text textComponent, str ...
最新文章
- 浅谈数据库优化方案--表和SQL
- rdf mysql持久化l_Redis进阶(数据持久化RDF和AOF)
- profile之springboot
- c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手
- 如何通过CSS开启硬件加速来提高网站性能
- strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur
- 保护系统 用数据库加密实现数据安全
- 面试 | 阿里P7级别程序猿亲身告知,不会面试,还想进大厂?做梦吧
- ros创建工作空间_ROS 初级 - 安装和配置 ROS 环境
- 险些被吓到!白宇代言新品万元荣耀8X售价原因揭秘
- Trick(三)——循环左移的实现
- 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
- Java文件的写入与读出
- 美团杀熟?背后到底利用大数据做了些什么?
- 2022年11月信息系统项目管理师考试论文相关内容预测
- Gauss-Seidel迭代法解线性方程组
- Github+Jekyll —— 创建个人免费博客(四)jekyll第一个页面
- 雅可比迭代,高斯-赛德尔迭代
- CSS样式自动换行(总结)
- 如何正确的设置使用代理IP?