//----------------------------------------------------------------- //! @summary 楽曲データの保存処理 //! //! @parameter [filePath] 保存するファイルパス //! //! @return なし //----------------------------------------------------------------- public void SaveMusicPiece(string filePath) { // 音楽ファイルのパスを取得する string audioFilePath = m_bgmSheetController.GetAudioFilePath(); // BGMデータを取得する PiarhythmDatas.BGMData bgmData = m_bgmSheetController.GetBGMData(); if ((audioFilePath == null) && (bgmData != null)) { audioFilePath = bgmData.m_path; } // BGMをコピーする if ((audioFilePath != null) && (bgmData != null)) { PiarhythmUtility.CopyFile(audioFilePath, bgmData.m_path); } // ノーツデータを取得する PiarhythmDatas.NoteData[] notesDatas = m_notesManager.GetNotesDatas(); // 設定データを取得する PiarhythmDatas.OptionData optionData = m_optionSheetController.GetOptionData(); // 楽曲データを作成する PiarhythmDatas.MusicPieceData musicPieceData = ScriptableObject.CreateInstance <PiarhythmDatas.MusicPieceData>(); musicPieceData.m_bgmData = bgmData; musicPieceData.m_noteDataList = notesDatas; musicPieceData.m_optionData = optionData; // json文字列に変換する string jsonString = JsonConvert.SerializeObject(musicPieceData, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize }); // 拡張子があるか調べる if (Path.GetExtension(filePath) != ".json") { filePath += ".json"; } // ファイルに書き込んで保存する PiarhythmUtility.WriteFileText(filePath, jsonString); }
//----------------------------------------------------------------- //! @summary 楽曲データの読み込み処理 //! //! @parameter [filePath] 読み込むファイルパス //! //! @return なし //----------------------------------------------------------------- public void LoadMusicPiece(string filePath) { // ファイルを読み込む string jsonString = null; PiarhythmUtility.ReadFileText(filePath, ref jsonString); // オブジェクトに変換する PiarhythmDatas.MusicPieceData musicPieceData = JsonConvert.DeserializeObject <PiarhythmDatas.MusicPieceData>(jsonString); // 設定データの設定と初期化 m_optionSheetController.Start(musicPieceData.m_optionData); // BGMデータの設定 if (musicPieceData.m_bgmData != null) { if (musicPieceData.m_bgmData.m_path == "") { m_bgmSheetController.SetBGMData(null); } else { m_bgmSheetController.SetBGMData(musicPieceData.m_bgmData); } } // 通常ノーツの生成 foreach (PiarhythmDatas.NoteData noteData in musicPieceData.m_noteDataList) { // ノーツの生成 if (noteData.m_nextNoteData == null) { m_notesManager.CreateNotes(noteData); } else { m_notesManager.CreateConnectNote(noteData); } } }
//----------------------------------------------------------------- //! @summary 初期化処理 //! //! @parameter [void] なし //! //! @return なし //----------------------------------------------------------------- void Start() { // 設定データを読み込む string jsonString = null; PiarhythmUtility.ReadFileText(PiarhythmDatas.SETTING_DATA_FILE_PATH, ref jsonString); // インスタンスを作成する m_settingData = JsonConvert.DeserializeObject <PiarhythmDatas.SettingData>(jsonString); // 設定データを設定する m_musicController.SetSettingData(m_settingData); // プレイする楽曲データのファイルパスを取得する string filePath = PlayerPrefs.GetString(PiarhythmDatas.PLAY_MUSIC_PIECE_FILE_PATH, null); if (filePath == "") { filePath = PiarhythmDatas.MUSIC_PIECE_DIRECTORY_PATH + "YUBIKIRI-GENMAN -special edit-.json"; } // 楽曲データを読み込む PiarhythmUtility.ReadFileText(filePath, ref jsonString); // インスタンスを作成する m_musicPieceData = JsonConvert.DeserializeObject <PiarhythmDatas.MusicPieceData>(jsonString); // 背景を作成する if (m_musicPieceData.m_optionData.m_tempDatas.Length != 0) { for (int i = 1; i < m_musicPieceData.m_optionData.m_tempDatas.Length; ++i) { m_musicPieceData.m_optionData.m_tempDatas[i].m_startMeasure += 2; } } m_musicPieceData.m_optionData.m_wholeMeasure += 5; m_musicController.CreateMusicScoreBackGround(m_musicPieceData.m_optionData); // 楽曲全体の時間を取得する m_wholeTime = m_musicController.GetWholeTime(); // ノーツを生成する for (int i = 0; i < m_musicPieceData.m_noteDataList.Length; ++i) { m_musicPieceData.m_noteDataList[i].m_startBeat += 8; } m_musicController.CreateNoteList(m_musicPieceData.m_noteDataList); // BGMを読み込む if (m_musicPieceData.m_bgmData != null) { if (m_musicPieceData.m_bgmData.m_path != null) { // 読み込み開始フラグをたてる m_loadFlag = true; // コルーチンを設定する m_coroutine = PiarhythmUtility.LoadAudioFile(m_musicPieceData.m_bgmData.m_path); } else { // アニメーションを開始する m_keyboardController.PlayAnimation(); } } else { // アニメーションを開始する m_keyboardController.PlayAnimation(); } // BGMの開始時間を計算する // 一拍当たりの時間を求める float beatPerTempo = 60.0f / m_musicPieceData.m_optionData.m_tempDatas[0].m_tempo; m_bgmStartTime = beatPerTempo * 8.0f; }