纳金网
标题:
UGUI字体特效DIY
[打印本页]
作者:
may
时间:
2015-9-26 00:11
标题:
UGUI字体特效DIY
UGUI自带两个字体效果--Outline 和 Shadow
而渐变效果实现木有,以下是一个简单实现:
//---------------------UGUI Text Gradient---------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
[AddComponentMenu("UI/Effects/Gradient")]
public class Gradient : BaseVertexEffect {
[SerializeField]
private Color32 topColor = Color.white;
[SerializeField]
private Color32 bottomColor = Color.black;
public override void ModifyVertices(List<UIVertex> vertexList) {
if (!IsActive()) {
return;
}
int count = vertexList.Count;
float bottomY = vertexList[0].position.y;
float topY = vertexList[0].position.y;
for (int i = 1; i < count; i++) {
float y = vertexList
.position.y;
if (y > topY) {
topY = y;
}
else if (y < bottomY) {
bottomY = y;
}
}
float uiElementHeight = topY - bottomY;
for (int i = 0; i < count; i++) {
UIVertex uiVertex = vertexList
;
uiVertex.color = Color32.Lerp(bottomColor, topColor, (uiVertex.position.y - bottomY) / uiElementHeight);
vertexList
= uiVertex;
}
}
}
UGUI文字/UI特效的代码示例
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/**
* Modify the given vertices so they follow a sin curve
*/
public class BaseVertexEffect_Test : BaseVertexEffect
{
public float scale = 10f;
public float amplitude = 35f;
public float phase = 0f;
public override void ModifyVertices(List<UIVertex> verts)
{
if (!IsActive ())
return;
int prevLength = verts.Count;
for (int index = 0; index < prevLength; index++)
{
var uiVertex = verts[index];
uiVertex.color = new Color(0,0,0,0.5f);
uiVertex.position.z = Mathf.Sin (uiVertex.position.x * scale + phase) * amplitude;
verts.Add(uiVertex);//增加需要渲染的顶点
//verts[index] = uiVertex;//或者覆盖原来顶点
}
}
}
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5