unity Image透明度渐变
日期: 2020-11-25 分类: 跨站数据测试 582次阅读
using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 using Newtonsoft.Json;
 using UnityEditor;
 using UnityEditor.UI;
//透明度渐变方法
 public enum FadeMode
 {
     LeftTORight,
     UpToDown,
     LeftUpTORightDown,
     LeftDownTORightUp,
 }
namespace UnityEngine.UI
 {
     public class ImageFade : Image
     {
        public FadeMode FadeMode;
         public byte FadeStartAlpha  = 0;
         public byte FadeEndAlpha  = 255;
       //  public override void SetVerticesDirty()
         //{
        //    / base.SetVerticesDirty();
       //  }
        protected override void OnPopulateMesh(VertexHelper toFill)
         {
             base.OnPopulateMesh(toFill);
             UIVertex vertex = new UIVertex();
             //print($"toFill.currentVertCount={toFill.currentIndexCount},toFill.currentVertCount={toFill.currentVertCount}");
             for (int i = 0; i < toFill.currentVertCount; i++)
             {
                 toFill.PopulateUIVertex(ref vertex, i);
                 // print($"vertex[{i}] Position={vertex.position}");
                 // print($"vertex[{i}] Color={vertex.color}");
                if (FadeMode == FadeMode.UpToDown)
                 {
                     if (i == 0 || i == 3)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeStartAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                     else
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeEndAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                 }
                 else if (FadeMode == FadeMode.LeftTORight)
                 {
                     if (i == 0 || i == 1)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeStartAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                     else
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeEndAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                 }
                 else if (FadeMode == FadeMode.LeftDownTORightUp)
                 {
                     if (i == 0)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeStartAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                     else if (i == 1 || i == 3)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, (byte)((FadeEndAlpha + FadeStartAlpha) / 2));
                         toFill.SetUIVertex(vertex, i);
                     }
                     else
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeEndAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                 }
                 else if (FadeMode == FadeMode.LeftUpTORightDown)
                 {
                     if (i == 1)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeStartAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                     else if (i == 0 || i == 2)
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, (byte)((FadeEndAlpha + FadeStartAlpha) / 2));
                         toFill.SetUIVertex(vertex, i);
                     }
                     else
                     {
                         vertex.color = new Color32(vertex.color.r, vertex.color.g, vertex.color.b, FadeEndAlpha);
                         toFill.SetUIVertex(vertex, i);
                     }
                 }
             }
        }
     }
 }
 //https://www.jianshu.com/p/035242c078c5?utm_campaign 
 //https://blog.csdn.net/duzixi
 除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐
