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
}

最新文章

  1. 如何正确建立MYSQL数据库索引
  2. Genymotion出现Unable to load VirtualBox engine问题--100%解决
  3. Android HttpClient GET或者POST请求基本使用方法(转)
  4. beej&#39;s 网络编程 打包数据pack data
  5. [转]Freemarker数据类型转换
  6. Java实战之02Hibernate-05检索策略、检索方式
  7. 通过psping测试结果,初步判断远端服务器的状态
  8. Spring Boot框架的自动配置
  9. Unity编辑器:基于NGUI的引用检测工具
  10. Locust 集合点
  11. BZOJ4756: [Usaco2017 Jan]Promotion Counting(线段树合并)
  12. nginx日志格式字段
  13. Java基础——反射
  14. android View未渲染时获得高度
  15. ExpressRoute 合作伙伴和对等位置
  16. Java中队列
  17. 解题:HEOI 2013 SAO
  18. mysql -- 重装mysql失败的解决办法
  19. 扁平化你的Qt应用程序
  20. sencha touch 入门系列 (四)sencha touch 新建项目目录结构解析

热门文章

  1. vuex学习与实践——mapState、getter、mapGetters
  2. Go使用protobuf
  3. GrindEQ Math Utilities 2015破解版 图文安装和序列号补丁激活教程
  4. ubuntu解压和压缩文件
  5. String的intern()方法和java关键字、保留字
  6. Sparksql的内置函数的使用以及案例
  7. LeetCode--414--第三大的数
  8. LeetCode--409--最长回文串
  9. 基于react的记账簿开发
  10. MYSQL 总结——1