using UnityEngine; using DG.Tweening; public class HeatLineSegmentController : MonoBehaviour { private LineRenderer lineRenderer; private Sequence sequence; public float duration = 4f; // 整个冷却淡出时间 public Color whiteColor = Color.white; // 最热 - 白色 public Color orangeColor = new Color(1f, 0.5f, 0f, 1f); // 次热 - 橙色 public Color redColor = Color.red; // 较热 - 红色 public Color coldColor = Color.black; // 冷却 - 黑色 void Awake() { lineRenderer = GetComponent(); if (lineRenderer == null) { Debug.LogError("HeatLineSegmentController需要LineRenderer组件"); } lineRenderer.startColor = lineRenderer.endColor = whiteColor; } void Start() { // 创建颜色渐变序列 sequence = DOTween.Sequence(); // 白色到橙色 (快速过渡) sequence.Append(DOTween.To(() => lineRenderer.startColor, x => { lineRenderer.startColor = x; lineRenderer.endColor = x; }, orangeColor, duration * 0.1f).SetEase(Ease.InOutQuad)); // 橙色到红色 sequence.Append(DOTween.To(() => lineRenderer.startColor, x => { lineRenderer.startColor = x; lineRenderer.endColor = x; }, redColor, duration * 0.3f).SetEase(Ease.InOutQuad)); // 红色到黑色 sequence.Append(DOTween.To(() => lineRenderer.startColor, x => { lineRenderer.startColor = x; lineRenderer.endColor = x; }, coldColor, duration * 0.3f).SetEase(Ease.InOutQuad)); // 淡出效果 sequence.Append(DOTween.To(() => lineRenderer.startColor.a, x => { Color c = lineRenderer.startColor; c.a = x; lineRenderer.startColor = c; lineRenderer.endColor = c; }, 0f, duration * 0.3f).SetEase(Ease.InQuad)); // 完成后销毁对象 sequence.OnComplete(() => Destroy(gameObject)); } void OnDestroy() { // 清理DOTween序列 sequence?.Kill(); } }