Unity3D实现渐变颜色效果

基于unity3D实现渐变颜色的简单脚本,代码很少,就不废话了,直接上代码和效果图。

效果图:

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace ExtraFoundation.Components
{
 [AddComponentMenu("UI/Effects/Gradient")]
 public class UIGradient : BaseMeshEffect
 {
 #region Public Declarations
 public enum Type
 {
  Vertical,
  Horizontal
 }
 #endregion

 #region Public Properties
 public Type GradientType = Type.Vertical;
 [Range(-1f, 1f)]
 public float Offset = 0f;
 public Gradient gradient;
 #endregion

 #region Public Methods
 public override void ModifyMesh(VertexHelper helper)
 {
  if (!IsActive() || helper.currentVertCount == 0)
  {
  return;
  }

  vertexList.Clear();
  helper.GetUIVertexStream(vertexList);

  int nCount = vertexList.Count;
  switch (GradientType)
  {
  case Type.Vertical:
   {
   float fBottomY = vertexList[0].position.y;
   float fTopY = vertexList[0].position.y;
   float fYPos = 0f;

   for (int i = nCount - 1; i >= 1; --i)
   {
    fYPos = vertexList[i].position.y;
    if (fYPos > fTopY)
    fTopY = fYPos;
    else if (fYPos < fBottomY)
    fBottomY = fYPos;
   }

   float fUIElementHeight = 1f / (fTopY - fBottomY);
   UIVertex v = new UIVertex();

   for (int i = 0; i < helper.currentVertCount; i++)
   {
    helper.PopulateUIVertex(ref v, i);
    v.color = gradient.Evaluate((v.position.y - fBottomY) *
    fUIElementHeight - Offset);
    helper.SetUIVertex(v, i);
   }
   }
   break;
  case Type.Horizontal:
   {
   float fLeftX = vertexList[0].position.x;
   float fRightX = vertexList[0].position.x;
   float fXPos = 0f;

   for (int i = nCount - 1; i >= 1; --i)
   {
    fXPos = vertexList[i].position.x;
    if (fXPos > fRightX)
    fRightX = fXPos;
    else if (fXPos < fLeftX)
    fLeftX = fXPos;
   }

   float fUIElementWidth = 1f / (fRightX - fLeftX);
   UIVertex v = new UIVertex();

   for (int i = 0; i < helper.currentVertCount; i++)
   {
    helper.PopulateUIVertex(ref v, i);
    v.color = gradient.Evaluate((v.position.x - fLeftX) *
    fUIElementWidth - Offset);
    helper.SetUIVertex(v, i);
   }

   }
   break;
  default:
   break;
  }
 }
 #endregion

 #region Internal Fields
 private List<UIVertex> vertexList = new List<UIVertex>();
 #endregion
 }
}

虽然支持的内容不多,但是小而精,希望对大家有用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity通过UGUI的Slider调整物体颜色

    本文实例为大家分享了Unity通过Slider调整物体颜色的具体代码,供大家参考,具体内容如下 首先我们创建三个Slider 和一个Cube,为了方便查看,我把Slider下面的Handle分别改变颜色并和名字一一对应: 然后我们把脚本放在Cube上,并且把三个Slider分别 拖进去 具体脚本如下: using UnityEngine; using System.Collections; using UnityEngine.UI; public class SliderColorHyp : M

  • Unity3D实现渐变颜色效果

    基于unity3D实现渐变颜色的简单脚本,代码很少,就不废话了,直接上代码和效果图. 效果图: using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace ExtraFoundation.Components { [AddComponentMenu("UI/Effects/Gradient")] public class UIGradient : B

  • Android编程实现自定义渐变颜色效果详解

    本文实例讲述了Android编程实现自定义渐变颜色效果.分享给大家供大家参考,具体如下: 你是否已经厌恶了纯色的背景呢?那好,Android提供给程序员自定义渐变颜色的接口,让我们的界面炫起来吧. xml定义渐变颜色 首先,你在drawable目录下写一个xml,代码如下 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.

  • js实现按钮颜色渐变动画效果

    本文实例讲述了js实现按钮颜色渐变动画效果的方法.分享给大家供大家参考.具体如下: 这里演示js实现按钮慢慢变色的方法,鼠标移到按钮上,按钮的背景色就发生变化,是慢慢的变化,点击按钮会打开指定链接,这里主要是演示按钮变色的代码实现方法. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-button-cha-color-animate-codes/ 具体代码如下: <HTML><HEAD><TITLE>按钮慢慢变色&

  • jQuery实现的背景颜色渐变动画效果示例

    本文实例讲述了jQuery实现的背景颜色渐变动画效果.分享给大家供大家参考,具体如下: 完整实例代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" c

  • Android TextView渐变颜色和方向及动画效果的设置详解

    GradientTextView Github点我 一个非常好用的库,使用kotlin实现,用于设置TexView的字体 渐变颜色.渐变方向 和 动画效果 添加依赖 之前仓库发布在 jcenter,但是因为它即将不可用,近期已完成迁移.建议大家使用 mavenCentral 的配置. 使用 jcenter implementation 'com.williamyang:gradienttext:1.0.1' 使用 mavenCentral buildscript { repositories {

  • Android实现颜色渐变动画效果

    目录 前言 一.Android中插值器TypeEvaluator 二.案例效果实现 1.利用Android自带的颜色插值器ArgbEvaluator 2.看看Android自带颜色插值器ArgbEvaluator核心代码 3.根据ArgbEvaluator的实现来自定义一个颜色插值器 4.使用自己定义的颜色插值器MyColorEvaluator 三.源码 本文实例为大家分享了Android颜色渐变动画效果的实现代码,供大家参考,具体内容如下 前言 案例效果的实现比较简单,利用Android自带的

  • jQuery实现鼠标响应式透明度渐变动画效果示例

    本文实例讲述了jQuery实现鼠标响应式透明度渐变动画效果.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>js动画-透明度变化</title> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.

  • Android 仿微信底部渐变Tab效果

    先来看一下效果图 除了第三个的发现Tab有所差别外,其他的基本还原了微信的底部Tab渐变效果 每个Tab都是一个自定义View,根据ImageView的tint属性来实现颜色渐变效果,tint属性的使用可以看我的上一篇文章 我将自定义View命名为ShadeView,包含四个自定义属性 意思分别为图标.背景色.底部文本.底部文本大小 <declare-styleable name="ShadeView"> <attr name="icon" for

  • JS实现的透明度渐变动画效果示例

    本文实例讲述了JS实现的透明度渐变动画效果.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>www.jb51.net JS透明度变化效果</title> <style> body{ margin: 0px; padding: 0px; } .redb{ width:200px; height: 20

  • python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

    图像边框的实现 图像边框设计的主要函数 cv.copyMakeBorder()--实现边框填充 主要参数如下: 参数一:源图像--如:读取的img 参数二--参数五分别是:上下左右边的宽度--单位:像素 参数六:边框类型: cv.BORDER_CONSTANT--cv.BORDER_REPLICATE--cv.BORDER_REFLECT--cv.BORDER_WRAP--cv.BORDER_REFLECT_101--cv.BORDER_TRANSPARENT--cv.BORDER_REFLEC

随机推荐