zoukankan      html  css  js  c++  java
  • 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
    }
    
     
    
  • 相关阅读:
    状压DP
    数位dp
    浅谈网络最大流
    Luogu p2456 二进制方程
    dp基础√
    双联通分量与二分图
    是时候再写一篇新的博客了
    神仙网络最大流
    状态压缩dp相关
    图论 test solution
  • 原文地址:https://www.cnblogs.com/Study088/p/7451802.html
Copyright © 2011-2022 走看看