短视频app搭建,unity Image透明度渐变

短视频app搭建,unity Image透明度渐变实现的相关代码
 

复制代码
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/article/details/78013295
//唯一作用显示公开字段 但是有你不想要的字段
[CustomEditor(typeof(ImageFade))]
public class ImageFadeEditor : ImageEditor
{
protected SerializedProperty FadeMode;
protected SerializedProperty FadeStartAlpha;
protected SerializedProperty FadeEndAlpha;

//https://blog.csdn.net/weixin_30360497/article/details/98998280
protected override void OnEnable()
{
base.OnEnable();
FadeMode = serializedObject.FindProperty("FadeMode");//得到类属性
FadeStartAlpha = serializedObject.FindProperty("FadeStartAlpha");
FadeEndAlpha = serializedObject.FindProperty("FadeEndAlpha");
}

public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();//更新序列化信息
EditorGUILayout.PropertyField(FadeMode);
EditorGUILayout.PropertyField(FadeStartAlpha);
EditorGUILayout.PropertyField(FadeEndAlpha);

serializedObject.ApplyModifiedProperties();//应用属性改变
}

}
复制代码

 


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/article/details/78013295
//唯一作用显示公开字段 但是有你不想要的字段
[CustomEditor(typeof(ImageFade))]
public class ImageFadeEditor : ImageEditor
{
protected SerializedProperty FadeMode;
protected SerializedProperty FadeStartAlpha;
protected SerializedProperty FadeEndAlpha;

//https://blog.csdn.net/weixin_30360497/article/details/98998280
protected override void OnEnable()
{
base.OnEnable();
FadeMode = serializedObject.FindProperty("FadeMode");//得到类属性
FadeStartAlpha = serializedObject.FindProperty("FadeStartAlpha");
FadeEndAlpha = serializedObject.FindProperty("FadeEndAlpha");
}

public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();//更新序列化信息
EditorGUILayout.PropertyField(FadeMode);
EditorGUILayout.PropertyField(FadeStartAlpha);
EditorGUILayout.PropertyField(FadeEndAlpha);

serializedObject.ApplyModifiedProperties();//应用属性改变
}

}

以上就是 短视频app搭建,unity Image透明度渐变实现的相关代码,更多内容欢迎关注之后的文章

posted @   云豹科技-苏凌霄  阅读(71)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示