c30239111c
- 新增 统一 `ResourceLoader`类,负责同步/异步加载资源,并对已加载的资源缓存。 - 修改 `MusicTransition`, `AudioSystem`, `LongAudioContainerPlayer`, `MusicSegment`, 'SfxSystem`, `HapticSystem`使用最新的`ResourceLoader`。
54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using UnityEngine;
|
|
|
|
namespace OCES.Audio
|
|
{
|
|
public partial class MusicSegment
|
|
{
|
|
public bool IsOffBeat { get; set; }
|
|
}
|
|
|
|
|
|
public partial class MusicSegmentConfig
|
|
{
|
|
// TODO: 负偏移功能待开发
|
|
|
|
public void Validate()
|
|
{
|
|
foreach (MusicSegment segment in this.m_musicSegmentInfos.Values)
|
|
{
|
|
AudioClip clip = AudioSystem.Instance.ResourceLoader.LoadSync<AudioClip>($"Audios/{segment.Name}");
|
|
if (!clip)
|
|
{
|
|
Debug.LogError($"[MusicSegmentConfig] 音频文件未找到: {segment.Name}, SegmentId: {segment.Id}");
|
|
segment.StartOffset = 0;
|
|
segment.EndOffset = 0;
|
|
continue;
|
|
}
|
|
|
|
double clipLength = clip.length;
|
|
|
|
if (segment.StartOffset > clipLength)
|
|
{
|
|
Debug.LogError($"[MusicSegmentConfig] StartOffset({segment.StartOffset}) > AudioClip.length({clipLength}), SegmentId: {segment.Id}, Name: {segment.Name}" +
|
|
"已弃用 StartOffset");
|
|
segment.StartOffset = 0;
|
|
segment.IsOffBeat = true;
|
|
}
|
|
|
|
if (segment.EndOffset > clipLength)
|
|
{
|
|
Debug.LogError($"[MusicSegmentConfig] EndOffset({segment.EndOffset}) > AudioClip.length({clipLength}), SegmentId: {segment.Id}, Name: {segment.Name}");
|
|
segment.EndOffset = 0;
|
|
}
|
|
|
|
if (segment.StartOffset + segment.EndOffset > clipLength)
|
|
{
|
|
Debug.LogError($"[MusicSegmentConfig] StartOffset({segment.StartOffset}) + EndOffset({segment.EndOffset}) > AudioClip.length({clipLength}), SegmentId: {segment.Id}, Name: {segment.Name}");
|
|
segment.StartOffset = segment.EndOffset = 0;
|
|
segment.IsOffBeat = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|