Text文件颜色渐变
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using System;
[AddComponentMenu("UI/Effects/Gradient")]
[RequireComponent(typeof(Text))]
public class Gradient : BaseMeshEffect
{
public Color colorTop = Color.white;
public Color colorCenter = Color.grey;
public Color colorBottom = Color.black;
public bool MultiplyTextColor = false;
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
}
Text文件颜色渐变的更多相关文章
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
考虑一下,如何在网页中达到类似以下文字渐变的效果? 传统的实现中,是用一副透明渐变的图片覆盖在文字上.具体实现方式可参考 http://www.qianduan.net/css-gradient-te ...
- iOS 动画绘制线条颜色渐变的折线图
效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...
- css3的背景颜色渐变@线性渐变
背景颜色渐变之线性渐变 语法形式: firefox浏览器 background:-moz-linear-gradient(position/deg,startColor,endColor); oper ...
- 颜色渐变的JS代码
今天做组织机构,要分级别显示颜色,自己计算半天也没算出颜色渐变的方法,出来总是花里胡哨的难看的不要不要的,所以查了一下,找到一个js代码,试了试,很完美哦! <!DOCTYPE html> ...
- android Button 切换背景,实现动态按钮和按钮颜色渐变
android Button 切换背景,实现动态按钮和按钮颜色渐变 一.添加android 背景筛选器selector实现按钮背景改变 1.右键单击项目->new->Oth ...
- CAGradientLayer颜色渐变器
使用CAGradientLayer可以实现颜色的渐变, 我们先看下头文件 @interface CAGradientLayer : CALayer @property(nullable, copy) ...
- Android特效专辑(二)——ViewPager渲染背景颜色渐变(引导页)
Android特效专辑(二)--ViewPager渲染背景颜色渐变(引导页) 首页:http://blog.csdn.net/qq_26787115/article/details/50439020 ...
- jQuery 小特效【文本框折叠隐藏,展开显示】【下拉菜单】【颜色渐变】【弹窗+遮罩】
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs& ...
- 一款纯css3实现的颜色渐变按钮
之前为大家分享了推荐10款纯css3实现的实用按钮,今天给大家带来一款纯css3实现的颜色渐变按钮.这款按钮的边框和文字的颜色通过css3实现两种颜色的渐变,效果非常好看,一起看下效果图: 在线预览 ...
- 第四界css大会 黑魔法-css网格背景、颜色拾取器、遮罩、文字颜色渐变、标题溢出渐变等
1.css网格背景 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
随机推荐
- Unity 打包到XCode自动化设置参数
[PostProcessBuild] public static void OnPostprocessBuild(BuildTarget buildTarget, string buildPath) ...
- 081_Introducing trigger handler class
案例分析: 我们对一个Object写多个独立得Trigger. 但最终这不是最好的做法. 在Salesforce中,只为每个SObject设置一个触发器总是好的. 原因:每个独立触发器的执行顺序始终未 ...
- 074_Wrapper_Class
https://developer.salesforce.com/page/Wrapper_Class http://www.sfdcpoint.com/salesforce/wrapper-clas ...
- Angular响应式表单验证输入(跨字段验证、异步API验证)
一.跨字段验证 1.新增验证器 import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; exp ...
- 比Everything更强的文件搜索工具,支持文件名、文件内容和文件图片上的文字搜索,文件内容搜索工具,文件图片内容搜索工具,OCR图片文本识别搜索,文件快速搜索工具,文字识别文件搜索工具
Windows自带的文件搜索功能想必不需要过多吐槽,搜索速度简直是在龟爬,所以小编很早之前就在用Everything进行文件搜索了, 不过,今天的主角不是它,而是比它更更更更更强的一款软件! 这款软件 ...
- springboot Elasticsearch 实体创建索引设置Date 类型字段失败
springboot Elasticsearch 实体创建索引设置Date 类型字段失败,需添加以下注解 @Field(type = FieldType.Date, format = DateForm ...
- Web开发的常用攻击和防御方式
一.XSS 主要利用:1.盲目相信用户提交的内容 2.直接把用户的字符串转化成DOM 分类: 1.存储型XSS,恶意脚本存在数据库中,所有访问页面的用户都会被攻击 2.反射型XSS,脚本写在URL中, ...
- pythonanywhere 部署 webpy
======================= start ===================== 1. 在pythonanywhere中Add a new web app. 2. 新开一个Bas ...
- Maven简答题
1.什么是Maven? 自动化构建工具,专注服务于Java平台的项目构建和依赖管理 2.使用Maven的好处以及原因? (1)大量的jar包反复复制,造成冗余.使用Maven后每个jar包只在本地仓库 ...
- 使用std::string的结构不能使用memset
使用了std::string作为成员变量的结构体,千万不能使用memset进行初始化,否则程序会爆