1. 程式人生 > >Unity-實現UGUI閃爍效果

Unity-實現UGUI閃爍效果

沒什麼特殊點,直接一套程式碼

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class ShanShuoAnim : MonoBehaviour {

    private float alpha = 0.2f;
    private float alphaSpeed = 8f;
    private bool isShow = true;//用來控制閃爍的內容
    private CanvasGroup cg;
    private bool isClick = false;//用來控制 徹底不需要走動畫了
    private Image shanImg;
    public Sprite shan_sprite;  //外部傳進來的
    void Start()
    {
        cg = this.transform.GetComponent<CanvasGroup>();
        shanImg = this.transform.GetComponent<Image>();
    }

    void Update()
    {
        if (isClick)
        {
            if (isShow)
            {
                if (alpha != cg.alpha)
                {
                    cg.alpha = Mathf.Lerp(cg.alpha, alpha, alphaSpeed * Time.deltaTime);  //這個方法表示的是一種簡便過程 傳入初始和想達到的
                    if (Mathf.Abs(alpha - cg.alpha) <= 0.01)
                    {
                        //Debug.Log("更新2===" + alpha + "===" + cg.alpha);
                        cg.alpha = alpha; isShow = false;
                    }
                }
            }
            else
            {
                if (1 != cg.alpha)
                {
                    cg.alpha = Mathf.Lerp(cg.alpha, 1, alphaSpeed * Time.deltaTime);  //這個方法表示的是一種簡便過程 傳入初始和想達到的
                    if (Mathf.Abs(1 - cg.alpha) <= 0.01)
                    {
                        //Debug.Log("更新3===" + alpha + "===" + cg.alpha);
                        cg.alpha = 1; isShow = true;
                    }
                }
            }
        }
    }

    public void ShowAnim()
    {
        //alpha = 1;
        isClick = true;
        shanImg.sprite = shan_sprite;
        //cg.blocksRaycasts = true;//可以和該UI物件互動
    }

    public void HideAnim()
    {
        isClick = false;
        //alpha = 0;

        //cg.blocksRaycasts = false;//不可以和該UI物件互動
    }
}

掛在指令碼

實現!

關注我的微信公眾號,隨時都有技術,遊戲,認知,職場/發展的優質文章推送!

微信掃一掃下方二維碼即可關注:

如果文章對您有幫助,歡迎撩我: