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& ...
随机推荐
- 【计算机网络】wireshark抓包分析1
学习计算机网络很久了,但总是局限于书本知识,感觉get不到重点.经师兄建议用wireshark抓包分析看看. 我自己以前并没有做过抓包分析,所以这篇博文可能会有很多错误,只是我自己的一个记录,路过的亲 ...
- HDU-3374
String Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- selenium java 读取xml (数据驱动)
selenium 数据驱动 (xml解析) getElementByTagName()可以通过标签名获取某个标签.它所获取的对象是以数组形式存放.如“caption”和“item”标签在info.xm ...
- JDK+Tomcat+MySql环境配置—linux
Yum安装和jsp安装环境搭建 Yum安装手册: 第一步:在root用户下解压Yum安装包 ,输入命令: unzip yum.zip.
- 使用bottle进行web开发(4):HTTPError
from bottle import error @error(404) def error404(error): return 'Nothing here, sorry' 上述代码,是对404的定义 ...
- Submile text3 安装使用技巧
第一次用submile text3,发现还是有一些东西需要配置的,而且submile text3是最近发布的,和原来的submile text2还是有一些区别的.这两天自己配置了一下,用起来感觉还是不 ...
- UVa1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)
题目大意: 对于一个n个房间m条路径的迷宫(Labyrinth)(2<=n<=100000, 1<=m<=200000),每条路径上都涂有颜色,颜色取值范围为1<=c&l ...
- 洛谷——P3913 车的攻击
P3913 车的攻击 题目描述 N \times NN×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_iRi行,第C_iCi 列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同 ...
- 【DFS序】【莫队算法】【权值分块】bzoj1803 Spoj1487 Query on a tree III
基本等同这个,只是询问的东西不大一样而已. http://www.cnblogs.com/autsky-jadek/p/4159897.html #include<cstdio> #inc ...
- Modernizr使用指南(转)
HTML5, CSS3以及相关技术(例如canvas和web sockets)带来了非常有用的特性,可以让我们的web程序提升一个新的level.这些新技术允许我们只用HTML,CSS和JavaScr ...