(二十八)unity4.6学习Ugui中文文档-------uGui Effect Tool

浏览一下 GitHub ,找了找UGUI开源的东西 https://github.com/WestHillApps/uGUI-Effect-Tool

发现了 uGuiEffectTool (包括Blend【意义不大】 和 渐变)

这个是原始图片

Blend的效果:

Blend的代码:

using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;

namespace UiEffect
{
    [AddComponentMenu ("UI/Effects/Blend Color")]
    [RequireComponent (typeof (Graphic))]
    public class BlendColor : BaseVertexEffect
    {
        public enum BLEND_MODE
        {
            Multiply,
            Additive,
            Subtractive,
            Override,
        }

        public BLEND_MODE blendMode = BLEND_MODE.Multiply;
        public Color color = Color.grey;

        Graphic graphic;

        public override void ModifyVertices (List<UIVertex> vList)
        {
            if (IsActive () == false || vList == null || vList.Count == 0) {
                return;
            }

            UIVertex tempVertex = vList[0];
            for (int i = 0; i < vList.Count; i++) {
                tempVertex = vList[i];
                byte orgAlpha = tempVertex.color.a;
                switch (blendMode) {
                    case BLEND_MODE.Multiply:
                        tempVertex.color *= color;
                        break;
                    case BLEND_MODE.Additive:
                        tempVertex.color += color;
                        break;
                    case BLEND_MODE.Subtractive:
                        tempVertex.color -= color;
                        break;
                    case BLEND_MODE.Override:
                        tempVertex.color = color;
                        break;
                }
                tempVertex.color.a = orgAlpha;
                vList[i] = tempVertex;
            }
        }

        /// <summary>
        /// Refresh Blend Color on playing.
        /// </summary>
        public void Refresh ()
        {
            if (graphic == null) {
                graphic = GetComponent<Graphic> ();
            }
            if (graphic != null) {
                graphic.SetVerticesDirty ();
            }
        }
    }
}

Gradient效果:

Gradient代码:

using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;

namespace UiEffect
{
    [AddComponentMenu ("UI/Effects/Gradient Color")]
    [RequireComponent (typeof (Graphic))]
    public class GradientColor : BaseVertexEffect
    {
        public enum DIRECTION
        {
            Vertical,
            Horizontal,
            Both,
        }

        public DIRECTION direction = DIRECTION.Both;
        public Color colorTop = Color.white;
        public Color colorBottom = Color.black;
        public Color colorLeft = Color.red;
        public Color colorRight = Color.blue;

        Graphic graphic;

        public override void ModifyVertices (List<UIVertex> vList)
        {
            if (IsActive () == false || vList == null || vList.Count == 0) {
                return;
            }

            float topX = 0f, topY = 0f, bottomX = 0f, bottomY = 0f;
            foreach (var vertex in vList) {
                topX = Mathf.Max (topX, vertex.position.x);
                topY = Mathf.Max (topY, vertex.position.y);
                bottomX = Mathf.Min (bottomX, vertex.position.x);
                bottomY = Mathf.Min (bottomY, vertex.position.y);
            }
            float width = topX - bottomX;
            float height = topY - bottomY;

            UIVertex tempVertex = vList[0];
            for (int i = 0; i < vList.Count; i++) {
                tempVertex = vList[i];
                byte orgAlpha = tempVertex.color.a;
                Color colorOrg = tempVertex.color;
                Color colorV = Color.Lerp (colorBottom, colorTop, (tempVertex.position.y - bottomY) / height);
                Color colorH = Color.Lerp (colorLeft, colorRight, (tempVertex.position.x - bottomX) / width);
                switch (direction) {
                    case DIRECTION.Both:
                        tempVertex.color = colorOrg * colorV * colorH;
                        break;
                    case DIRECTION.Vertical:
                        tempVertex.color = colorOrg * colorV;
                        break;
                    case DIRECTION.Horizontal:
                        tempVertex.color = colorOrg * colorH;
                        break;
                }
                tempVertex.color.a = orgAlpha;
                vList[i] = tempVertex;
            }
        }

        /// <summary>
        /// Refresh Gradient Color on playing.
        /// </summary>
        public void Refresh ()
        {
            if (graphic == null) {
                graphic = GetComponent<Graphic> ();
            }
            if (graphic != null) {
                graphic.SetVerticesDirty ();
            }
        }
    }
}

