using UnityEngine; using UnityEngine.UI; public class LightBlink : MonoBehaviour { public Image lightImage; // 灯光图片 private float minBlinkInterval = 0.2f; // 每次闪烁的最小间隔 private float maxBlinkInterval = 0.6f; // 每次闪烁的最大间隔 public float minCooldown = 5f; // 最小冷却时间 public float maxCooldown = 10f; // 最大冷却时间 private float nextBlinkTime; // 下一次闪烁时间点 private int remainingBlinks; // 当前剩余的闪烁次数 private bool isInCooldown; // 是否处于冷却状态 private void Start() { // 确保灯光默认是亮着的 if (lightImage != null) { lightImage.enabled = true; } EnterCooldown(); } private void Update() { if (lightImage == null) return; if (isInCooldown && Time.time >= nextBlinkTime) { StartBlinkSequence(); } else if (!isInCooldown && Time.time >= nextBlinkTime) { PerformBlink(); } } private void StartBlinkSequence() { // 随机生成闪烁次数(2到3次) remainingBlinks = Random.Range(2, 4); isInCooldown = false; // 开始第一次闪烁 PerformBlink(); } private void PerformBlink() { // 短暂关闭灯光,再打开 lightImage.enabled = false; // 减少剩余的闪烁次数 remainingBlinks--; // 间隔后重新点亮灯光 Invoke("TurnOnLight", Random.Range(minBlinkInterval, maxBlinkInterval)); // 如果闪烁次数用完,进入冷却 if (remainingBlinks <= 0) { EnterCooldown(); } else { // 继续闪烁,安排下一次闪烁时间 ScheduleNextBlink(minBlinkInterval, maxBlinkInterval); } } private void TurnOnLight() { if (lightImage != null) { lightImage.enabled = true; } } private void EnterCooldown() { // 进入冷却状态,随机冷却时间 isInCooldown = true; lightImage.enabled = true; // 确保灯光保持亮着 ScheduleNextBlink(minCooldown, maxCooldown); } private void ScheduleNextBlink(float minTime, float maxTime) { // 随机生成下一次事件的时间间隔 float interval = Random.Range(minTime, maxTime); nextBlinkTime = Time.time + interval; } }