当前位置:网站首页>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
}
边栏推荐
- Oxylabs线上研讨会:网站抓取解决方案实操
- 并发场景下的死锁原因及规避解决方法
- 嵌入式开发:提示和技巧——C 语言中要避免的8个保留字
- 一个英文字母,一个中文各占多少字节
- 微服务架构的核心关键点
- Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions论文以及代码解析
- “文化数字化战略新型基础设施暨文化艺术链生态建设发布会”成功召开
- What can a reverse proxy server do?
- 2020上海智慧城市合作大会,零数科技受邀出席并入选优秀应用案例
- Cesium快速上手2-Model图元使用讲解
猜你喜欢
目标跟踪实战deepsort+yolov5(上)
The principle of neural network deep learning - 2
AutoAssign论文解析
如何配合代理使用cURL?
"scala programming (3rd edition)" study notes
【计网】(五)网络层首部
Analysis of AutoAssign Papers
C drive space management
Matlab的下载
Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction without Convolutions论文以及代码解析
随机推荐
远程调试为何要亲历现场,也许也可以这样解决
Likou Question of the Day----Maximum Average of Subarrays
CrossFormer:A Versatile Vision Transformer Based on Cross-Scale Transformer论文以及代码解析
动手学深度学习_转置卷积
基于阿里云的基础架构设施保障(一)IAAS云计算
BSV 上高效的多方公平交易
【计网】(四)物理层、数据链路层
罗永浩退网创业,交个朋友加速谋求“曲线上市”?
Chrome Proxy Manager Plugin
BSV 中的零开销私人时间戳
Baidu IP query
Use of the printer
为什么要做LiveVideoStack课程?
【公开课预告】:AV1编码器的优化及其在流媒体和实时通讯中的应用
Scala encryption and hash functions
低佣金股票账户是怎么办理的?网上开户安全吗
测试/开发程序员,如何跳出技术瓶颈?一年两年......
股市预测,销量预测,病毒传播...一个时间序列建模套路搞定全部!
U disk cannot be displayed on computer
pyspark resource configuration