示例:

实现方法:

  1. 创建一个Image
  2. 再Image组件上添加 Gradient 组件
  3. 调节Gradient组件中的Color1 和 Color2 即可

Gradient源码:

/**FileName:      Gradient.cs*Author:        M*Date:          2022/02/23 13:51:26*UnityVersion:  2020.3.0f1c1*Description:   图片渐变效果
*/using UnityEngine;
using UnityEngine.UI;[AddComponentMenu("UI/Effects/Gradient")]
public class Gradient : BaseMeshEffect
{public Color Color1 = Color.white;public Color Color2 = Color.white;[Range(-180f, 180f)] public float Angle = -90.0f;public override void ModifyMesh(VertexHelper vh){if (enabled){var rect = graphic.rectTransform.rect;var dir = RotationDir(Angle);var localPositionMatrix = LocalPositionMatrix(rect, dir);var vertex = default(UIVertex);for (var i = 0; i < vh.currentVertCount; i++){vh.PopulateUIVertex(ref vertex, i);var localPosition = localPositionMatrix * vertex.position;vertex.color *= Color.Lerp(Color2, Color1, localPosition.y);vh.SetUIVertex(vertex, i);}}}public struct Matrix2x3{public float m00, m01, m02, m10, m11, m12;public Matrix2x3(float m00, float m01, float m02, float m10, float m11, float m12){this.m00 = m00;this.m01 = m01;this.m02 = m02;this.m10 = m10;this.m11 = m11;this.m12 = m12;}public static Vector2 operator *(Matrix2x3 m, Vector2 v){float x = (m.m00 * v.x) - (m.m01 * v.y) + m.m02;float y = (m.m10 * v.x) + (m.m11 * v.y) + m.m12;return new Vector2(x, y);}}private Matrix2x3 LocalPositionMatrix(Rect rect, Vector2 dir){float cos = dir.x;float sin = dir.y;Vector2 rectMin = rect.min;Vector2 rectSize = rect.size;float c = 0.5f;float ax = rectMin.x / rectSize.x + c;float ay = rectMin.y / rectSize.y + c;float m00 = cos / rectSize.x;float m01 = sin / rectSize.y;float m02 = -(ax * cos - ay * sin - c);float m10 = sin / rectSize.x;float m11 = cos / rectSize.y;float m12 = -(ax * sin + ay * cos - c);return new Matrix2x3(m00, m01, m02, m10, m11, m12);}private Vector2 RotationDir(float angle){float angleRad = angle * Mathf.Deg2Rad;float cos = Mathf.Cos(angleRad);float sin = Mathf.Sin(angleRad);return new Vector2(cos, sin);}
}

