TimeLine大改

Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
2025-07-18 18:43:09 +08:00
parent fc3b4d7207
commit 1b5084626d
29 changed files with 16837 additions and 17453 deletions

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using DG.Tweening;
using Ichni.RhythmGame;
using Sirenix.Utilities;
using TMPro;
@@ -61,8 +62,7 @@ namespace Ichni.Editor
if (timePointerModule.timePointerInterval + scrollValue >= 30)
{
timePointerModule.timePointerInterval += scrollValue;
timePointerModule.UpdatePointers();
timePointerModule.SetRange(songTime);
timePointerModule.SortPos();
SetTimeLine(EditorManager.instance.uiManager.inspector.connectedGameElement);
}
@@ -91,24 +91,43 @@ namespace Ichni.Editor
BeatField.text = songBeat.ToString("F2");
}
private Tweener _activeTweener; // 保存当前动画的引用
public void SetTime(string time)
{
EditorManager.instance.musicPlayer.PauseMusic();
EditorManager.instance.musicPlayer.audioSource.time = Mathf.Clamp(float.Parse(time) - EditorManager.instance.songInformation.offset, 0, EditorManager.instance.songInformation.songLength);
EditorManager.instance.songInformation.songTime = float.Parse(time);
float parsedTime = float.Parse(time);
float offsetedtime = Mathf.Clamp(parsedTime - EditorManager.instance.songInformation.offset, 0, EditorManager.instance.songInformation.songLength);
EditorManager.instance.musicPlayer.audioSource.time = offsetedtime;
if (_activeTweener != null && _activeTweener.IsActive())
{
_activeTweener.Complete();
}
// 使用 DOTween 来平滑过渡到新的时间
_activeTweener = DOTween.To(() => EditorManager.instance.songInformation.songTime, x => EditorManager.instance.songInformation.songTime = x, parsedTime, 0.2f)
.OnUpdate(UpdateTime);
timePointerModule.UpdatePointers();
timePointerModule.SetRange(songTime);
// timePointerModule.UpdatePointers();
// timePointerModule.SetRange(songTime);
}
public void SetBeat(string beat)
{
EditorManager.instance.musicPlayer.PauseMusic();
EditorManager.instance.musicPlayer.audioSource.time = Mathf.Clamp((float.Parse(beat) * timePerBeat) - EditorManager.instance.songInformation.offset, 0, EditorManager.instance.songInformation.songLength);
EditorManager.instance.songInformation.songTime = float.Parse(beat) * timePerBeat;
float parsedTime = float.Parse(beat) * timePerBeat;
float offsetedtime = Mathf.Clamp(parsedTime - EditorManager.instance.songInformation.offset, 0, EditorManager.instance.songInformation.songLength);
EditorManager.instance.musicPlayer.audioSource.time = offsetedtime;
if (_activeTweener != null && _activeTweener.IsActive())
{
_activeTweener.Complete();
}
timePointerModule.UpdatePointers();
timePointerModule.SetRange(songTime);
_activeTweener = DOTween.To(() => EditorManager.instance.songInformation.songTime, x => EditorManager.instance.songInformation.songTime = x, parsedTime, 0.2f)
.OnUpdate(UpdateTime);
// EditorManager.instance.musicPlayer.audioSource.time = Mathf.Clamp((float.Parse(beat) * timePerBeat) - EditorManager.instance.songInformation.offset, 0, EditorManager.instance.songInformation.songLength);
// EditorManager.instance.songInformation.songTime = float.Parse(beat) * timePerBeat;
// timePointerModule.UpdatePointers();
// timePointerModule.SetRange(songTime);
}
}