unity中实现三个Logo图片进行若隐若现的切换并有延时切换图片的效果
public GameObject canvas;
private Transform logoParent;
private Transform Logo_logo; //logo一
private Transform Logo_qmtgTrans; //logo二
private Transform Logo_brand; //logo三
private float Timer; //计时器
private float time = 5f; //延迟的总时长
private float Alpha = 1f;
private float AlphaSpeed = 3f; //Alpha值渐变的时间,1就是对应渐变需要1秒,2就是2秒
DisPlayState disPlayState = DisPlayState.start;
public void Start(GameObject cav)
{
canvas = cav;
disPlayState = DisPlayState.start;
var logoParentPrafab = Resources.Load<Transform>("UIPrefabs/LogoParent");
logoParent = GameObject.Instantiate(logoParentPrafab);
logoParent.SetParent(canvas.transform, false);
Logo_logo = logoParent.transform.Find("Logo_logo");
Logo_qmtgTrans = logoParent.transform.Find("Logo_qmtg");
Logo_brand = logoParent.transform.Find("Logo_brand");
}
public void Update()
{
LogoDisPlay();
}
//Logo显示状态切换
private void LogoDisPlay()
{
if (disPlayState == DisPlayState.start)
{
Timer = time;
disPlayState = DisPlayState.delay;
}
if (disPlayState == DisPlayState.delay)
{
DelayTime(DisPlayState.minusAlpha);
}
if (disPlayState == DisPlayState.minusAlpha)
{
if (Logo_logo != null)
AlphaControl(true, DisPlayState.addAlpha, Logo_logo.gameObject);
}
if (disPlayState == DisPlayState.addAlpha)
{
if (Logo_brand != null)
AlphaControl(false, DisPlayState.delay2, Logo_brand.gameObject);
}
if (disPlayState == DisPlayState.delay2)
{
DelayTime(DisPlayState.minusAlpha2);
}
if (disPlayState == DisPlayState.minusAlpha2)
{
if (Logo_brand != null)
AlphaControl(true, DisPlayState.addAlpha2, Logo_brand.gameObject);
}
if (disPlayState == DisPlayState.addAlpha2)
{
if (Logo_qmtgTrans != null)
AlphaControl(false, DisPlayState.delay3, Logo_qmtgTrans.gameObject);
}
if (disPlayState == DisPlayState.delay3)
{
DelayTime(DisPlayState.minusAlpha3);
}
if (disPlayState == DisPlayState.minusAlpha3)
{
if (Logo_qmtgTrans != null)
AlphaControl(true, DisPlayState.addAlpha3, Logo_qmtgTrans.gameObject);
}
if (disPlayState == DisPlayState.addAlpha3)
{
if (Logo_logo != null)
AlphaControl(false, DisPlayState.start, Logo_logo.gameObject);
}
}
//控制Alpha值减小和增加
private void AlphaControl(bool minus, DisPlayState nextState, GameObject _logo)
{
if (minus)
{
Alpha -= Time.deltaTime * 1 / AlphaSpeed;
if (Alpha <= 0)
{
disPlayState = nextState;
//if (_logo.name == "Logo_logo")
//{
// Logo_logo.gameObject.SetActive(true);
// Logo_qmtgTrans.gameObject.SetActive(false);
// Logo_brand.gameObject.SetActive(false);
//}
//else if (_logo.name == "Logo_qmtg")
//{
// Logo_logo.gameObject.SetActive(false);
// Logo_qmtgTrans.gameObject.SetActive(true);
// Logo_brand.gameObject.SetActive(false);
//}
//else if (_logo.name == "Logo_brand")
//{
// Logo_logo.gameObject.SetActive(false);
// Logo_qmtgTrans.gameObject.SetActive(false);
// Logo_brand.gameObject.SetActive(true);
//}
//else
//{
// Debug.LogError("Logo消失了");
//}
}
_logo.GetComponent<RawImage>().color = new Color(1, 1, 1, Alpha);
}
else
{
Alpha += Time.deltaTime * 1 / AlphaSpeed;
if (Alpha >= 1)
{
disPlayState = nextState;
}
_logo.GetComponent<RawImage>().color = new Color(1, 1, 1, Alpha);
}
}
//延时并切换状态
private void DelayTime(DisPlayState _state)
{
Timer -= Time.deltaTime;
if (Timer <= 0)
{
disPlayState = _state;
Timer = time;
}
}
//显示Logo的各种状态枚举
private enum DisPlayState
{
start,
delay,
minusAlpha,
addAlpha,
delay2,
minusAlpha2,
addAlpha2,
delay3,
minusAlpha3,
addAlpha3,
end
}
unity中实现三个Logo图片进行若隐若现的切换并有延时切换图片的效果的更多相关文章
- unity中实现三个Logo图片进行3秒钟的若隐若现后互相切换Logo图片
private List<Sprite> storeTexture; public void Start() { storeTexture = new List<Sprite> ...
- 浅谈unity中gamma空间和线性空间
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概述 很久没有写文章了,今天写一篇对gamma空间和线性空间的个人理解总结,在查阅和学习了各个资料后,算是一个个人笔记 ...
- Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug
问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...
- 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...
- 解读Unity中的CG编写Shader系列三
转自http://www.itnose.net/detail/6096068.html 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章 ...
- [翻译]Unity中的AssetBundle详解(三)
构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们 ...
- C#与unity中base64string和图片互转
C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- 【转】Unity中的协同程序-使用Promise进行封装(三)
原文:http://gad.qq.com/program/translateview/7170967 译者:崔国军(飞扬971) 审校:王磊(未来的未来) 在这个系列的最后一部分文章,我们要通过 ...
- 从Unity中的Attribute到AOP(三)
上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...
随机推荐
- 数据库 Mysql 使用,优化,索引
数据库事务的隔离级别,由低到高 : READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读.不可重复读和幻读问题. READ COMMITTED(读已提交 ...
- css无定宽水平居中
转载:http://www.cnblogs.com/jogen/p/5213566.html 这个博客的菜单ui还是棒棒的. 方法一 思路:显示设置父元素为:table,子元素为:cell-table ...
- Python全栈开发-有趣的小程序
进度条的打印 import sys,time for i in range(20): sys.stdout.write('$') #stdout是标准输出的意思,在一般电脑上,stdout的 ...
- MATLAB程序控制结构
- 关于类、方法、对象(实例):通过一个例子看一下self都做了哪些事情
我们在定义一个类时,经常会在类的各个方法中看到self,那么在程序执行时self到底起了什么作用,什么时候要加self,这一点需要我们思考并好好理解.之前在学习时没有想这么多,加之用pycharm写代 ...
- 转载:删除github上文件夹的两种方式
http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...
- WinForm下窗体权限设计
权限设计 笔者不才看了园子里面很多园友写关于权限设计这块内容,那么笔者也在添一笔.这个是笔者在上完软件工程课程后,上交的一篇笔者论文,这里分享给大家交流,当然笔者经验尚浅,若内容有误,请大家指点出 ...
- p1518 The Tamworth Two
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...
- jquery判断设备是否是手机
//判断是否是手机 function IsMobile() { var isMobile = { Android: function () { return navigator.userAgent.m ...
- php绝对路径转相对路径
/** * 绝对路径转成相对 路径 * $path相对于$base的相对路径 * @param string $base * @param string $path * 思路:去除共同部分 */ fu ...