Files
ichni_Official/Assets/Scripts/Game/Animations/AnimationBase.cs
SoulliesOfficial 1bc9af280b 同步
2026-04-03 10:53:11 -04:00

71 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract partial class AnimationBase : GameElement, IHaveTimeDurationSubmodule
{
#region [] Attributes & Related Objects
public GameElement animatedObject;
public FlexibleReturnType animationReturnType;
#endregion
#region [] Submodule Interfaces
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
public override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
}
#endregion
#region [] Lifecycle & Management
public override void AfterInitialize()
{
base.AfterInitialize();
// 【新增】受管家管控
GameManager.Instance.animationManager.RegisterAnimation(this);
float delay = GameManager.Instance.songInformation.delay;
if (timeDurationSubmodule.CheckTimeInDuration(-delay))
{
ManualUpdate(-delay, true);
}
}
/// <summary>
/// 更新动画
/// </summary>
/// <param name="songTime">歌曲时间</param>
protected abstract void UpdateAnimation(float songTime, bool forceUpdate);
public virtual void ManualUpdate(float currentSongTime, bool forceUpdate = false)
{
if (timeDurationSubmodule.CheckTimeInDuration(currentSongTime))
{
UpdateAnimation(currentSongTime, forceUpdate);
}
if (timeDurationSubmodule.CheckAfterEndTime(currentSongTime))
{
GameManager.Instance.animationManager.UnregisterAnimation(this);
}
}
/// <summary>
/// 施加时间偏移即移动所有Flexible参数的时间
/// </summary>
/// <param name="offset"></param>
public virtual void ApplyTimeOffset(float offset)
{
timeDurationSubmodule.startTime += offset;
timeDurationSubmodule.endTime += offset;
}
#endregion
}
}