欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

unity 渐变消失_Unity3D实现渐变颜色效果|chu

发布时间:2025/3/15 编程问答 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 unity 渐变消失_Unity3D实现渐变颜色效果|chu 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

基于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 vertexList = new List(); #endregion } }

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

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

总结

以上是生活随笔为你收集整理的unity 渐变消失_Unity3D实现渐变颜色效果|chu的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。