Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using DG.Tweening;
- using UnityEngine;
- /// <summary>
- /// SpriteRenderer を点滅させるコンポーネント
- /// </summary>
- [DisallowMultipleComponent]
- public sealed class Blinker : MonoBehaviour
- {
- //====================================================================================
- // 変数(SerializeField)
- //====================================================================================
- [SerializeField] private SpriteRenderer m_spriteRenderer = null ;
- [SerializeField] private float m_duration = 0 ; // 点滅の長さ
- [SerializeField] private int m_count = 0 ; // 点滅回数
- [SerializeField] private float m_alpha = 0 ; // 点滅する時の透明度
- //====================================================================================
- // 変数
- //====================================================================================
- private bool m_isBlink ;
- private Tween m_tween ;
- //====================================================================================
- // 関数
- //====================================================================================
- /// <summary>
- /// 破棄される時に呼び出されます
- /// </summary>
- private void OnDestroy()
- {
- if ( m_tween != null )
- {
- m_tween.Kill();
- m_tween = null;
- }
- }
- /// <summary>
- /// 点滅します
- /// </summary>
- [ContextMenu( "Blink" )]
- public void Blink()
- {
- if ( m_tween != null )
- {
- m_tween.Kill();
- }
- m_tween = DOTween
- .To( value => { }, 0, 1, m_duration )
- .OnStepComplete( () => DoBlink( !m_isBlink ) )
- .SetLoops( m_count * 2, LoopType.Restart )
- .OnComplete( () => DoBlink( false ) )
- ;
- DoBlink( false );
- }
- /// <summary>
- /// 点滅する時に呼び出されます
- /// </summary>
- private void DoBlink( bool isBlink )
- {
- m_isBlink = isBlink;
- var color = m_spriteRenderer.color;
- color.a = isBlink ? m_alpha : 1;
- m_spriteRenderer.color = color;
- }
- }
Add Comment
Please, Sign In to add comment