Ejemplo n.º 1
0
    //-----------------------------------------------------------------
    //! @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);
    }