/// <summary> /// 音符のタイプに基づいて曲の変更 /// </summary> /// <param name="type">音符のタイプ</param> /// <param name="data">曲情報</param> /// <returns></returns> public bool ChangeMusic(Notes.MusicType type, MusicList.MusicData data) { // データがnullだったら if (data == null) { return(false); } // 音のタイプと曲データが同じものだったら if ((nowPlay == type) && (music.clip == data.musicClip)) { // 変更する必要がないので、falseを返す return(false); } // そうでなかったら else { // 曲の停止 StopMusic(); // 変更する必要があるので変数を代入する nowPlay = type; music.clip = data.musicClip; foreach (var startMusic in startMusics) { // デリゲートを呼ぶ startMusic(data); } // trueを返す return(true); } }
/// <summary> /// 音楽の停止 /// </summary> public void StopMusic() { music.Stop(); foreach (var stopMusic in stopsMusics) { // デリゲートを呼ぶ stopMusic(); } // 音のタイプをNONEにする nowPlay = Notes.MusicType.NONE; }
/// <summary> /// 曲情報の取得 /// </summary> /// <param name="type">音符のタイプ</param> /// <returns>曲情報</returns> public MusicList.MusicData GetMusic(Notes.MusicType type) { // どの曲を使うかのインデックス int index = 0; // 音の種類が近づける音だったら if (type == Notes.MusicType.ATTRACT) { index = GetRandom(0, 20); temp = attractMusic.attractMusics[index].musicClip; while (true) { index = GetRandom(0, 20); temp = attractMusic.attractMusics[index].musicClip; if (usedAttractClips.IndexOf(temp) == -1) { usedAttractClips.Add(temp); return(attractMusic.attractMusics[index]); } } } // 音の種類が遠ざける音だったら if (type == Notes.MusicType.AWAY) { index = GetRandom(0, 20); temp = awayMusic.awayMusics[index].musicClip; while (true) { index = GetRandom(0, 20); temp = awayMusic.awayMusics[index].musicClip; if (usedAwayClips.IndexOf(temp) == -1) { usedAwayClips.Add(temp); return(awayMusic.awayMusics[index]); } } } // nullを返す return(null); }