• 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
    }
    
     
    
  • 相关阅读:
    Stack frame
    How a stack frame works 栈帧的要素与构建步骤
    Symbol Table
    函数调用栈实例研究
    崩溃日志的实例
    符号表的作用和地位
    A C compiler that parses this code will contain at least the following symbol table entries
    前复权是从今天的价格倒推 后复权是从上市价格前推 不复权就是原始K线。
    Thinkphp5+PHPExcel实现批量上传表格数据功能
    PHP 开发API接口签名验证
  • 原文地址:https://www.cnblogs.com/Study088/p/7451802.html
Copyright © 2020-2023  润新知