@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user