Unity Text文本颜色渐变效果
来源:互联网 发布:淘宝店铺招牌怎么设置 编辑:程序博客网 时间:2024/06/05 18:43
unity原生的Text文本的颜色虽是可调但是只能是单一颜色,不能达到颜色的渐变效果。
下面我就贴代码了:
两色渐变
using UnityEngine;using System.Collections;using UnityEngine.UI;using System.Collections.Generic;[RequireComponent(typeof(Text))]public class TextVerticalGradientTwoColor : BaseMeshEffect{ public Color colorTop = Color.red; public Color colorBottom = Color.green; protected TextVerticalGradientTwoColor() { } private static void setColor(List<UIVertex> verts, int index, Color32 c) { UIVertex vertex = verts[index]; vertex.color = c; verts[index] = vertex; } private void ModifyVertices(List<UIVertex> verts) { for (int i = 0; i < verts.Count; i += 6) { setColor(verts, i + 0, colorTop); setColor(verts, i + 1, colorTop); setColor(verts, i + 2, colorBottom); setColor(verts, i + 3, colorBottom); setColor(verts, i + 4, colorBottom); setColor(verts, i + 5, colorTop); } } #region implemented abstract members of BaseMeshEffect public override void ModifyMesh(VertexHelper vh) { if (!this.IsActive()) { return; } List<UIVertex> verts = new List<UIVertex>(vh.currentVertCount); vh.GetUIVertexStream(verts); ModifyVertices(verts); vh.Clear(); vh.AddUIVertexTriangleStream(verts); } #endregion}
三色渐变
using UnityEngine;using System.Collections.Generic;using UnityEngine.UI;namespace UI.Extension{ [AddComponentMenu ("UI/Effects/Text Vertical Gradient Color")] [RequireComponent(typeof(Text))] public class TextVerticalGradientThreeColor : BaseMeshEffect { public Color colorTop = Color.red; public Color colorCenter = Color.blue; public Color colorBottom = Color.green; public bool MultiplyTextColor = false; protected TextVerticalGradientThreeColor() { } public static Color32 Multiply(Color32 a, Color32 b) { a.r = (byte)((a.r * b.r) >> 8); a.g = (byte)((a.g * b.g) >> 8); a.b = (byte)((a.b * b.b) >> 8); a.a = (byte)((a.a * b.a) >> 8); return a; } private void ModifyVertices(VertexHelper vh) { List<UIVertex> verts = new List<UIVertex>(vh.currentVertCount); vh.GetUIVertexStream(verts); vh.Clear(); int step = 6; for (int i = 0; i < verts.Count; i += step) { //6 point var tl = multiplyColor(verts[i+0], colorTop); var tr = multiplyColor (verts [i+1], colorTop); var bl = multiplyColor (verts [i+4], colorBottom); var br = multiplyColor (verts [i + 3], colorBottom); var cl = calcCenterVertex(verts[i+0], verts [i+4]); var cr = calcCenterVertex (verts [i+1], verts [i+2]); vh.AddVert (tl); vh.AddVert (tr); vh.AddVert (cr); vh.AddVert (cr); vh.AddVert (cl); vh.AddVert (tl); vh.AddVert (cl); vh.AddVert (cr); vh.AddVert (br); vh.AddVert (br); vh.AddVert (bl); vh.AddVert (cl); } for (int i = 0; i < vh.currentVertCount; i += 12) { vh.AddTriangle (i + 0, i + 1, i + 2); vh.AddTriangle (i + 3, i + 4, i + 5); vh.AddTriangle (i + 6, i + 7, i + 8); vh.AddTriangle (i + 9, i + 10, i + 11); } } private UIVertex multiplyColor(UIVertex vertex, Color color) { if (MultiplyTextColor) vertex.color = Multiply (vertex.color, color); else vertex.color = color; return vertex; } private UIVertex calcCenterVertex(UIVertex top, UIVertex bottom) { UIVertex center; center.normal = (top.normal + bottom.normal) / 2; center.position = (top.position + bottom.position) / 2; center.tangent = (top.tangent + bottom.tangent) / 2; center.uv0 = (top.uv0 + bottom.uv0) / 2; center.uv1 = (top.uv1 + bottom.uv1) / 2; if (MultiplyTextColor) { //multiply color var color = Color.Lerp(top.color, bottom.color, 0.5f); center.color = Multiply (color, colorCenter); } else { center.color = colorCenter; } return center; } #region implemented abstract members of BaseMeshEffect public override void ModifyMesh(VertexHelper vh) { if(!this.IsActive()) { return; } ModifyVertices(vh); } #endregion }}
参考文章:http://www.taidous.com/thread-44526-1-1.html
0 0
- Unity Text文本颜色渐变效果
- unity3d ugui text 文字颜色渐变效果~
- 网页背景颜色渐变效果
- JavaScript 颜色渐变效果
- JavaScript 颜色渐变效果
- 颜色渐变效果
- JavaScript 颜色渐变效果
- HTLM5 颜色渐变效果
- ios 颜色渐变效果
- 颜色渐变效果
- Quartz2D颜色渐变效果
- iOS颜色渐变效果
- css颜色渐变效果
- Canvas颜色渐变效果
- 文字颜色渐变效果
- 文本颜色和效果——text-decoration
- Unity Text文本样式
- unity实现模型颜色渐变
- 你应该知道的RPC原理
- 如何在DigitalOcean上设置一套CoreOS集群
- Intellij Idea 修改 properties 文件编码
- 每天一个linux命令——压缩命令
- Access restriction : The type BASE64Decoder is not accessible due to restriction
- Unity Text文本颜色渐变效果
- MongoDB身份验证--命令行模式
- 《道德经》 第二章
- svn服务器搭建和使用(三)
- startup_LPC17XX.s 启动文件分析
- 挂载U盘到Ubuntu系统
- 欢迎使用CSDN-markdown编辑器
- RSA算法原理(一)
- Mac如何在中文输入法中显示英文标点