public void PrepareSE(SEID seid, System.Action callback = null) { if (m_sePathMap == null) { m_sePathMap = SESettings.pathMap; } if (!m_sePathMap.ContainsKey(seid)) { if (callback != null) { callback(); } return; } m_seLoader.Load(m_sePathMap[seid], (AudioClip clip) => { if (clip != null) { m_AudioClipSystemTable.Add(seid, clip); } if (callback != null) { callback(); } }); }
//------------------------------------------------------------------------ /*! * @brief SE発行 * @param[in] nSoundLabel 任意のSEラベル */ //------------------------------------------------------------------------ static public void PlaySE(SEID nSoundLabel) { if (SoundManager.HasInstance) { SoundManager.Instance.PlaySE(nSoundLabel); } }
void Play(SEID id, float vol) { if (this.unplayedSESources.Count == 0) { return; } var seManager = this.unplayedSESources[0]; seManager.Play(this.se[(int)id], vol); this.unplayedSESources.Remove(seManager); this.playedSESources.Add(seManager); }
//---------------------------------------------------------------------------- /*! * @brief 埋め込みSE再生 * @param[in] nSoundLabel 任意のSEラベル */ //---------------------------------------------------------------------------- public void PlaySE(SEID nSoundLabel) { if (!m_SEEnable) { Debug.LogError("DISABLE_SE"); return; } if (nSoundLabel == SEID.SE_NONE) { return; } try { AudioClip clip = null; bool waitPlayEnd = false; // 置き換えSEが存在する場合は置き換えが優先 { AudioClip[] clips; bool is_exist_replace = m_AudioClipReplaceTable.TryGetValue(nSoundLabel, out clips); if (is_exist_replace) { if (clips.IsNullOrEmpty() == false) { int n = (int)RandManager.GetRand(0, (uint)clips.Length); clip = clips[n]; } } } // ラベルに該当するSEの取得 if (clip == null) { bool ret = m_AudioClipSystemTable.TryGetValue(nSoundLabel, out clip); if (!ret) { Debug.LogError("NOT_FOUND_SE:" + nSoundLabel); return; } } //-------------------------------- // 指定ラベルのSE再生指示 //-------------------------------- switch (nSoundLabel) { case SEID.SE_INGAME_LEADERSKILL: // リーダースキルパワーアップ音 if (m_AudioSrcLeaderSkill != null) { if (m_AudioSrcLeaderSkill.clip == null) { m_AudioSrcLeaderSkill.clip = clip; } if (m_AudioSrcLeaderSkill.isPlaying == false) { m_AudioSrcLeaderSkill.Play(); } } return; case SEID.SE_BATTLE_ENEMYDEATH: // 敵死亡音 if (m_AudioSrcEnemyDead != null) { if (m_AudioSrcEnemyDead.clip == null) { m_AudioSrcEnemyDead.clip = clip; } if (m_AudioSrcEnemyDead.isPlaying == false) { m_AudioSrcEnemyDead.Play(); } } return; case SEID.SE_BATLE_SKILL_EXEC: // スキル成立音 if (m_AudioSrcSkillExec != null) { if (m_AudioSrcSkillExec.clip == null) { m_AudioSrcSkillExec.clip = clip; } if (m_AudioSrcSkillExec.isPlaying == false) { m_AudioSrcSkillExec.Play(); } } return; default: // その他の音 break; } m_AudioSrcDefault.PlayOneShot(clip); // 再生終了予定時間を記録する(終了待ちが必要な物のみ) if (waitPlayEnd == true) { m_LastPlayTime = Time.time + clip.length; } } catch { #if BUILD_TYPE_DEBUG Debug.LogError("PlaySE Sound Null! - " + nSoundLabel); #endif return; } }
//---------------------------------------------------------------------------- /*! * @brief Unity固有処理:インスタンス制御関連:インスタンス破棄時に呼出し */ //---------------------------------------------------------------------------- protected override void OnDestroy() { base.OnDestroy(); try { AudioClip clip; // 共通SE破棄 if (m_AudioClipSystemTable != null) { for (SEID i = SEID.SE_NONE; i < SEID.SE_MAX; i++) { bool ret = m_AudioClipSystemTable.TryGetValue(i, out clip); if (ret) { Resources.UnloadAsset(clip); m_AudioClipSystemTable[i] = null; } } m_AudioClipSystemTable = null; } // 読み込んだSEの破棄 if (m_AudioClipTable != null) { for (int i = 0; i < m_AudioDataList.m_BufferSize; i++) { if (m_AudioDataList[i] == null) { continue; } uint fix_id = m_AudioDataList[i].fix_id; bool ret = m_AudioClipTable.TryGetValue(fix_id, out clip); if (ret) { Resources.UnloadAsset(clip); m_AudioClipTable[fix_id] = null; } } m_AudioClipTable = null; } // マスター破棄 if (m_AudioDataList != null) { for (int i = 0; i < m_AudioDataList.m_BufferSize; i++) { m_AudioDataList[i] = null; } m_AudioDataList.Release(); } } catch (Exception e) { Debug.LogError(e.Message); } }
public void RemoveSE(SEID seid) { m_AudioClipSystemTable.Remove(seid); }
/// <summary> /// 差し替えSEを設定 /// </summary> /// <param name="seid"></param> /// <param name="clips"></param> public void setReplaceSE(SEID seid, AudioClip[] clips) { m_AudioClipReplaceTable.Add(seid, clips); }
/// <summary> /// SEを差し替え /// </summary> /// <param name="asset_bundle"></param> private void replaceSound() { if (m_ReplaceAssetReference == null) { return; } if (SoundManager.HasInstance) { SoundManager.Instance.clearReplaceSE(); } AudioClip[][] replace_infos = new AudioClip[3][]; for (int idx = 0; idx < 3; idx++) { ReplaceAssetReferenceSE replace_info = null; switch (idx) { case 0: replace_info = m_ReplaceAssetReference.m_SE1; break; case 1: replace_info = m_ReplaceAssetReference.m_SE2; break; case 2: replace_info = m_ReplaceAssetReference.m_SE3; break; } if (replace_info != null) { replace_infos[idx] = new AudioClip[(int)SEID.SE_MAX] { null, replace_info.m_SE_STARGE_START, //!< SE:システムSE:ジングル:ゲーム開始 replace_info.m_SE_STARGE_CLEAR, //!< SE:システムSE:ジングル:ゲームクリア replace_info.m_SE_STAGE_CLEAR_UI, //!< SE:システムSE:ジングル:ゲームクリアUI replace_info.m_SE_STARGE_GAMEOVER, //!< SE:システムSE:ジングル:ゲームオーバー replace_info.m_SE_BATLE_WINDOW_OPEN, //!< SE:バトルSE:バトルウィンドウ:開く replace_info.m_SE_BATLE_WINDOW_CLOSE, //!< SE:バトルSE:バトルウィンドウ:閉じる replace_info.m_SE_BATLE_COST_PUT, //!< SE:バトルSE:コストを追加成立 replace_info.m_SE_BATLE_SKILL_EXEC, //!< SE:バトルSE:スキルが発動 replace_info.m_SE_BATLE_SKILL_REPLACE, //!< SE:バトルSE:スキルが置き換えられた replace_info.m_SE_BATLE_ATTACK_EN_NORMAL, //!< SE:バトルSE:攻撃音:敵側:デフォルト replace_info.m_SE_BATLE_ATTACK_PC_NORMAL, //!< SE:バトルSE:攻撃音:PC側:デフォルト replace_info.m_SE_BATLE_COUNTDOWN_1, //!< SE:システムSE:カウントダウン:1 replace_info.m_SE_BATLE_COUNTDOWN_2, //!< SE:システムSE:カウントダウン:2 replace_info.m_SE_BATLE_COUNTDOWN_3, //!< SE:システムSE:カウントダウン:3 replace_info.m_SE_BATLE_COUNTDOWN_4, //!< SE:システムSE:カウントダウン:4 replace_info.m_SE_BATLE_COUNTDOWN_5, //!< SE:システムSE:カウントダウン:5 replace_info.m_SE_BATLE_COUNTDOWN_6, //!< SE:システムSE:カウントダウン:6 replace_info.m_SE_BATLE_COUNTDOWN_7, //!< SE:システムSE:カウントダウン:7 replace_info.m_SE_BATLE_COUNTDOWN_8, //!< SE:システムSE:カウントダウン:8 replace_info.m_SE_BATLE_COUNTDOWN_9, //!< SE:システムSE:カウントダウン:9 replace_info.m_SE_BATLE_COST_PLUS_1, //!< SE:システムSE:コスト吸着 replace_info.m_SE_BATLE_COST_PLUS_2, //!< SE:システムSE:コスト吸着 replace_info.m_SE_BATLE_COST_IN, //!< SE:システムSE:コスト配り replace_info.m_SE_BATLE_SKILL_HANDS, //!< SE:システムSE:~HANDSの音 replace_info.m_SE_BATLE_SKILL_CUTIN, //!< SE:システムSE:スキルカットイン replace_info.m_SE_BATLE_SKILL_CAPTION, //!< SE:システムSE:スキルキャプション出現音 replace_info.m_SE_BATLE_SKILL_LIMITBREAK_CUTIN, //!< SE:システムSE:LBSカットイン replace_info.m_SE_BATLE_SKILL_LIMITBREAK_IMPACT, //!< SE:システムSE:LBSインパクト replace_info.m_SE_BATLE_ENEMY_TURN, //!< SE:システムSE:敵ターン経過 replace_info.m_SE_BATLE_UI_OPEN, //!< SE:システムSE:戦闘ウィンドウ開く replace_info.m_SE_INGAME_PANEL_SELECT, //!< SE:インゲームSE:パネル操作:選択音 replace_info.m_SE_INGAME_PANEL_MEKURI, //!< SE:インゲームSE:パネル操作:めくり replace_info.m_SE_INGAME_PANEL_MEKURI_NORMAL, //!< SE:インゲームSE:パネル操作:めくり経過通常 replace_info.m_SE_INGAME_PANEL_MEKURI_SPECIAL, //!< SE:インゲームSE:パネル操作:めくり経過特殊 replace_info.m_SE_INGAME_PANEL_SHOCK, //!< SE:インゲームSE:パネル操作:叩きつけ音 replace_info.m_SE_INGAME_PANEL_MEKURI_S, //!< SE:インゲームSE:パネル操作:めくり(無地パネル用) replace_info.m_SE_INGAME_ACTIVITY_KEY, //!< SE:インゲームSE:パネル発動音:鍵 replace_info.m_SE_INGAME_ACTIVITY_ITEM, //!< SE:インゲームSE:パネル発動音:宝箱 replace_info.m_SE_INGAME_ACTIVITY_TRAP, //!< SE:インゲームSE:パネル発動音:虎ばさみ replace_info.m_SE_INGAME_ACTIVITY_BOMB, //!< SE:インゲームSE:パネル発動音:地雷 replace_info.m_SE_INGAME_ACTIVITY_PITFALL, //!< SE:インゲームSE:パネル発動音:落とし穴 replace_info.m_SE_INGAME_ACTIVITY_ENEMY, //!< SE:インゲームSE:パネル発動音:敵 replace_info.m_SE_INGAME_ACTIVITY_TICKET, //!< SE:インゲームSE:パネル発動音:チケット replace_info.m_SE_INGAME_DOOR_OPEN, //!< SE:インゲームSE:ドア作動音:開く replace_info.m_SE_INGAME_DOOR_BOSS_TATAKI, //!< SE:インゲームSE:ドア作動音:ボスドア:叩く replace_info.m_SE_INGAME_DOOR_BOSS_OPEN, //!< SE:インゲームSE:ドア作動音:ボスドア:開く replace_info.m_SE_INGAME_PATH_PLUS, //!< SE:インゲームSE:パス追加音 replace_info.m_SE_INGAME_QUEST_START_00, //!< SE:インゲームSE:ReadyTo replace_info.m_SE_INGAME_QUEST_START_01, //!< SE:インゲームSE:MoveOn replace_info.m_SE_INGAME_QUEST_START_02, //!< SE:インゲームSE:UI退場音 replace_info.m_SE_MENU_OK, //!< SE:メニューSE:肯定 replace_info.m_SE_MENU_OK2, //!< SE:メニューSE:肯定(強) replace_info.m_SE_MENU_NG, //!< SE:メニューSE:否定 replace_info.m_SE_MENU_RET, //!< SE:メニューSE:戻る replace_info.m_SE_MAINMENU_BLEND_SELECT, //!< SE:メインメニューSE:合成選択 replace_info.m_SE_MAINMENU_BLEND_SELECT_NG, //!< SE:メインメニューSE:合成選択失敗 replace_info.m_SE_MAINMENU_BLEND_EXEC, //!< SE:メインメニューSE:合成実行 replace_info.m_SE_MAINMENU_BLEND_CLEAR, //!< SE:メインメニューSE:合成選択クリア replace_info.m_SE_BATTLE_ENEMYDEATH, //!< SE:バトルSE:敵死亡 replace_info.m_SE_BATTLE_SKILL_HEAL, //!< SE:バトルSE:スキルによるHP回復 replace_info.m_SE_TITLE_CALL_W, //!< SE:タイトルコール:女 replace_info.m_SE_TITLE_CALL_M, //!< SE:タイトルコール:男 4.0.0ファイルがない // 番号がずれると問題があるので復活させました replace_info.m_SE_SHUTTER_OPEN, //!< SE:シャッター:開く replace_info.m_SE_SHUTTER_CLOSE, //!< SE:シャッター:閉じる replace_info.m_SE_TRAP_CANCEL, //!< SE:罠解除 replace_info.m_SE_TRAP_LUCK, //!< SE:よい効果 replace_info.m_SE_TRAP_BAD, //!< SE:わるい効果 replace_info.m_SE_BATTLE_ATTACK_FIRE, //!< SE:炎属性攻撃 replace_info.m_SE_BATTLE_ATTACK_WATER, //!< SE:水属性攻撃 replace_info.m_SE_BATTLE_ATTACK_WIND, //!< SE:風属性攻撃 replace_info.m_SE_BATTLE_ATTACK_NAUGHT, //!< SE:無属性攻撃 replace_info.m_SE_BATTLE_ATTACK_LIGHT, //!< SE:光属性攻撃 replace_info.m_SE_BATTLE_ATTACK_DARK, //!< SE:闇属性攻撃 replace_info.m_SE_BATTLE_ATTACK_HEAL, //!< SE:回復属性攻撃 replace_info.m_SE_BATTLE_BOSS_ALERT, //!< SE:ボスアラート replace_info.m_SE_BATTLE_BOSS_APPEAR, //!< SE:ボス登場 replace_info.m_SE_BATTLE_ATTACK_FIRST, //!< SE:先制攻撃 replace_info.m_SE_BATTLE_ATTACK_BACK, //!< SE:不意打ち攻撃 replace_info.m_SE_BATTLE_BUFF, //!< SE:BUFFスキル replace_info.m_SE_BATTLE_DEBUFF, //!< SE:DEBUFFスキル replace_info.m_SE_INGAME_LEADERSKILL, //!< SE:リーダースキルパワーアップ replace_info.m_SE_SKILL_COMBO_00, //!< SE:スキルコンボ:00 replace_info.m_SE_SKILL_COMBO_01, //!< SE:スキルコンボ:01 replace_info.m_SE_SKILL_COMBO_02, //!< SE:スキルコンボ:02 replace_info.m_SE_SKILL_COMBO_03, //!< SE:スキルコンボ:03 replace_info.m_SE_SKILL_COMBO_04, //!< SE:スキルコンボ:04 replace_info.m_SE_SKILL_COMBO_05, //!< SE:スキルコンボ:05 replace_info.m_SE_SKILL_COMBO_06, //!< SE:スキルコンボ:06 replace_info.m_SE_SKILL_COMBO_07, //!< SE:スキルコンボ:07 replace_info.m_SE_SKILL_COMBO_08, //!< SE:スキルコンボ:08 replace_info.m_SE_SKILL_COMBO_MORE_THAN_08, //!< SE:スキルコンボ:09 replace_info.m_SE_SKILL_COMBO_FINISH_WORD, //!< SE:スキルコンボ:フィニッシュ replace_info.m_SE_CHESS_FALL, //!< SE:チェス駒:落下音 replace_info.m_SE_CHESS_MOVE, //!< SE:チェス駒:移動音 replace_info.m_SE_DOOR_OPEN_NORMAL, //!< SE:チェス駒:ドア開き:ノーマル replace_info.m_SE_DOOR_OPEN_BOSS, //!< SE:チェス駒:ドア開き:ボス replace_info.m_SE_SPLIMITOVER, //!< SE:SP切れUI replace_info.m_SE_MM_A01_CHECK, //!< SE:全体リソース:決定音 replace_info.m_SE_MM_A02_CHECK2, //!< SE:全体リソース:決定音(大) replace_info.m_SE_MM_A03_TAB, //!< SE:全体リソース:タブ切り替え replace_info.m_SE_MM_A04_BACK, //!< SE:全体リソース:キャンセル(バック)音 replace_info.m_SE_MM_B01_EXP_GAUGE, //!< SE:クエストリザルト:ゲージが伸びる音 replace_info.m_SE_MM_B02_RANKUP, //!< SE:クエストリザルト:ランクアップ replace_info.m_SE_MM_B04_RARE_START, //!< SE:クエストリザルト:ユニットゲットレア度のUI replace_info.m_SE_MM_B05_RARE_STAR_PUT, //!< SE:クエストリザルト:星のはまる音 replace_info.m_SE_MM_B06_RARE_END, //!< SE:クエストリザルト:レア度UIの最後に replace_info.m_SE_MM_C01_SCRATCH_1_3, //!< SE:スクラッチ:☆1~3ゲット replace_info.m_SE_MM_C02_SCRATCH_4, //!< SE:スクラッチ:☆4ゲット replace_info.m_SE_MM_C03_SCRATCH_5_6, //!< SE:スクラッチ:☆5~6ゲット replace_info.m_SE_MM_C04_SCRATCH_RARE, //!< SE:スクラッチ:レアめくり replace_info.m_SE_MM_D01_FRIEND_UNIT, //!< SE:強化合成:フレンドユニット replace_info.m_SE_MM_D02_MATERIAL_UNIT, //!< SE:強化合成:マテリアルユニット replace_info.m_SE_MM_D04_LEVEL_UP, //!< SE:強化合成:レベルアップ replace_info.m_SE_MM_D09_EVOLVE_ROLL, //!< SE:進化合成:演出回転 replace_info.m_SE_MM_D10_EVOLVE_COMP, //!< SE:進化合成:進化後遷移 replace_info.m_SE_MM_D08_SALE, //!< SE:売却:売却演出音 replace_info.m_VOICE_INGAME_QUEST_READYTO, //!< Voice:A:ReadyTo replace_info.m_VOICE_INGAME_QUEST_MOVEON, //!< Voice:A:MoveOn replace_info.m_VOICE_INGAME_QUEST_BOSSAPPEAR, //!< Voice:A:BossAppear replace_info.m_VOICE_INGAME_QUEST_QUESTCLEAR, //!< Voice:A:QuestClear replace_info.m_VOICE_INGAME_QUEST_GAMEOVER, //!< Voice:A:GameOver replace_info.m_VOICE_INGAME_QUEST_GETKEY, //!< Voice:A:GETKEY replace_info.m_VOICE_INGAME_QUEST_NICE, //!< Voice:A:戦闘評価:NICE replace_info.m_VOICE_INGAME_QUEST_GREAT, //!< Voice:A:戦闘評価:GREAT replace_info.m_VOICE_INGAME_QUEST_BEAUTY, //!< Voice:A:戦闘評価:BEAUTY replace_info.m_VOICE_INGAME_QUEST_EXCELLENT, //!< Voice:A:戦闘評価:EXCELLENT replace_info.m_VOICE_INGAME_QUEST_COOL, //!< Voice:A:戦闘評価:COOL replace_info.m_VOICE_INGAME_QUEST_UNBELIEVABLE, //!< Voice:A:戦闘評価:UNBELIEVABLE replace_info.m_VOICE_INGAME_QUEST_MARVELOUS, //!< Voice:A:戦闘評価:MARVELOUS replace_info.m_VOICE_INGAME_QUEST_DIVINE, //!< Voice:A:戦闘評価:DIVINE replace_info.m_VOICE_INGAME_QUEST_FIRSTATTACK, //!< Voice:A:FIRSTATTACK replace_info.m_VOICE_INGAME_QUEST_BACKATTACK, //!< Voice:A:BACKATTACK replace_info.m_VOICE_INGAME_QUEST_HANDCARD_SET, //!< Voice:A:手札配り replace_info.m_VOICE_INGAME_QUEST_STANDREADY, //!< Voice:A:LBS発動 replace_info.m_VOICE_INGAME_QUEST_SPLIMIT, //!< Voice:A:SPLimit replace_info.m_VOICE_INGAME_MM_EVOLVE, //!< Voice:A:進化 replace_info.m_VOICE_INGAME_MM_FOOT_FRIEND, //!< Voice:A:フッタ:フレンド replace_info.m_VOICE_INGAME_MM_FOOT_OTHERS, //!< Voice:A:フッタ:その他 replace_info.m_VOICE_INGAME_MM_FOOT_QUEST, //!< Voice:A:フッタ:クエスト replace_info.m_VOICE_INGAME_MM_FOOT_SCRATCH, //!< Voice:A:フッタ:スクラッチ replace_info.m_VOICE_INGAME_MM_FOOT_SHOP, //!< Voice:A:フッタ:ショップ replace_info.m_VOICE_INGAME_MM_FOOT_UNIT, //!< Voice:A:フッタ:ユニット replace_info.m_VOICE_INGAME_MM_LEVELUP, //!< Voice:A:レベルアップ replace_info.m_VOICE_INGAME_MM_RANKUP, //!< Voice:A:ランクアップ replace_info.m_VOICE_INGAME_MM_SKILLUP, //!< Voice:A:スキルアップ replace_info.m_VOICE_INGAME_MM_UNIT_GET, //!< Voice:A:ユニット取得: replace_info.m_VOICE_INGAME_MM_UNIT_GET_1, //!< Voice:A:ユニット取得:レア1 replace_info.m_VOICE_INGAME_MM_UNIT_GET_2, //!< Voice:A:ユニット取得:レア2 replace_info.m_VOICE_INGAME_MM_UNIT_GET_3, //!< Voice:A:ユニット取得:レア3 replace_info.m_VOICE_INGAME_MM_UNIT_GET_4, //!< Voice:A:ユニット取得:レア4 replace_info.m_VOICE_INGAME_MM_UNIT_GET_5, //!< Voice:A:ユニット取得:レア5 replace_info.m_VOICE_INGAME_MM_UNIT_GET_6, //!< Voice:A:ユニット取得:レア6 replace_info.m_VOICE_INGAME_MM_UNIT_GET_7, //!< Voice:A:ユニット取得:レア7 replace_info.m_VOICE_INGAME_MM_LINK_ON, //!< Voice:A:リンクオン replace_info.m_VOICE_INGAME_MM_HOME, //!< Voice:A:ホーム replace_info.m_VOICE_INGAME_MM_LIMITOVER, //!< Voice:A:リミットオーバー }; } else { replace_infos[idx] = new AudioClip[(int)SEID.SE_MAX]; } } for (int se_idx = 0; se_idx < (int)SEID.SE_MAX; se_idx++) { SEID se_id = (SEID)se_idx; AudioClip[] audio_clips = new AudioClip[replace_infos.Length]; int count = 0; for (int idx = 0; idx < replace_infos.Length; idx++) { AudioClip audio_clip = replace_infos[idx][(int)se_id]; if (audio_clip != null) { audio_clips[count] = audio_clip; count++; } } if (count > 0) { AudioClip[] audio_clips2 = new AudioClip[count]; for (int idx = 0; idx < audio_clips2.Length; idx++) { audio_clips2[idx] = audio_clips[idx]; } SoundManager.Instance.setReplaceSE(se_id, audio_clips2); } } }
void IPlasticAPI.RemovePermissions(string server, ObjectInfo obj, SEID seid) { throw new NotImplementedException(); }
void IPlasticAPI.SetPermissions(string server, ObjectInfo obj, SEID seid, Permissions granted, Permissions denied, Permissions overrideGranted, Permissions overrideDenied) { throw new NotImplementedException(); }
string IPlasticAPI.GetUserName(string server, SEID owner) { throw new NotImplementedException(); }
public static void PlaySE(SEID id, float vol) { Instance.Play(id, vol); }
public static void PlaySE(SEID id) { PlaySE(Instance.seClips[(int)id]); }
public void Play(SEID seID) { audioSource.PlayOneShot(soundList[(int)seID]); }