需求一:text首行需要缩进以达到下图的效果


实现举例:

string context = "\u3000\u3000全省新增境外输入确诊病例1例, 广州报告,来自柬埔寨;另有境外输入无症状感染者转确诊病例1例, 广州报告,来自柬埔寨。新增境外输入无症状感染者5例, 广州报告2例,分别来自美国和刚果金;佛山报告2例,分别来自美国和吉布提;肇庆报告1例,来自乌干达。新增出院3例。";

方法二:在属性面板里面放入这段话,把缩进改一下(这个其实是改变颜色的,这里的意思是把缩进两个字的颜色弄成了透明)(自己把空格删掉哈)

<color=#FFFFFF00>缩进</color>

需求二:text实现通过代码改变某一些字的颜色,可自行改变#FFFFFF00的值来达到想要的颜色(代码同理)(自己把空格删掉哈)

<color=#FFFFFF00>需要改变颜色的内容</color>

无意间发现的这篇博客写的挺好的

需求三:实现text内容间距的调节

// An highlighted block
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class Line
{private int _startVertexIndex = 0;/// <summary>/// 起点索引/// </summary>public int StartVertexIndex{get{return _startVertexIndex;}}private int _endVertexIndex = 0;/// <summary>/// 终点索引/// </summary>public int EndVertexIndex{get{return _endVertexIndex;}}private int _vertexCount = 0;/// <summary>/// 该行占的点数目/// </summary>public int VertexCount{get{return _vertexCount;}}public Line(int startVertexIndex, int length){_startVertexIndex = startVertexIndex;_endVertexIndex = length * 6 - 1 + startVertexIndex;_vertexCount = length * 6;}
}[AddComponentMenu("UI/Effects/TextSpacing")]
public class TextSpacing : BaseMeshEffect
{public float _textSpacing = 1f;public override void ModifyMesh(VertexHelper vh){if (!IsActive() || vh.currentVertCount == 0){return;}Text text = GetComponent<Text>();if (text == null){Debug.LogError("Missing Text component");return;}List<UIVertex> vertexs = new List<UIVertex>();vh.GetUIVertexStream(vertexs);int indexCount = vh.currentIndexCount;string[] lineTexts = text.text.Split('\n');Line[] lines = new Line[lineTexts.Length];//根据lines数组中各个元素的长度计算每一行中第一个点的索引,每个字、字母、空母均占6个点for (int i = 0; i < lines.Length; i++){//除最后一行外,vertexs对于前面几行都有回车符占了6个点if (i == 0){lines[i] = new Line(0, lineTexts[i].Length + 1);}else if (i > 0 && i < lines.Length - 1){lines[i] = new Line(lines[i - 1].EndVertexIndex + 1, lineTexts[i].Length + 1);}else{lines[i] = new Line(lines[i - 1].EndVertexIndex + 1, lineTexts[i].Length);}}UIVertex vt;for (int i = 0; i < lines.Length; i++){Vector3 startPos = Vector3.zero;Vector3 endPos = Vector3.zero;Vector3 defaultStartPos = Vector3.zero;Vector3 defaultEndPos = Vector3.zero;for (int j = lines[i].StartVertexIndex; j <= lines[i].EndVertexIndex; j++){if (j < 0 || j >= vertexs.Count){continue;}vt = vertexs[j];if (defaultStartPos == Vector3.zero){defaultStartPos = new Vector3(vt.position.x, vt.position.y, vt.position.z);}defaultEndPos = new Vector3(vt.position.x, vt.position.y, vt.position.z);if (j != 0){vt.position += new Vector3(_textSpacing * ((j - lines[i].StartVertexIndex) / 6), 0, 0);}if (startPos == Vector3.zero){startPos = new Vector3(vt.position.x, vt.position.y, vt.position.z);}endPos = new Vector3(vt.position.x, vt.position.y, vt.position.z);vertexs[j] = vt;//以下注意点与索引的对应关系if (j % 6 <= 2){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6);}if (j % 6 == 4){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6 - 1);}}if (text.alignment == TextAnchor.MiddleCenter || text.alignment == TextAnchor.UpperCenter || text.alignment == TextAnchor.LowerCenter){Vector3 defaultCenterPos = defaultStartPos + (defaultEndPos - defaultStartPos) / 2;Vector3 centerPos = startPos + (endPos - startPos) / 2;for (int j = lines[i].StartVertexIndex; j <= lines[i].EndVertexIndex; j++){if (j < 0 || j >= vertexs.Count){continue;}vt = vertexs[j];vt.position = vt.position + defaultCenterPos - centerPos;vertexs[j] = vt;//以下注意点与索引的对应关系if (j % 6 <= 2){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6);}if (j % 6 == 4){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6 - 1);}}}if (text.alignment == TextAnchor.MiddleRight || text.alignment == TextAnchor.UpperRight || text.alignment == TextAnchor.LowerRight){Vector3 defaultRightPos = defaultEndPos;Vector3 rightPos = endPos;for (int j = lines[i].StartVertexIndex; j <= lines[i].EndVertexIndex; j++){if (j < 0 || j >= vertexs.Count){continue;}vt = vertexs[j];vt.position = vt.position + defaultRightPos - rightPos;vertexs[j] = vt;//以下注意点与索引的对应关系if (j % 6 <= 2){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6);}if (j % 6 == 4){vh.SetUIVertex(vt, (j / 6) * 4 + j % 6 - 1);}}}}}
}

直接放在有text组件的物体上就可以调节了。
本文仅作为个人笔记。

Unity笔记之UGUI Text首行缩进、改变文本颜色、文本间距调节相关推荐

