UGUI研究院之Text文本渐变(十一)
2016-05-13 09:38
621 查看
这是我无意间逛国外论坛发现的,感觉还可以就分享给大家。原文 http://pastebin.com/dJabCfWn
![](http://www.xuanyusong.com/wp-content/uploads/2015/05/Snip20150508_1.png)
如下图所示,用法和UGUI自带的outline和shadow一样,可以同时使用。
![](http://www.xuanyusong.com/wp-content/uploads/2015/05/Snip20150508_2.png)
代码在这里了。我加了个判断,它原来的有越界的隐患。
C#
我也在测试中,欢迎大家提意见。
如果你的项目升级到了5.2 请使用下面的代码,感谢代码的提供者。@獨立遊戲開發熊
![](http://www.xuanyusong.com/wp-content/uploads/2015/05/Snip20150508_1.png)
如下图所示,用法和UGUI自带的outline和shadow一样,可以同时使用。
![](http://www.xuanyusong.com/wp-content/uploads/2015/05/Snip20150508_2.png)
代码在这里了。我加了个判断,它原来的有越界的隐患。
C#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 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; if(count>0){ float bottomY = vertexList[0].position.y; float topY = vertexList[0].position.y; for (int i = 1; i < count; i++) { float y = vertexList[i].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[i]; uiVertex.color = Color32.Lerp(bottomColor, topColor, (uiVertex.position.y - bottomY) / uiElementHeight); vertexList[i] = uiVertex; } } } } |
如果你的项目升级到了5.2 请使用下面的代码,感谢代码的提供者。@獨立遊戲開發熊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; [AddComponentMenu("UI/Effects/Gradient")] public class Gradient : BaseMeshEffect { [SerializeField] private Color32 topColor = Color.white; [SerializeField] private Color32 bottomColor = Color.black; public override void ModifyMesh (Mesh mesh) { if (!IsActive ()) { return; } Vector3[] vertexList = mesh.vertices; int count = mesh.vertexCount; if (count > 0) { float bottomY = vertexList [0].y; float topY = vertexList [0].y; for (int i = 1; i < count; i++) { float y = vertexList [i].y; if (y > topY) { topY = y; } else if (y < bottomY) { bottomY = y; } } List<Color32> colors = new List<Color32> (); float uiElementHeight = topY - bottomY; for (int i = 0; i < count; i++) { colors.Add (Color32.Lerp (bottomColor, topColor, (vertexList [i].y - bottomY) / uiElementHeight)); } mesh.SetColors (colors); } } } |
相关文章推荐
- ContentValues和HashTable和HashMap的区别
- build 并deploy saiku-query0.4到nexus
- 【Arduino官方教程第一辑】示例程序 4-5 多串口[Mega]
- Permutation Sequence
- init: sys_prop: permission denied uid:1003 name:service.bootanim.exit
- iOS开发------操作通讯录(AddressBook篇)&通讯录UI(AddressBookUI篇)
- 手势(UIGestureXXX)使用详解
- 定义一个UIEdgeInsets全局变量
- Android Data Binding Guide
- 通过代理监听UITextField按下了return按钮
- 监听UITextField输入一般用addtarget
- UITextField设置了占位文字内容之后,才能设置占位文字的颜色
- UITextField监听按下了删除按钮
- 深入理解Java PriorityQueue
- UIButton的运用
- UILabel的使用
- 常用UI控件
- StringBuilder和StringBuffer源码浅析
- xiaocong的uiautomator有时候找不到界面元素的问题和解决
- mysql unique option prefix myisam_recover instead of myisam-recover-options的解决方法