質問するログイン新規登録

Q&A

1回答

653閲覧

Unity / シーンを跨がずにBGMを切り替えたい

QuadRilly

総合スコア2

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2024/03/24 09:27

0

0

実現したいこと

1つのシーン内で特定の条件が満たされたとき、別のBGMに切り替える

発生している問題・分からないこと

プレイ中はBGM1を流し、ゲームオーバーになったらBGM2を流す、といった処理を実装させたいのですが、どのようにプログラムすればいいのかがわかりません。
現状ではBGM1だけをMain CameraのAudioSourceでループ再生させています。プレイヤーのライフが0になったときにisAlive (生存しているかどうかのフラグ) がfalseになるので、そのタイミングで切り替わるようにしたいです。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

teratailやGoogleで検索しましたが、シーンを跨いでのBGM切り替え方法や、逆に全シーン通してBGMを流す方法しか載っておらず、自分が求める答えは得られませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

fiveHundred

2024/03/24 09:44

現状の質問内容では「Update()内のif文でisAliveをチェックし、該当していればBGM1を停止してBGM2を再生すればよい」と初歩的な内容になりますが、違いますか?
isimasa

2024/03/24 13:11

bool型のフラグを2つ用意してtrueになったときbgmを流すという処理を書いておいてゲームオーバー時にフラグを切り替えればよいと私は思いました。
fiveHundred

2024/03/25 03:39

そのコードを質問文に記載してください。
QuadRilly

2024/03/25 06:40

コードはありません。 Main CameraのAudio SourceにBGM1を直接入れて、Play On Awakeにチェックを入れてループさせているのが現状です。 bool値をチェックするのは分かっているのですが、流れているBGMを停止して別のBGMを流すというプログラムの書き方が分かりません。
fiveHundred

2024/03/25 07:00

(blanketさんを質問者だと勘違いしてました) 「分からない」と言う前に公式ドキュメントを読みましょう。 https://docs.unity3d.com/ja/2021.3/ScriptReference/AudioSource.html 再生するには「~.Play();」、停止するには「~.Stop();」を使えばいいくらいは分かるはずです。 その上でif文で判定し、分岐を行えばいいだけの話です。
guest

回答1

0

https://qiita.com/_ohuton/items/891b772931c532861617
私の実装方法はこんな感じ。

投稿2024/03/25 18:37

isimasa

総合スコア308

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問