UGUI 实现界面 渐隐渐现 FadeIn/Out 效果
孙广东 2015.7.10
事实上熟悉NGUI的人,应该知道 实现渐隐渐现 FadeIn/Out 效果是非常方便的,由于父对象 的 改变会自己主动影响到子对象。
比方 UIWidget、UIPanel等组件都有 Alpha属性。在Inspector面板上能够直接设置拖拽的改变看看。 确实如此。
可是到UGUI呢,没有这么方便。 须要熟悉一下 组件的内部和继承关系了!
UI中每一个能够显示控件都会有一个CanvasRender对象,CanvasRender有什么作用呢? 官方的解释:The Canvas Renderer component renders a graphical UI object contained within a Canvas. 简单的翻译过来就是,画布上的渲染器组件将呈现包括在一个画布内的图形用户界面对象,再细致查看CanvasRenderer类
时我们能够看到有两个方法SetAlpha 。SetColor,显然我们能够改动透明度Alpha和Color来实现渐隐渐现,同一时候我
们还能够发现Button。Text,Image等控件都会集成自Unity.UI.Graphic
public class Text : MaskableGraphic, ILayoutElement public abstract class MaskableGraphic : Graphic, IMaskable public class Image : MaskableGraphic, ICanvasRaycastFilter, ISerializationCallbackReceiver, ILayoutElement
然后我们再阅读Graphic代码,我们会发现有两个方法:
public void CrossFadeAlpha(float alpha, float duration, bool ignoreTimeScale);
public void CrossFadeColor(Color targetColor, float duration, bool ignoreTimeScale, bool useAlpha);
由于源码是开源的,大家能够自己去看看!
因此我们利用CrossFadeColor或CrossFadeAlpha这两个方法就能够实现渐隐渐现了
void Start()
{ Component[] comps = GameObject.Find("/Canvas").GetComponentsInChildren<Component>();
foreach (Component c in comps)
{
if (c is Graphic)
{
(c as Graphic).CrossFadeAlpha(0, 1, true);
} }
}
可是 Unity提供的方法非常有限,就是 要做延迟怎么办? 要在结束后运行回调怎么办? 要改变渐变曲线怎么办?
我们在知道 原理了之后,就能够 在看看 DOTween 补间动画插件。
官方文档有专门 的区域 API 是针对 Unity4.6种的UGUI元素的。【自己去看】
#region 渐显/渐隐的形式 对菜单对象
/// <summary>
/// 渐现菜单
/// </summary>
/// <param name="targetGO">菜单游戏对象</param>
public static void FadeOpenMenu(GameObject targetGO)
{
Component[] comps = targetGO.GetComponentsInChildren<Component>();
for (int index = 0; index < comps.Length; index++)
{
Component c = comps[index];
if (c is Graphic)
{
//(c as Graphic).color = new Color(1, 1, 1, 0);
// (c as Graphic).CrossFadeAlpha(1f, MENU_FADE_IN_TIME, true);
(c as Graphic)
.DOFade(0f, MENU_FADE_IN_TIME)
.SetDelay(CAMERA_ZOOM_IN_DELAY)
.SetEase(MENU_SCALE_OPEN_TYPE)
.From()
.OnComplete(
() =>
{
MenuSignalManager.OpenedMenuSignal.Dispatch();
});
}
}
// 运行完成的回调
}
/// <summary>
/// 渐隐菜单(无销毁操作)
/// </summary>
/// <param name="targetGO">菜单游戏对象</param>
public static void FadeCloseMenu(GameObject targetGO)
{
Component[] comps = targetGO.GetComponentsInChildren<Component>();
for (int index = 0; index < comps.Length; index++)
{
Component c = comps[index];
if (c is Graphic)
{
//(c as Graphic).CrossFadeAlpha(0, MENU_FADE_OUT_TIME, true); // 当然了假设觉得不方便的话,能够使用dotween的Graphic的DoColor、DoFade
(c as Graphic).
DOFade(0, MENU_FADE_OUT_TIME)
.SetEase(MENU_FADE_OUT_TYPE)
.OnComplete(() =>
{
MenuSignalManager.CloseedMenuSignal.Dispatch(targetGO);
});
}
}
// 运行完成的回调
}
#endregion
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
UGUI 实现界面 渐隐渐现 FadeIn/Out 效果的更多相关文章
- Unity3D中UGUI不使用DOTween制作渐隐渐现效果
在做UI后期设计时,我们可能要对UI做一些特效,这篇文章我们来学习下如何在Unity3d中对实现渐隐渐现的效果, 首先我们看下Unity New UI即UGUI中渐隐渐现的做法. 观察我们会发现Uni ...
- 基于JQuery的渐隐渐现轮播
<div id="ads"> <div> <!--轮播图片--> <ul> <li><a href="# ...
- WPF 渐隐渐现切换背景图片
最近学习WPF,尝试着自己做一些小玩意,也遇到了一些问题,于是整理记录以便日后查阅. 我们都知道WPF可以实现一些很炫的效果,然而有时候为达到这个目的却并不是一件很容易的事情.比如:在软件中我希望能够 ...
- js渐隐渐现透明度变化淡入淡出轮播图
js渐隐渐现透明度变化淡入淡出轮播图.焦点图 一些广告banner展示常见. (附件) <!DOCTYPE html> <html> <head> <meta ...
- jQuery鼠标悬停文字渐隐渐现动画效果
jQuery鼠标悬停文字渐隐渐现动画效果 当时是做项目的时候用到的所以图片有些大,九张,真正要做图片不需要这么大 css样式 <style> *{ margin: 0; padding: ...
- 在Unity5中使用C#脚本实现UI的下滑、变色、渐隐渐现效果
一.首先,我们先创建一个Text 依次选择Component→UI→Text创建一个Text,创建完成后如下: 二.创建完成后,在Project面板点击Create→C# Script,本例命名 ...
- part10 header界面渐隐渐显 //动态路由//项目动画
两个组件只同时显示一个 可以用 a v-show='variable' b: v-show='!variable' 1.对全局事件的解绑 //代码容易出现大量bug 因为影响其他组件 keep-al ...
- UGUI DOTween渐隐渐现
Tween tweenAlpha; tweenAlpha = DOTween.To(() => MaskSpr.fillAmount, x => MaskSpr.fillAmount = ...
- [css3动画]渐隐渐现
测试 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
随机推荐
- Ubuntu16.04 PPA方式安装JDK1.8
一.删除OpenJDK: sudo apt-get purge openjdk* 二.添加PPA: root@ubuntu:~# add-apt-repository ppa:webupd8tea ...
- 拒绝平庸——浅谈WEB登录页面设计
用户活跃度是检验产品成功与否的重要指标之一,传统行业的商家极为重视门面的装潢,因为一个好的门面可以聚集人气,招揽更多的顾客.古时候的大户人家院子门口的石狮子或其他的摆件的摆放极为讲究,有一定的风水学说 ...
- mySQL的存储过程详解
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- AC日记——LOOPS hdu 3853
3853 思路: 概率dp求期望: 代码: #include <cstdio> #include <cstring> #include <iostream> usi ...
- STL模板整理 map
map容器: 继上一篇 ,Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能 ...
- 关于两数的最大公约数gcd
深根半夜里研究C++的语法,在弄到关于函数的定义 这一部分时突然想写个试试,就拿比较熟悉的gcd来好了. 活这么久gcd一直是用辗转相除法(或者说欧几里得算法)得出的,根据<算法导论>第三 ...
- [BZOJ5020][THUWC2017]在美妙的数学王国中畅游(LCT)
5020: [THUWC 2017]在美妙的数学王国中畅游 Time Limit: 80 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 323 ...
- Codeforces 702 D Road to Post Office
题目描述 Vasiliy has a car and he wants to get from home to the post office. The distance which he needs ...
- 【DFS序】【莫队算法】【权值分块】bzoj2809 [Apio2012]dispatching
题意:在树中找到一个点i,并且找到这个点子树中的一些点组成一个集合,使得集合中的所有点的c之和不超过M,且Li*集合中元素个数和最大 首先,我们将树处理出dfs序,将子树询问转化成区间询问. 然后我们 ...
- 十. 图形界面(GUI)设计8.选择框和单选按钮
选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...