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图片进行若隐若现的切换并有延时切换图片的效果的更多相关文章

  1. unity中实现三个Logo图片进行3秒钟的若隐若现后互相切换Logo图片

    private List<Sprite> storeTexture; public void Start() { storeTexture = new List<Sprite> ...

  2. 浅谈unity中gamma空间和线性空间

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概述 很久没有写文章了,今天写一篇对gamma空间和线性空间的个人理解总结,在查阅和学习了各个资料后,算是一个个人笔记 ...

  3. Unity中调用Windows窗口句柄以及根据需求设置并且解决扩展屏窗体显示错乱/位置错误的Bug

    问题背景: 现在在搞PC端应用开发,我们开发中需要调用系统的窗口以及需要最大化最小化,缩放窗口拖拽窗口,以及设置窗口位置,去边框等功能 解决根据: 使用user32.dll解决 具体功能: Unity ...

  4. 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...

  5. 解读Unity中的CG编写Shader系列三

    转自http://www.itnose.net/detail/6096068.html 在上一个例子中,我们得到了由mesh组件传递的信息经过数学转换至合适的颜色区间以颜色的形式着色到物体上.这篇文章 ...

  6. [翻译]Unity中的AssetBundle详解(三)

    构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们 ...

  7. C#与unity中base64string和图片互转

    C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  8. 【转】Unity中的协同程序-使用Promise进行封装(三)

    原文:http://gad.qq.com/program/translateview/7170967 译者:崔国军(飞扬971)    审校:王磊(未来的未来) 在这个系列的最后一部分文章,我们要通过 ...

  9. 从Unity中的Attribute到AOP(三)

    上一篇我们对系统的Attributes进行了MSIL代码的查看,了解到了其本质就是一个类的构造函数.本章我们将编写自己的Attributes. 首先我们定义书的属性代码,如下: [AttributeU ...

随机推荐

  1. python静态方法、类方法

    常规: class Dog(object): def __init__(self,name): self.name=name def eat(self): print('%s is eating'%s ...

  2. 学习笔记27—python中numpy.ravel() 和 flatten()函数

    简介 首先声明两者所要实现的功能是一致的(将多维数组降位一维).这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平).两者的区别在于返回拷贝(copy)还是返回视图(vie ...

  3. 从flask视角理解angular(二)Blueprint VS Component

    Component类似flask app下面的每个blueprint. import 'rxjs/add/operator/switchMap'; import { Component, OnInit ...

  4. 牛客练习赛26 xor序列

    xor序列 思路:线性基 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include< ...

  5. HTML第三章总结

    在这一章节中,主要讲了 HTML 中众多的 element,element 就像在建筑房屋时候的材料,它可以分为两种: Block Element Inline ElementBlock Elemen ...

  6. English trip EM2-PE-1B Teacher:Patirck

    PE = 演讲课 课上内容(Lesson) How are you today?  你今天怎么样? What is your name?  你的名字叫什么? What do you come from ...

  7. mysql防注入

    1.对用户输入的数据进行过滤 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取. 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库 ...

  8. Python遍历文件个文件夹

    在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...

  9. 【Oracle】【7】去掉字符串中的空格/字符

    SELECT TRIM(' 去除前后空格 ') FROM DUAL; SELECT REPLACE(' 去除 任意位置的空格 ', ' ', '') FROM DUAL; 扩展: 1,both, tr ...

  10. reflow 和 repaint

    Reflow(渲染):对于DOM结构中的各个元素都有自己的盒模型,浏览器根据各种样式(浏览器的.开发人员定义的等)来计算,并根据计算结果将元素放到它该出现的位置,这个过程称之为reflow. refl ...