当前位置:网站首页>Unity Text三重渐变色
Unity Text三重渐变色
2022-08-08 22:07:00 【w0100746363】
[AddComponentMenu ("UI/Effects/ThreeColorGradient")]
[RequireComponent(typeof(Text))]
public class ThreeColorGradient : BaseMeshEffect
{
public Color colorTop = Color.white;
public Color colorCenter = Color.grey;
public Color colorBottom = Color.black;
public bool MultiplyTextColor = false;
protected ThreeColorGradient()
{}
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 = new UIVertex();
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
}
边栏推荐
猜你喜欢
为什么要做LiveVideoStack课程?
爬虫视频教学:网页数据抓取
Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions Paper and Code Analysis
pyspark运行原理
Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions论文以及代码解析
Hands-on Deep Learning_Transposed Convolution
Cesium快速上手3-Billboard/Label/PointPrimitives图元使用讲解
反向代理服务器能干什么?
17 [2D conversion 3D conversion browser private prefix]
Baidu IP query
随机推荐
雷电模拟器frida脱壳
Chrome代理管理器插件
一个英文字母,一个中文各占多少字节
Zero Digital Reports Digital Financial Innovation to the Secretary of Hainan Provincial Party Committee
How pyspark works
Crawler Series: Storing CSV Files
Conditional - DETR papers parsing
百度 IP 查询
CrossFormer:A Versatile Vision Transformer Based on Cross-Scale Transformer论文以及代码解析
2020-03-09
SRv6故障管理
战投部都没了的字节,买了一家高端妇幼医院
The principle of neural network deep learning - 2
Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions Paper and Code Analysis
JQGrid通过json请求nodejs数据,表格信息保存在mysql数据库中
基于阿里云的基础架构设施保障(四)IAAS进阶实践运用
U盘无法在电脑上显示
Mysql汉字乱码的问题
浦东AI时代 | 零数科技完成重点项目签约
如何寻找竞争情报发挥企业优势