  1. Unity UGUI Text 首行缩进,空白字符

    Unity UGUI Text 首行缩进,空白字符: 在text中需要空格的地方加入 <color=#FFFFFF00>缩进 就可以了,需要空几格就将"缩进"改为几个字 ...

  2. markdown笔记(一)—— 首行缩进和换行

    首行缩进 全角缩进   // 汉字是全角 半角缩进   // 英文是半角   其实这个挺形象的,m是两个"孔",n是一个"孔".但是不管怎么说,打这么多字去实现 ...

  3. php文本首行缩进,html设置页面文本首行缩进

    text-indent属性介绍 属性值单位:em,1em 就代表缩进1个字,2em缩进2个字...... 注意:text-indent属性的值支持为负数. (相关教程推荐:html入门教程) 演示代码 ...

  4. Unity3D中Text实现首行缩进的办法

    我最近在我的Unity3D软件中出现个莫名其妙的问题, 我解决问题之后,觉得对各位有帮助,方便Unity3D的初学者.UGUI的Text首行缩进方法 1.复制代码<color=#FFFFFF00 ...

  5. CSS入门五:文本样式;字体颜色:英文字母,十六进制,RGB;文本颜色,字间距,行间距,对齐方式;下划线、上划线…,文本阴影,字母大小写,首行缩进

    CSS入门部分已经了解了:CSS简介.样式表分类,内部样式表简单使用:选择器和类选择器简单使用:背景色.背景图:以及外部样式表的简单使用: 本篇博客主要介绍,如何对文本设置,包括字体颜色:字间距,行间 ...

  6. 微信小程序 首行缩进 text 标签 text-indent 不起作用

    一.y微信小程序首行缩进,text标签中text-indent是不起作用的 使用view标签代替text标签,text-indent:2em是可以起到首行缩进作用的. 二.皕杰报表连接数据库失败,请检 ...

  7. html代码文本框首行缩进,如何将HTML页面中的文本设置首行缩进

    text-indent属性介绍 属性值单位 描述 em 比如:1em 就代表缩进1个字,2em缩进2个字...... 由于简单我就不过多的介绍了直接上代码了哦,注意:text-indent属性的值支持 ...

  8. 关于css的text-indent首行缩进两个字符和图片缩进的问题

    段落前面空两个字的距离,不要再使用空格了.应该使用首行缩进text-indent. text-indent可以使得容器内首行缩进一定单位.比如中文段落一般每段前空两个汉字. <style typ ...

  9. live writer不能首行缩进的问题

    live writer的首行缩进很垃圾,用全角空格,会被自动过滤.修改css文件,本地好着的,上传后还是没有.没办法,只好用一个贱招,在源代码顶部粘贴: <style type="te ...

  10. c语言程序如何首行缩进,什么叫代码缩进

    框住N行代码 按TAB键 这样代码有层次感 if (n>0) { //缩进写代码 xxxxxx } 什么是代码的缩进格式?是关于C语言.就是源程序的书写格式,看上去可以更清楚.比如 if(a&g ...

最新文章

  1. 为VSFTP用户指定登录后的目录.原创测试通过.
  2. Google Mock启蒙篇 [1] (Google C++ Mocking Framework for Dummies 翻译)
  3. XML和HTML的不同点
  4. 漫话:如何给女朋友解释什么是2PC(二阶段提交)?
  5. Java延时队列DelayedQueue
  6. Linux 下编译、安装、配置 QT
  7. 【SQL】利用HAVING取众数和中位数
  8. 软件测试--计算机基础
  9. AutoCAD许可、AutoCAD许可分析、分析许可
  10. 戴上这个之后,你再也不是个凡人(doge)
  11. 网易云音乐java爬虫_Java爬取网易云音乐民谣并导入Excel分析
  12. 关于贷后的8个专业名词解析
  13. 北京邮电大学计算机考研经验分享
  14. 邓仰东专栏|机器学习的那些事儿(二):机器学习简史
  15. Linux下恢复误删的文件
  16. IoT产品安全基线(一)硬件安全
  17. java ee web pdf_Java EE Web高级开发案例 PDF扫描版[69MB]
  18. 靶机渗透练习35-ContainMe
  19. python应用如何实现升级_基于esky实现python应用的自动升级详解
  20. 电脑误删除的文件怎么恢复

热门文章

  1. Kent Beck:敏捷和极限编程是关于Be Yourself
  2. 【Matlab图像加密】Logistic+Tent+Kent+Henon图像加密与解密【含GUI源码 1745期】
  3. 勒索病毒来袭!及时备份数据吧!
  4. 像CFO一样思考(1)- 给私域运营算个帐
  5. 自行车码表使用说明—SIGMA(西格玛) BC906
  6. 老子文化主题公园将在洛阳落户
  7. Unity UGUI插件,动效UI插件,简约风UI,UI框架,Q弹动画UI,包含Button,Icon,DropDown,InputField,Modal Window单易用有例子。
  8. when函数c语言,when表达式
  9. 为了写好代码,你坚持了哪些好习惯?
  10. 解决win10计算机管理中没有本地用户和组