渐变字颜色
每个字是2个面,4个顶点,左上为1,右上为2,左下为3,右下为4
第二个字是左上为5,右上为六
using UnityEngine;
using UnityEngine.UI;
namespace UnityEditor.UI
{
// TODO REVIEW
// Make Text Gradient
//
/// <summary>
/// Editor class used to edit UI Labels.
/// </summary>
[ExecuteInEditMode()]
[CustomEditor(typeof(GradientText))]
public class GradientTextEditor : TextEditor
{
SerializedProperty m_GradientTop;
SerializedProperty m_GradientBottom;
protected override void OnEnable()
{
base.OnEnable();
m_GradientTop = serializedObject.FindProperty("m_GradientTop");
m_GradientBottom = serializedObject.FindProperty("m_GradientBottom");
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
EditorGUILayout.PropertyField(m_GradientTop);
EditorGUILayout.PropertyField(m_GradientBottom);
serializedObject.ApplyModifiedProperties();
}
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
using UnityEngine.Serialization;
public class GradientText : Text {
[SerializeField]
[FormerlySerializedAs("gradient")]
protected Color32 m_GradientTop = new Color(1F, 1f, 1F, 1f);
public Color32 gradientTop{
set{m_GradientTop = value;}
get{return m_GradientTop;}
}
[SerializeField]
protected Color32 m_GradientBottom = new Color(1F, 1f, 1F, 1f);
public Color32 gradientBottom{
set{m_GradientBottom = value;}
get{return m_GradientBottom;}
}
protected override void OnFillVBO(System.Collections.Generic.List<UIVertex> vbo)
{
base.OnFillVBO(vbo);
if(vbo.Count > 4){
UIVertex uiVertex;
int count = 1;
for (int i = 0; i < vbo.Count - 4; i++)
{
uiVertex = vbo[i];
if (count < 3)
{
uiVertex.color = gradientTop;
vbo[i] = uiVertex;
}
else if (count < 5)
{
uiVertex.color = gradientBottom;
vbo[i] = uiVertex;
}
count++;
if (count == 5)
{
count = 1;
}
}
}
}
}