??

时间: 2024-11-05 20:34:32

(二十八)unity4.6学习Ugui中文文档-------uGui Effect Tool的相关文章

(二十六)unity4.6学习Ugui中文文档-------UGUI的开源Tween工具轻量而强大

出处:http://blog.csdn.net/u010019717 很多Unity开发者对NGUI很了解,而且发展的真的很完善,从以前的SendMassage 升级到更高效的 事件系统,包括很好的Tween相关,还有很多周边工具. 但是随着Unity4.6.5.0的推出,unity更原生专业高效的UGUI问世, 虽然从完善上没有NGUI完善,但是必将是以后的发展方向. 而且现在NGUI在U5中无法运行. UGUI还没有自带Tween相关,官方的案例都是使用Animation这个确实不推荐.  

学习JQuery中文文档之get()函数

前端大神群的群主告诉我们:学习一个框架最好的方法是去把官方文档研究一遍. 现在正式开始我的前端之路,从JQuery的中文文档开始. 基础不牢固,看起来有点慢,但是我会一直坚持下去的.把遇到的问题都记录在此,以便随时查阅. 不展示基础概述,只记录所遇问题. Just Do It! Never Give Up! get()函数 看完这个函数的定义,我就兴冲冲的去试验了一下,写了以下代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3

(二十五)unity4.6学习Ugui中文文档-------UGUI-Extensions

?? 出处:http://blog.csdn.net/u010019717 这个库是什么? 在此存储库中是扩展脚本来增强您的Unity UI experience的集合.这些脚本从许多来源收集和合并,随着时间的推移改善Unity UI experience.(脚本绝大多数来自脚本线程上unity UI 论坛在这里)你可以下载/项目访问脚本,或您可以下载此预编译的 Unity Asset资产. Unity UI Extensions Unity Asset Controls and extensi

(二十九)unity4.6学习Ugui中文文档-------运行时创建Scroll-lists

?? 孙广东 2015.5.10 首先要滚动和list形式存储内容.  使用Scroll Rect组件.就可以滚动了,但是有时候我们不希望,item超过区域还显示:就要使用Mask组件,说明一下,Mask组件组好配合Image一起使用. 下面的图:显示了的情况[头像是子对象Image].1.父对象只有Mask组件:2.有Mask和Image组件[图片为none]:3.有Mask和Image组件[图片有Alpha透明区域]     在list容器中的item 我们怎么管理呢?VerticalLay

(十八)unity4.6学习Ugui中文文档-------技巧-Creating UI elements from scripting

大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guide&view=my 4.CreatingUI elements from scripting 如果您正在创建动态UI, 在游戏中UI元素在哪里出现.消失,或更改基于用户操作或其他操作,你可能需要做一个脚本,实例化新ui元素基于自定义的逻辑. Cr

(二十二)unity4.6学习Ugui中文文档-------交互-Eventsystem &amp;amp; Binding

大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guide&view=my 完整的教程下载地址:http://www.unitymanual.com/thread-26665-1-1.html 5.4 Eventsystem& Binding 这两个东西其有用处不同也没有什么可比較的,可是也要区

(二)unity4.6学习Ugui中文文档-------概要-UGUI Canvas

大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unitymanual.com/forum.php?mod=guide&view=my UI系统允许您快速.直观地创建用户界面(Ui).这是Unity的新 UI 系统的主要功能介绍. 一.UI Overview概要 在这篇概述中,我们就去通过 UI系统的基础知识.我们将开始介绍Canvas(画布)并将所有 U

(三十)unity4.6学习Ugui中文文档-------制作一个泛型的MODAL窗口

孙广东 2015.5.11 在此文章中我们将制作一个泛型的MODAL窗口 (Yes, No, Maybeso, Cancel) 在那里我们可以把内容和动作push到窗口中,这个窗口可以在我们的游戏的任何地方使用,按钮被按下时事件工作. 涉及到的代码: using UnityEngine; using System.Collections; public class BringToFront : MonoBehaviour { void OnEnable () { transform.SetAsL

(二十七)unity4.6学习Ugui中文文档-------Unity3D UI (uGUI)窗口扩展

出处:http://blog.csdn.net/u010019717 下面是提供的例子: Unity3D UI (uGUI)窗口扩展 它是如何工作的? 也有官方的api文档: ?? ??