38 lines
857 B
C#
38 lines
857 B
C#
using UnityEngine;
|
|
|
|
public class WarningBlink : MonoBehaviour
|
|
{
|
|
public float rate = 1f;
|
|
private int _tintId;
|
|
private Color _color;
|
|
private float _ratio;
|
|
private Material _material;
|
|
|
|
private void Awake()
|
|
{
|
|
_tintId = Shader.PropertyToID("_TintColor");
|
|
_material = GetComponent<Renderer>().material;
|
|
_color = _material.GetColor(_tintId);
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
_ratio = 0f;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (_material != null)
|
|
Destroy(_material);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
_ratio += Time.deltaTime * rate;
|
|
if (_ratio > 1f)
|
|
_ratio = _ratio - Mathf.Floor(_ratio);
|
|
var colorRatio = 1f - Mathf.Abs(_ratio - 0.5f) * 2f;
|
|
_color.a = colorRatio;
|
|
_material.SetColor(_tintId, _color);
|
|
}
|
|
} |