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 = Resources.Load($"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; } } } } }