Ver.0.3.0.33
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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<LineRenderer>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user