- 最后登录
- 2019-12-25
- 注册时间
- 2012-8-24
- 阅读权限
- 90
- 积分
- 71088
- 纳金币
- 52304
- 精华
- 343
|
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;//或者覆盖原来顶点
- }
- }
- }
|
|