using UnityEngine; using System.Collections; [System.Serializable] public class AnimationCurveProperty { public AnimationCurve flickerCurve; public float timeLength = 1f; public bool randomStartTime = false; float _startTime = 0; float _currentTime = 0; public float EvaluateStep(float delta) { if (_startTime == 0 && randomStartTime) _startTime = Random.Range(0.01f, 1f); _currentTime += delta; return flickerCurve.Evaluate(((_currentTime / timeLength) + _startTime) % 1f); } } public class flicker : MonoBehaviour { public float lightIntensity = 1f; public AnimationCurveProperty flickerCurve; void Update() { GetComponent().intensity = lightIntensity * flickerCurve.EvaluateStep(Time.deltaTime); } }