using System.Collections.Generic; using UnityEngine; public class Note { [HideInInspector] public float Time; // 판정 시각(초) [HideInInspector] public int Lane; // 레인 인덱스 (단일 레인이면 0) } [CreateAssetMenu(fileName = "RhythmChart", menuName = "CatsRoom/RhythmChart")] public class RhythmChart : ScriptableObject { public AudioClip SongClip; // 노래 파일 public TextAsset MidiFile; // FL Studio에서 내보낸 .mid (확장자를 .bytes로 임포트) public float Offset; // 곡 시작과 MIDI 0틱 사이 보정(초) public float BpmOverride; // 0이면 MIDI 내장 템포 사용, >0이면 이 BPM으로 강제 public List LanePitches = new(); // 비우면 모든 노트를 레인 0으로. 채우면 (index=레인) 매핑 // MIDI를 파싱해 노트 시간 목록 생성 public List GenerateNotes() { if (MidiFile == null) { Debug.LogWarning($"[RhythmChart] {name}: MidiFile이 비어 있습니다."); return new List(); } return MidiChartParser.Parse(MidiFile.bytes, Offset, BpmOverride, LanePitches); } }