竖排文字网络上主要的实现方式有两种

第一种是对数据进行处理,横转竖排,空格占位。

第二种是重新绘制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以上新版本可用)相关推荐

  1. 超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M

    整理 | AI科技大本营 光学字符识别(OCR)技术已经得到了广泛应用.比如发票上用来识别关键字样,搜题App用来识别书本上的试题. 近期,这个叫做chineseocr_lite的OCR项目开源了,这 ...

  2. Github标星3K+,超轻量级中文OCR,支持竖排文字识别、ncnn推理,总模型仅17M

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 光学字符识别(OCR)技术已经得到了广泛应用.比如发票上用来识别关键字样,搜题Ap ...

  3. c4d fbx大小_C4D一键竖排文字预设 建模辅助

    想要快速查找设计资源,关注AN素材库 资源大小:5.42M 插件名称: C4D一键竖排文字预设作用分类: 文字设计插件分类: 预设使用教程: 无教程支持版本: R12 R13 R14 R15 R16 ...

  4. 微信图片怎么添加竖排文字_轻松设置微信竖排昵称

    原标题:轻松设置微信竖排昵称 今天给大家带来两个微信小技巧,一个是如何快速设置竖排昵称,一个是微信模糊消息的代码! ▍霸屏模糊文字代码 先看效果吧! 刚发到群里,就引起了一阵骚动,这种将文字模糊以后的 ...

  5. word里文字竖向排列(设置竖排文字)

    word里文字竖向排列(设置竖排文字) 目录 word里文字竖向排列(设置竖排文字) 1.整篇的文字需要竖排,点击菜单栏中[页面布局][文字方向] 2.如果想要部分文字竖排 ,首先选中文字,点击菜单栏 ...

  6. java如何数字竖排输出_Java输出竖排文字

    输出竖排文字,可以作为签名档: ╔ ═╦ ═╦ ═╦ ═╗ ║不║皇║一║天║ ║胜║图║入║下║ ║人║霸║江║风║ ║生║业║湖║云║ ║一║谈║岁║出║ ║场║笑║月║我║ ║醉║中║催║辈║ ...

  7. CAD怎么打出这种竖排文字

    在CAD中输入文字多半是横排的,但是有时也需要输入竖排的文字.那么这种竖排的文字应该怎么样去绘制出来呢?这里有两种方式可以解决 问题:竖排文字 解决方式 第一种:单行文字 1.点击软件左边单行文字按钮 ...

  8. unity Text文字淡入效果

    unity Text文字淡入效果 CrossFadeAlpha()方法 先将alpha降为0,再改为1. public Text t;void Start() {t.CrossFadeAlpha(0f ...

  9. 微信新玩法,只需三步就可以在朋友圈发送竖排文字,好看又酷炫!

    很多小伙伴喜欢用微信朋友圈来记录生活中的点点滴滴,那么如何才能让自己的动态在朋友圈中看起来与众不同呢? 今天给小伙伴们分享一个有意思的微信小程序,只需几步就能设置竖排文字,效果超棒,赶快一起学起来吧! ...

  10. Unity Text文字超框,末尾显示‘...’省略号

    参考博客Unity 实现文字过长显示省略号, // 超框显示...public static void SetTextWithEllipsis(this Text textComponent, str ...

最新文章

  1. 浅谈数据库优化方案--表和SQL
  2. rdf mysql持久化l_Redis进阶(数据持久化RDF和AOF)
  3. profile之springboot
  4. c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手
  5. 如何通过CSS开启硬件加速来提高网站性能
  6. strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur
  7. 保护系统 用数据库加密实现数据安全
  8. 面试 | 阿里P7级别程序猿亲身告知,不会面试,还想进大厂?做梦吧
  9. ros创建工作空间_ROS 初级 - 安装和配置 ROS 环境
  10. 险些被吓到!白宇代言新品万元荣耀8X售价原因揭秘
  11. Trick(三)——循环左移的实现
  12. 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
  13. Java文件的写入与读出
  14. 美团杀熟?背后到底利用大数据做了些什么?
  15. 2022年11月信息系统项目管理师考试论文相关内容预测
  16. Gauss-Seidel迭代法解线性方程组
  17. Github+Jekyll —— 创建个人免费博客(四)jekyll第一个页面
  18. 雅可比迭代,高斯-赛德尔迭代
  19. CSS样式自动换行(总结)
  20. 如何正确的设置使用代理IP?

热门文章

  1. 华为路由器IPv6 over IPv4 GRE隧道配置详解
  2. 牛客网小白月赛22计算A+B(题解)
  3. Leetcode—— 5369. 统计作战单位数
  4. 【Linux安装】Win10安装Ubuntu双系统(含BIOS操作)
  5. 2021年6月1日大学化学无机原理(12)——第六章四个量子数、多电子的核外排布。
  6. scratch 大家来找茬
  7. canvas绘制图片时宽高2倍
  8. 微信支付——委托代扣扣款周期、额度设置说明
  9. 计算机网络hdcp是什么意思,NTSC,HDCP ,NTSC/HDCP是什么意思
  10. PS实现照片水彩画效果