/// <summary> /// BGMを再生する /// </summary> /// <param name="aFilePath">resources/sound/bgm/ + aFilePath</param> public static void playBgm(string aFilePath, LoopType aLoopType = LoopType.normalConnect, float aVolume = 1) { if (mBgm == null) { mBgm = MyBehaviour.create <AudioSource>(); mBgm.name = "BGM AudioSource"; mBgm.gameObject.AddComponent <MyBehaviour>(); GameObject.DontDestroyOnLoad(mBgm); } mBgm.clip = Resources.Load <AudioClip>("sound/bgm/" + aFilePath); mBgm.time = 0; mBgm.volume = aVolume; mBgm.Play(); MyBehaviour tBehaviour = mBgm.gameObject.GetComponent <MyBehaviour>(); if (mBgmLoopCoroutine != null) { tBehaviour.StopCoroutine(mBgmLoopCoroutine); } switch (aLoopType) { case LoopType.normalConnect: mBgmLoopType = aLoopType; mBgmLoopCoroutine = tBehaviour.StartCoroutine(runNormalConnect(mBgm)); break; } }
public void play() { float tCurrentMusicTime = MusicScoreData.quarterBeatToMusicTime(mScore.mCurrentQuarterBeat); mPlayer.mCurrentSecond = tCurrentMusicTime; if (tCurrentMusicTime < 0) { mPlayer.playDelayed(-tCurrentMusicTime); mMoveScoreCoroutine = mScore.moveBy(new Vector3(0, (mScore.mStartMusicPosition - mScore.positionY) * (1 - 0.5f / tCurrentMusicTime), 0), -tCurrentMusicTime + 0.5f, () => { mMoveScoreCoroutine = null; mAdjustScoreCoroutine = mBehaviour.StartCoroutine(adjustScoreToPlayer()); }); } else { mPlayer.play(); mAdjustScoreCoroutine = mBehaviour.StartCoroutine(adjustScoreToPlayer()); } }
/// <summary> /// BGMをフェードする /// </summary> /// <param name="aDuration">フェード時間(s)</param> /// <param name="aVolume">フェード後のボリューム</param> public static Coroutine fadeBgm(float aDuration, float aVolume, Action aCallback = null) { MyBehaviour tBehaviour = mBgm.GetComponent <MyBehaviour>(); if (tBehaviour == null) { tBehaviour = mBgm.gameObject.AddComponent <MyBehaviour>(); } if (mBgmFadeCoroutine != null) { tBehaviour.StopCoroutine(mBgmFadeCoroutine); } mBgmFadeCoroutine = tBehaviour.StartCoroutine(fadeBgmCoroutine(mBgm, aVolume, aDuration, aCallback)); return(mBgmFadeCoroutine); }
//子ルーチン実行 static public void runCoroutine(IEnumerator aCoroutine) { ins.StartCoroutine(aCoroutine); }