Unity 图片渐变色的实现相关推荐

  1. unity图片水平/垂直翻转

    转载出处:Unity 图片翻转 //水平翻转Texture2D HorizontalFlipTexture(Texture2D texture){//得到图片的宽高int width = textur ...

  2. Unity图片转换为法线贴图

    Unity图片转换为法线贴图 using UnityEngine; using System.IO; using UnityEditor;public class NormalTexture : Mo ...

  3. Unity 图片分割将spirte保存在本地

    如果你拿到的是一张整图,你想分割之后使用NGUI sprite来使用!  下面就能解决的需求. 步骤: 1. 使用Unity自带的spirte进行分割图片 2. 使用代码把分割出来的2DSpirte转 ...

  4. Unity图片优化神器 - dither算法究极进化方案

    在Unity移动平台的游戏开发过程中,贴图资源是往往是占资源量最大的资源.如何在保证视觉效果的同时,尽可能的减少贴图资源,是开发团队会经常遇到的问题.通常来说,对于3D物体的纹理,是可以采用ETC/P ...

  5. ui unity 图片高亮_程序化生成UI模型与顶点动画

    顶点动画一般指通过顶点着色器对模型每个顶点独立运动的方法.在游戏中遇到碎片爆破或者聚合一类的.涉及到大量同类物体在有序和无序之间切换的特殊效果,就非常适合将所有物体顶点每帧位移和形变的迭代交付给GPU ...

  6. ui unity 图片高亮_Unity5 UI图片变灰处理(UGUI)(二)

    图片"变灰"处理是再寻常不过的要求了,特别按钮,头像等UI图片的"变灰"处理非常常见.比如: 网上已经有很多的实现方法,但是Unity5.3.8以后,对于使用s ...

  7. unity图片变成马赛克如何取像素并改变颜色_Unity3D-2.5D像素游戏随机地形构造tilemap(rule tile)...

    最近想自己做个2.5D像素小游戏,因为没有接触2.5D这类游戏的开发,所以只能自己慢慢摸索.按照我自己本来的想法,直接在画布上实例化Image应该就能初步创建出游戏的地形(不考虑细节),但实际上创建出 ...

  8. Unity 图片定点缩放功能

    功能情景: 有的 AVG 项目可能需要玩家缩放图片的某一个点来仔细确认图片,比如碧蓝航线里面的放大看老婆的功能,又或者说如果直接在 Unity 的 Scene 编辑场景里面使用滚轮拉进拉远,可以看到 ...

  9. unity图片变成马赛克如何取像素并改变颜色_聊聊 2D 游戏的像素化中的问题

    来indienova官网,挖掘独立游戏的更多乐趣 引言 既然我是在做像素游戏,这次就聊一聊在对 2D 游戏像素化的过程中都会碰到的问题吧. 1. 照相机的投影 对于引擎来说,其实不管是 2D 游戏还是 ...

最新文章

  1. 独家揭秘!阿里大规模数据中心的性能分析 1
  2. 谈一下JavaScript的语法
  3. 电脑用户名_仁霸下料优化软件如何找回密码、更换绑定电脑?
  4. 阿里云 超级码力在线编程大赛初赛 第4场 题目3. from start to end
  5. xml模块、项目开发过程
  6. win10计算机怎么拨号上网,win10拨号连接怎么创建 win10宽带拨号连接如何设置
  7. python约瑟夫环单向循环链表_用单向循环链表解决约瑟夫环(Joseph)问题
  8. 解决 spring cloud git config 配置中心多环境问题
  9. 计算机网络配置vlan实验报告,北京理工大学-计算机网络实践-VLAN配置及VLAN间通信实验报告...
  10. 三层交换机和链路聚合
  11. 黑马程序员-IT学生解惑真经-想做程序员或者正在迟疑的同学可以看一下,很有帮助的一篇文章
  12. 数据权限设计思路_权限设计数据权限
  13. 凹点匹配分割 matlab,基于凹点和重心检测的粘连类圆形目标图像分割
  14. 如何调整DOSBox窗口大小
  15. Apollo代码学习(二)—车辆运动学模型
  16. hadoop生态圈面试精华之HDFS部分
  17. 苹果屏幕录制没有声音_苹果手机屏幕不亮但有声音是怎么回事?不要慌,这样就可以解决...
  18. PCB电路板去耦电容配置原则有哪些?
  19. Android必会的自动化测试
  20. SAP WM初阶LS07冻结Quant

热门文章

  1. StarWink UV顶点动画制作详解
  2. 【算法分析与设计】平面最近点对(含最近距离、最近点对、第一次分割点集合的输出)
  3. Windows双网卡配置(外网与内网)
  4. android不用USB线进行adb调试
  5. 微信小程序开发实现搜索功能
  6. 【网络编程】带宽单位是什么?带宽单位详解?带宽单位如何换算?
  7. 【python小游戏】石头剪刀布
  8. 【深夜思考】比较好的java开发公司
  9. 【c语言】给出三角形的三边长,求三角形面积
  10. 《从Lucene到Elasticsearch:全文检索实战》已出版!