【Unityゲーム作成講座2】アドベンチャーゲームの作り方#12(サウンドシステム①)【ゆっくり解説】

ハッピーサンライズ
20 Dec 202122:31

Summary

The video is abnormal, and we are working hard to fix it.
Please replace the link and try again.

Takeaways

  • 🎮 ゲームのサウンドシステムの導入方法が解説されています。
  • 🔊 オーディオマネージャースクリプトを作成し、マスターボリュームなどの調整を担当します。
  • 🎶 BGMの流れをゲームオブジェクトとオーディオソースを用いて管理します。
  • 📊 効果音やシステム音の音量は、スクリプト内で個別に調整可能です。
  • 🔧 音量の調整は、スライダーを用いてシステムUIから行うことができます。
  • 🎵 異なるゲーム状態(通常時・戦闘時など)に対応するBGMの切り替えが行われます。
  • 🔄 BGMのフェードイン・フェードアウトによる滑らかな曲の遷移を次回の課題とします。
  • 💿 効果音やBGMの音源は、無料商用利用可のサイトから調達することが可能です。
  • 🧱 ゲームの音環境を構築するために、スクリプトとUI要素が組み合わせて活用されます。
  • 🛠️ 音量の調整機能を実装することで、ゲームのプレイ性や印象を大きく変えることができます。
  • 📖 シングルトンパターンを使用して、オーディオマネージャーのインスタンスを効率的に管理します。

Q & A

  • オーディオマネージャーの役割は何ですか?

    -オーディオマネージャーは、ゲーム内のオーディオシステムを統括し、音量の調整や音源の管理、BGMや効果音の再生などを担当します。

  • マスターボリューム、SFXボリューム、システムボリューム、BGMボリュームのそれぞれの意味は何ですか?

    -マスターボリュームはゲーム全体の音量を調整し、SFXボリュームは効果音の音量、システムボリュームはシステム音の音量、BGMボリュームは背景音楽の音量を制御するための変数です。

  • オーディオソースというコンポーネントは何を担当するのですか?

    -オーディオソースコンポーネントは、音声クリップを流し、音を鳴らすことを担当します。BGMや効果音、システム音の再生に使用されます。

  • スクリプト内で自動的に行う処理とは何ですか?

    -スクリプト内で自動的に行う処理は、ゲーム開始時や特定のイベント発生時に自動的に実行される処理です。例えば、ゲームオブジェクトの生成やオーディオソースの設定などが含まれます。

  • 音量調節の仕組みを説明してください。

    -音量調節は、マスターボリュームと各チャンネルのボリュームを掛け合わせることで行われます。スライダーでマスターボリュームを調整することで、効果音、システム音、BGMの音量を一気に制御できます。

  • ゲームのシステムパネルを開くにはどうすればいいですか?

    -ゲームのシステムパネルを開くためには、画面右クリックで作成したシステムボタンを押します。ボタンを押すと、システムパネルが開いて、音量調節などのシステム操作ができます。

  • シングルトンパターンのメリットは何ですか?

    -シングルトンパターンのメリットは、ゲーム中に存在するオーディオマネージャーのインスタンスを1個だけに制限し、どこからでも同じインスタンスにアクセスできることです。これにより、オーディオの統一的な管理が可能になり、インスタンスが重複する可能性を排除できます。

  • 効果音を選んだ基準は何ですか?

    -効果音は、ゲームの状況やアクションに合わせて適切な音を選択することが重要です。例えば、攻撃時のパンチ音は力強い音、ボタン押下時の音は地味で明了したもの、成功時の音はポジティブなイメージを持つものなど、ゲームの状況に合わせて適切な効果音を選択します。

  • BGMの選択にどのような考慮事項がありましたか?

    -BGMの選択には、ゲームの雰囲気やプレイヤーの感情に合わせて適切な曲を選ぶことが重要です。戦闘用BGMは緊張感や興奮を引き出す曲、通常時BGMは落ち着いた雰囲気を出せる曲が適しています。また、曲の著作権や商用利用可否も考慮する必要があります。

  • BGMのフェードインとフェードアウトはどのように実現されるのですか?

    -BGMのフェードインとフェードアウトは、オーディオソースのボリュームを徐々に増減または減少させることで実現されます。再生中のBGMの音量を徐々に小さくして新しいBGMを徐々に大きくすることで、滑らかな曲の遷移が可能です。

  • ゲームのステートによって異なる音が鳴らすようにするにはどうすればいいですか?

    -ゲームのステートに応じて異なる音を鳴らすためには、各ステートに応じたオーディオクリップを準備し、ステートに入った際に適切な音を再生するようにスクリプトを記述します。例えば、攻撃ステートでは攻撃音を、勝利ステートでは勝利音を再生するように設定します。

Outlines

00:00

🎮 ゲームのサウンドシステムの導入方法

ゲームのオーディオシステムを構築する方法について解説します。まず、オーディオマネージャーというスクリプトを作成し、マスターボリューム、SFXボリューム、システムボリューム、BGMの音量を調整するためのフロート変数を用意します。次に、オーディオソースコンポーネントを用いてBGMを管理し、ゲームオブジェクトにアタッチして自動的に音楽を再生させる処理を記述します。また、スライダーを作成して音量を調節できるようにします。

05:02

🔊 音量調節システムの構築

ゲーム内の音量調節システムを構築する方法について説明します。スライダーを作成し、システム音やBGMの音量を調整するためのUIを構築します。オーディオマネージャーシングルトンを用いて、音量の調整を簡便に行うことができるようにします。また、スクリプトを用いてスライダーの値とオーディオシステムの音量を連動させ、音量の調節を実装します。

10:03

🎵 BGMの選定と効果音の調達

ゲームに使用するBGMと効果音の選定、調達方法について説明します。戦闘用のBGMと通常時のBGMを選定し、効果音ラボから必要な効果音をダウンロードします。BGMは2種類、通常時と戦闘時の曲を使い、効果音は攻撃やアイテムの使用などに対応する音源を選びます。これらの音源をユニティに取り込み、オーディオマネージャーにアタッチして使用します。

15:05

🎮 ゲーム内の音声の再生処理

ゲーム内で必要な音声を再生するための処理を記述します。システム音や効果音を鳴らす関数を作り、ゲームのステートに応じて適切な音を再生します。また、敵との戦闘やアイテムの組み合わせなど成功時の音や失敗時の音を区別して鳴らしたり、BGMの切り替え時に自然に过渡するように処理を記述します。音声の再生はオーディオマネージャーを用いて行い、音量の調整も含まれます。

20:07

🌟 効果音とBGMの調整とテスト

ゲーム内の効果音とBGMの調整とテスト方法について説明します。スライダーで調整した音量を確認し、ゲームの各種ステートで鳴らされる音声をテストします。効果音は攻撃やアイテム使用、成功・失敗時の音などに使い、BGMは通常時と戦闘時を区別して鳴らします。また、BGMの切り替えを滑らかに行うためのフェードアウト・フェードインの処理を次回の課題として提案します。

Mindmap

Keywords

💡オーディオシステム

ビデオの主題はゲームのオーディオシステムの導入とその設定方法です。オーディオシステムとは、ゲーム内で音を再生するための仕組みで、マスターボリュームやBGM、効果音、システム音の音量調節などが含まれます。このビデオでは、オーディオマネージャースクリプトを作成し、ゲームオブジェクトにオーディオソースコンポーネントをアタッチする方法を説明しています。

💡マスターボリューム

マスターボリュームは、ゲーム全体の音量を調節するためのパラメーターです。このスクリプトでは、マスターボリュームの値を変更することで、ゲーム内のすべての音の音量を一気に調整することができます。マスターボリュームは、スライダーを使って調整し、ゲームの音を適切に設定することができます。

💡BGM

BGMとは、ゲーム内で流れる背景音乐のことを指します。このビデオでは、BGMの音量を調節する方法や、ゲームオブジェクトにオーディオソースをアタッチしてBGMを流れるように設定するプロセスが説明されています。BGMは、ゲームの雰囲気を演出する重要な要素であり、適切なBGM可以使玩家更加沉浸于游戏中。

💡効果音

効果音は、ゲーム内で特定のアクションやイベントに伴って鳴らす音を指します。このビデオでは、効果音の音量を調整する方法が説明されています。効果音は、ゲームのリアル感を高めるために使用され、プレイヤーにフィードバックを提供します。例えば、アイテムを獲得したときや敵を倒したときの音が効果音に該当します。

💡システム音

システム音は、ゲーム内でシステム的なイベントを通知するために使用される音声です。このビデオでは、システム音の音量を調整する方法が説明されています。システム音は、例えばボタンのクリック音や警告音など、ゲームの操作に対するフィードバックを提供するために使用されます。

💡オーディオマネージャー

オーディオマネージャーは、ゲーム内のオーディオシステムを統括するスクリプトです。このビデオでは、オーディオマネージャーを作成し、オーディオの各種パラメーターを管理する方法が説明されています。オーディオマネージャーは、ゲームの音量を調整したり、BGMや効果音の流れを制御するために使用されます。

💡スクリプト

スクリプトは、ゲームエンジンに指示を出してゲームの機能を実装するためのコードです。このビデオでは、オーディオマネージャースクリプトを作成し、ゲーム内のオーディオシステムを構築する方法が説明されています。スクリプトを使用することで、ゲームの挙動をカスタマイズし、オーディオの調整や管理をプログラムすることができます。

💡音量調節

音量調節は、ゲーム内の音の音量を調整するプロセスです。このビデオでは、マスターボリューム、BGM、効果音、システム音の音量を個別に調節する方法が説明されています。音量調節は、プレイヤーがゲームを快適に楽しむために重要な要素であり、音が过大または過小で遊覧を妨げることを避けることができます。

💡スライダー

スライダーは、ユーザーが連続した範囲内で値を選択することができるUIコンポーネントです。このビデオでは、スライダーを使用して音量を調節する方法が説明されています。スライダーは、直感的で使いやすいインターフェースを提供し、音量の微調整を玩家が簡単に行うことができるようになります。

💡シングルトン

シングルトンは、プログラムの中で一意のインスタンスしか存在させないデザインパターンです。このビデオでは、オーディオマネージャーをシングルトンとして実装することで、ゲーム全体で同じオーディオマネージャーインスタンスを参照するように設定されています。これにより、オーディオの設定がゲーム全体で統一され、効率的に管理することができます。

Highlights

オーディオシステムの導入方法についての解説

ゲーム内オーディオマネージャースクリプトの作成

音量を調節するためのフロート変数の準備

効果音とシステム音の音量変数の設定

マスター音量を掛け合わせる方法の説明

オーディオソースコンポーネントの使い方

ゲームオブジェクトにオーディオソースを自動的にアタッチするスクリプトの作成

ウェイク関数の使用とゲーム開始時の処理

音量調節スライダーの作成と設定

システムUIパネルの作り方とスクリプトのアタッチ

ボリューム変更関数の作成とスライダーとの連携

効果音とBGMの選曲とダウンロード方法

オーディオマネージャーでのBGMのアタッチ方法

システム音を鳴らす関数の作成と使用方法

効果音を鳴らす関数の作成とステートでの利用

BGMのフェードインとフェードアウトの仕組み

音量調節システムの完成とテスト

Transcripts

play00:00

みなさんこんにちは happy

play00:01

sunrise のゆっくり霊夢です今回

play00:03

はサウンドシステムの導入の仕方について

play00:06

解説していきます今回の作業内容の

play00:08

プロジェクトファイル及び参考にさせて

play00:10

いただいた動画の url は概要欄に

play00:13

貼ってありますというわけで早速レッツ

play00:15

ゴー

play00:20

早速始めて以降今回はオーディオシステム

play00:22

をつくってゲーム内におとう鳴らす仕組み

play00:24

を解説するよ有無まず何すりゃいいんだ

play00:27

まずはスクリプトを作ろう

play00:29

オーディオマネージャーというスクリプト

play00:30

作ってオーディオマネージャー

play00:32

ほいそのスクリプトをメインオブジェクト

play00:34

にアタッチして

play00:37

ほいじゃあそのスクリプト開いて入らない

play00:40

中身決してまずは音量を調節する仕組み

play00:42

から作るよ音量を表すフロート変数を用意

play00:45

しよう public float 変数

play00:47

名はマスターボリュームパーセント

play00:48

マスターボリュームパーセント初期値は

play00:50

とりあえず1とかにしておこう=1 f

play00:53

この値が1の場合は音量 max 例の

play00:55

場合はミュートになる付6ふむ次は効果音

play00:58

の音量変数名は sfx ボリューム

play01:00

パーセント sfx ってなんだサウンド

play01:03

エフェクトの約なるほど public

play01:05

float sfx ボリューム%=1次

play01:08

はシステム音木鶏 public

play01:10

float システムボリューム%=1

play01:12

最後に bgm public float

play01:14

music vol %=1音量調節は

play01:18

以上の4チャンネルに分ける下の3つの

play01:20

音量にマスター音量を掛け合わせることで

play01:22

全体の音量を調節できるようにするよう

play01:25

ふむふむ一応この値を外から勝手に変え

play01:27

られないようにプロパティで保護しよう

play01:31

次は bgm を管理するための

play01:33

コンポーネントを用意するオーディオ

play01:35

ソースというコンポーネントに音声

play01:36

クリップを当てはめれば音楽を流すことが

play01:38

できるじゃあユニティーに戻って

play01:40

オーディオソースをゲームオブジェクトに

play01:42

アタッチし俺止まった今回はその作業も

play01:44

スクリプト内で自動的に行うそんなこと

play01:46

できるのかオーディオソース型の変数作っ

play01:49

て変数名はミュージックそうすぱぶりっく

play01:51

は要らないオーディオソースミュージック

play01:53

ソースではゲーム開始と同時にオーディオ

play01:56

ソースコンポーネントがータッチされた

play01:58

ゲームオブジェクトを生成しそれをメイン

play02:00

オブジェクトの子にする処理を書こうその

play02:02

仕組みはウェイク関数に各アウェイク関数

play02:04

過去のシリーズの中では初登場かなあ

play02:07

ウェイク関数はゲーム開始と同時に一度

play02:09

だけ実行される関数だ4つたと関数よりも

play02:12

前に実行されるんだったかそうだから

play02:14

ゲーム内のキャラのパラメーターの初期化

play02:16

とかとは違ってゲームのシステムの構築の

play02:19

ための処理などを書くまあ明確なルールが

play02:21

あるわけじゃないからどっちでもいいんだ

play02:23

けどねまず何を書けばいいまずは新規の

play02:25

ゲームオブジェクトを生成する処理ゲーム

play02:27

オブジェクト

play02:28

ニューミュージックソース=ニューゲーム

play02:30

オブジェクトmusic 総数これで

play02:32

ミュージックソースという名前のゲーム

play02:34

オブジェクトがヒエラルキー常に作られる

play02:36

ふむふむミュージック総数 at

play02:38

コンポーネントオーディオ総数これでこの

play02:40

オブジェクトにオーディオソースがー

play02:41

タッチされたふむそれと同時に

play02:43

ミュージックソースにコンポーネントを

play02:45

代入しよう music そう水=

play02:47

なるほど最後にこのゲームオブジェクトを

play02:50

メインオブジェクトの子に設定するニュー

play02:52

ミュージックソーストランスフォーム

play02:53

ペアレント=トランスフォーム

play02:56

これで1回動かしてどうなるか見てみよう

play03:03

をメインオブジェクトの下にミュージック

play03:05

ソースって名前のオブジェクトが生成され

play03:07

たそしてそのオブジェクトにオーディオ

play03:09

ソースコンポーネントがアタッチされて

play03:11

いるな成功だねこのオーディオクリップと

play03:13

いう枠の中に音声データをアタッチして

play03:15

再生すればこのゲームオブジェクトのある

play03:17

位置からおとう鳴らすことができる今回の

play03:19

ゲームは3 d じゃないから意味ない

play03:21

けどな今回のゲームで使うのはこの

play03:23

ボリュームというパラメーターだけだね

play03:25

スクリプトでこの値を動かして bgm の

play03:27

音量を調節するというわけで次は音量調節

play03:30

関数を作ろうちょっと待て今 bgm 用

play03:33

のオーディオソースは用意したが効果音と

play03:35

システム音にも同様にオーディオソースが

play03:37

必要なんじゃないか効果音とシステム音は

play03:39

長久手市に秒の単発の音だからわざわざ

play03:42

オーディオソース用椅子必要はない単発の

play03:44

おとう鳴らすだけならオーディオソース.

play03:46

プレイクリップ at ポイントという

play03:48

便利関数を実行すればいいだけはいえーい

play03:50

まずは効果音のボリュームを調整する関数

play03:53

から関数名はセットボリュームアンダー

play03:55

バー sfx にしよう public

play03:57

ぽいどセットボリュームアンダーバー

play03:59

sfx 引数はフロートを1個変数名は

play04:02

パーセンとフロートパーセント中身は超

play04:05

単純 sfx ボリューム%=パーセント

play04:08

音量はスライダーで調節できるようにする

play04:11

スライダーの値をこの関数の引数に

play04:13

当てはめれば自在に音量調節ができ

play04:15

るってわけですふむ6次はシステム音の

play04:18

ボリューム変更処理 public

play04:19

void セットボリューム

play04:21

システムフローとパーセントシステム

play04:23

ボリューム%=パーセント次 bgm の

play04:27

ボリューム public void

play04:28

セットボリュームミュージックフロート

play04:31

パーセント music vol %=

play04:33

パーセントここではオーディオソースの

play04:35

ボリュームの値もどう時に変更する必要が

play04:38

ある music ソースポリューム=

play04:41

music vol パーセントかける

play04:43

マスターボリューム%ふむ最後にマスター

play04:46

音量 public void セット

play04:48

ボリュームマスター

play04:50

マスターボリューム=パーセントここでも

play04:53

オーディオソースのボリュームを変更する

play04:54

ミュージックソースボリューム=

play04:57

music vol パーセントかける

play04:59

マスターボリュームパーセントよし今度は

play05:01

スライダーを作るよユニティーに戻って

play05:03

ホイ画面の右下にボタン作ってボタンの

play05:06

名前はシステムキャンバスを右クリック

play05:08

ui ボタンその後ボタンを画面右下に

play05:11

移動うそのボタンの中の文字をシステムに

play05:13

書き換える

play05:15

システムこのボタンを押したらシステム

play05:17

画面を開けるように使用画面のど真ん中に

play05:20

パネルを用意してキャンバスを右クリック

play05:21

ui パネル

play05:24

そしてパネルをちょっと縮める

play05:30

こんなもんかパネルが半透明だとちょっと

play05:33

見づらいから色を濃くしてパネルの

play05:35

イメージコンポーネントのカラーを

play05:36

クリックアルファの値を100にするこれ

play05:38

でよしパネルの名前はパネルアンダーバー

play05:41

システムにしようパネルアンダーバー

play05:42

システムこのパネルでは音量調節だけで

play05:45

なく今後西武とかロードもできるようにし

play05:47

ていく予定ですふむついでにさっき作った

play05:49

ボタンはボタンアンダーバーシステムに

play05:51

変えておこうボタンアンダーバーシステム

play05:53

ではパネルの中にスライダー ui を

play05:55

設置し用パネルを右クリック

play05:57

ui スライダーそのスライダーを大体

play05:59

ここらへんに移動させる

play06:03

続いてこのスライダーの中にテキストを

play06:05

追加スライダーを右クリック

play06:08

ui テキストその敵須藤スライダーの左

play06:11

端に寄せる

play06:15

4

play06:17

こんなもんかそのテキストの文字を

play06:19

マスター音量と書き換えよう

play06:22

文字が見切れたこういう時は

play06:24

アレンジメントを中央揃えに指定ベスト

play06:26

フィットにチェックを入れるこれでよし

play06:28

ok そのスライダーの名前をスライダー

play06:30

アンダーバーマスターにしておいて

play06:32

スライダーアンダーバーマスターその

play06:34

スライダーを3個複製してコントロール d

play06:37

コントロール d コントロール d

play06:38

それぞれ名前をスライダー sfx

play06:40

スライダーミュージックスライダー

play06:43

システムに変えて

play06:46

そいつらをパネル内にきれいに並べてホイ

play06:48

ホイ

play06:50

ほい

play06:51

そしてスライダーの中のテキストも

play06:53

書き換える

play06:55

なくもっと

play06:57

000

play07:01

なんか文字サイズが不揃いで不格好だなぁ

play07:03

こういう時はテキストの max サイズ

play07:05

を小さくしてあげればいい4つのテキスト

play07:07

を同時選択してコントロールをしながら

play07:09

テキストをクリック

play07:11

そして max サイズの値を14に

play07:13

しようこれで綺麗になったふむこの

play07:15

スライダーコンポーネントのバリューと

play07:17

いう値これはスライダーのハンドルが左端

play07:20

に行くと0右端に行くと1になるこの値を

play07:22

さっき作ったボリューム変更関数と連動さ

play07:25

せるわけだなそういうことです角

play07:27

スライダーのボリュームの値は全部市にし

play07:29

ておこう

play07:31

できたぜそしてこのパネルを表示にする

play07:38

ではシステムパネルを管理するための

play07:40

スクリプトを作ろうシステム ui と

play07:42

いう名前のスクリプト作って

play07:46

システム ui そいつをメイン

play07:48

オブジェクトにアタッチして

play07:50

スクリプト開いてさっき作ったシステム

play07:53

関連のパーツ等をこのスクリプトにア

play07:55

タッチしていくよチャーそのための枠を

play07:57

作るぜ頼むぜーまずはネームスペースいう

play08:00

神具ユニディエンジン ui システム

play08:02

ボタン用の枠を作る public ボタン

play08:05

ぽたんアンダーバーシステム次にパネル

play08:07

public a 6オブジェクトパネル

play08:09

アンダーバーシステム阻止て各種音量調整

play08:11

スライダー public slider

play08:13

slider アンダーバーマスター

play08:17

スライダーアンダーバー music

play08:20

スライダーアンダーバー sfx っっ

play08:24

スライダーアンダーバーシステム

play08:27

できた税化したぜではシステムボタンを

play08:29

押したらパネルが開く仕組みを作ろうか

play08:31

at リスナーを使ってボタンの押下を

play08:33

感知する仕組みをつくってどうやるんだっ

play08:36

けまずボタンが押されたかどうかを判定

play08:38

するブール値を作るそうだったそうだった

play08:40

ぶーるープッシュボタンシステム=

play08:43

false そしてあっとリスナーを使っ

play08:44

てボタンを押したと同時にこのプールを

play08:46

ブルーに変えるだったなそうそうぽたん

play08:48

アンダーバーシステム音 click at

play08:51

リスナーラムダ演算子 pb システム=

play08:53

true そしてフレームの最後に忘れず

play08:56

に false に戻すそうしないと

play08:57

ボタン1回押したらそれから毎フレーム

play08:59

ボタン連打することになるからねできた

play09:02

よしではアップデート関数内にボタンが

play09:04

押されたらパネルを表示しパネルが押され

play09:06

た状態で再度ボタンを押したらパネルを

play09:08

表示にする処理書いて任せろもしボタンが

play09:11

押されたら

play09:12

パネルが表示されている場合はパネルを

play09:15

表示にするパネルが表示ならパネルを表示

play09:17

するできたぜではユニティーに戻って各

play09:20

パーツをアタッチし抵抗

play09:22

おい

play09:24

ほい

play09:26

ホイホイ

play09:29

ホイホイってきたアーチャーちゃんと動く

play09:32

かテストしてみよう

play09:36

000

play09:38

動いてるぜではこのスライダーと

play09:40

ボリュームを連動させる処理を各幼稚

play09:41

ステム ui スクリプトに戻ってホイ

play09:44

まずはマスター音量のスライダーからこれ

play09:46

も at リスナーだろうそうだけど

play09:47

スライダーの場合ボタンとちょっと書き方

play09:49

が異なるスライダー master on

play09:51

バリューチェンジどうあっどリスナー本場

play09:53

流チェンジどつまり値が変わったときに

play09:56

実行される処理仮想つまりハンドルが動い

play09:58

た時にこの格好の中に書かれた処理が実行

play10:01

されるつまりセットボリュームマスター

play10:03

関数だなそうということはここで

play10:05

オーディオマネージャーを参照しなきゃ

play10:06

いけないなというわけでオーディオ

play10:08

マネージャーをシングルトンかしてここ

play10:10

から参照できるようにしようシングルトン

play10:12

って何って方はステート工藤 ai の

play10:14

作り方動画の40分30秒あたりで解説し

play10:17

てますとりあえずオーディオマネージャー

play10:19

クラス開いたぜシングルトンの書き方覚え

play10:21

てる忘れたぜそんじゃあ改めて説明する

play10:24

まずはオーディオマネージャー方の

play10:25

static 変数を用意する

play10:27

public static オーディオ

play10:28

マネージャーインスタンス static

play10:30

変数はゲーム内に必ず1個しか実態が存在

play10:33

しないたとえオーディオマネージャーが2

play10:35

個以上あってもこのインスタンスという枠

play10:37

はかならず共通の1個のオーディオ

play10:39

マネージャーを指し示すこれ参照の概念が

play10:42

わからないとピンと来ないだろうなピンと

play10:44

こない方に必殺技を教えてあげようどんな

play10:46

技だよくわからんけど動きゃいいと強引に

play10:48

納得するお前の常套手段だな真面目な話

play10:52

マジでこれでなんとかなりますし理解わー

play10:54

とから追い付いてきますゲーム作りで一番

play10:56

やっちゃいけないことは手が止まって1

play10:58

カ所にとどまり続けてしまうことです

play11:00

とにかく書いて動かしてみるを徹底し

play11:02

ましょう本題に戻ろうウイ次はウェイク

play11:04

関数内に降格

play11:06

もしインスタンスが塗るじゃなければ自分

play11:08

を抹消するもシーンスタンスが塗るなら

play11:10

インスタンスに自分を代入するそして

play11:13

シーン切り替え時に自分を抹消しない今回

play11:15

のゲームではシーン切り替えを行わないの

play11:17

で本来この文は不要だけど一応これが

play11:20

シングルトンの書き方の一つですこれで

play11:22

ゲーム開始から終了までの間

play11:24

オーディオ manager .

play11:25

インスタンスは常に2個以上にならず確実

play11:28

に1個だけ存在する状態が保障される

play11:30

インスタンスが一個しかないということは

play11:32

どのインスタンスを参照するのか選ぶ必要

play11:34

もないつまりオーディオ manager

play11:36

.インスタンスを呼べばいつでもどこでも

play11:38

共通のオーディオマネージャーにアクセス

play11:40

できるってわけですすげー星一つ忘れちゃ

play11:42

いけないのがウェイク分の下に書いたこの

play11:45

オーディオソースの初期化処理これらは

play11:46

インスタンスが null の時だけ実行

play11:48

されるべき内容だからこうやって切り取っ

play11:51

てここに貼り付けるこれでシングルトン家

play11:54

官僚システム言う位に戻ってぽいてワーッ

play11:57

とリスナーの中でボリューム調整処理を

play11:59

書いていくわけですけどもが無駄演算子

play12:01

だろういやスライダーの場合それだと

play12:03

うまくいかないそうなのかなので今回は

play12:05

降格 delegate 中括弧

play12:08

のカッコの中に処理を書けばいい

play12:10

delegate ってなんだ分の中に

play12:12

関数を作りながら埋め込むような仕組みだ

play12:14

よそれラムダ式と何が違うんだほぼ同じだ

play12:17

よじゃあなんでラムダ式じゃダメなんだ魔

play12:19

理沙君はい動けばいいんだお前もわかって

play12:21

ないのかよってりゲートやラムダ式はまだ

play12:23

勉強不足なのでもっといい書き方はあるか

play12:26

もしれないですがとりあえず自分が知っ

play12:28

てるか気かたで進めさせていただきます

play12:30

チャーとりあえず処理を書く税頼む

play12:32

オーディオ manager .

play12:33

インスタンス

play12:34

セットボリュームマスターカッコこの格好

play12:36

の中にスライダーの値を入れればいいわけ

play12:39

だがその値はどうやってるんだー

play12:40

slider .ばいうで参照できる

play12:43

スライダー master . value

play12:46

同じ要領で他の3つのスライダーにも関数

play12:49

設定してっ

play12:52

play12:55

play12:56

voodoo

play12:59

できたよしこれで音量調節システムは

play13:01

出来上がったいよいよ応答鳴らすのかその

play13:03

前に音源を調達しなきゃね音源ってどう

play13:06

やって調達するんだてはちょっとお買い物

play13:08

行く母が妹の私が普段使わせていただい

play13:11

てる曲はすべてこのドーバーシンドローム

play13:13

さんで調達してる無料で商用利用可能な上

play13:16

にハイクオリティーな bgm が

play13:18

てんこ盛りだよそいつはすげぇ今回調達

play13:20

する bgm は2種類

play13:22

戦闘用の bgm と通常時の bgm

play13:24

ちなみに選曲はあらかじめしておいたよう

play13:27

ずらしく用意がいいなまず戦闘 bgm と

play13:29

して採用させていただいたのがこちら匠東

play13:32

さん作曲の大決戦を前が普段から愛用し

play13:35

てる曲だな非常に汎用性が高く

play13:38

めちゃくちゃちょうどいい感じがすごく

play13:39

ちょうどいいデビューが下手くそすぎて

play13:41

作曲者さんが可哀想だちなみに

play13:43

ダウンロードの仕方は超簡単仮面下の

play13:46

ダウンロードボタンを押してダウンロード

play13:47

ファイルボタンを押すだけ f 6

play13:49

次に通常時の bgm として今回使用さ

play13:52

せていただくのがこちらかまぼこ幸子さん

play13:54

作曲

play13:55

不穏な雰囲気この曲もワイルドマンで使わ

play13:58

せてもらったな曲名通りすごい不穏な

play14:00

雰囲気があってなおかつシュールな感じも

play14:02

してお気に入りいては以上の2曲を

play14:04

ダウンロードしてダウンロードしたぜ次は

play14:06

効果音を手に入れようこちらの効果音ラボ

play14:09

さんはかゆいところに手が届く無料の音源

play14:11

を大量に取り扱ってらっしゃいますこの

play14:13

サイトには死ぬほどお世話になってるな

play14:15

冗談抜きでこのサイトなかったらこの

play14:17

チャンネル積んだ誰かもしれないぐらいお

play14:19

世話になっておりますてどんなおとう調達

play14:22

するんだ今回は4種類まず攻撃したり攻撃

play14:25

を食らったりした時の実施って音あとは

play14:27

ボタンを押したときのお父さん種類ほど

play14:29

オッケまず10知っておとう手に入れよう

play14:31

このように効果音ラボさんはさまざまな

play14:33

音源をカテゴリ別に並べてくれてる今回は

play14:36

戦闘カテゴリの中のパンチの中から感じの

play14:38

ものを選ぼう

play14:43

なんかちょっと重たすぎるかなし他にも

play14:45

まだまだあるよ

play14:47

しっ

play14:49

をこれがいいショーパンチちょうどいい

play14:51

コミカルさだじゃあこちらをダウンロード

play14:53

次はボタンを押したときのシステム音か

play14:55

ボタンで検索してみてそしたらズラって

play14:58

候補が出てくるからこの中からいいのを

play15:00

探そう目移りするナマズは一番

play15:02

オーソドックスなボタンをクリックした時

play15:04

のカチって音とりあえずボタン押すたびに

play15:06

鳴らすならあんまり視聴強くない方がいい

play15:09

play15:10

これだいい感じに地味な音じゃあこれ

play15:13

ダウンロード次は組み合わせが成功した時

play15:15

や敵との戦闘に勝利したときなどいいこと

play15:18

が起こったときに鳴らすプルリンってを

play15:20

とっ

play15:21

そして組み合わせが失敗したときなどの部

play15:23

って音以上をダウンロードしてユニティー

play15:26

に戻ろうただ今では手に入れた音源を

play15:28

ユニティー内に取り込むオーディオという

play15:30

フォルダを新しく作って

play15:33

オーディオそしてその中に音源をドラッグ

play15:35

ドロップ

play15:38

ほいそしてそれぞれの名前を分かりやすく

play15:41

支えてあげよう

play15:43

play15:45

持っていません

play15:47

play15:49

おっ

play15:52

できたぜよしこれらの音源オーディオ

play15:55

マネージャーにアタッチするよまずは2

play15:57

種類の bgm の枠を作るパブリック

play15:59

オーディオクリップ bgm アンダー

play16:01

バーノーマルパブリックオーディオ

play16:03

クリップ bgm アンダーバーバトル

play16:05

ふむふむこんな感じであとはシステム音と

play16:08

効果音の枠も作って了解

play16:14

できたでは音源を当たっしよう

play16:19

play16:23

アタッチしたぜオーディオマネージャーに

play16:24

戻ってではおとう鳴らす関数を今から作っ

play16:27

ていくよいいぞ最初に作るのはシステム音

play16:30

を鳴らす関数

play16:31

関数名はプレイシステムにしよう

play16:34

public void プレイシステム

play16:36

引数はオーディオクリップを1個音の

play16:38

鳴らし方はいたって簡単オーディオソース

play16:40

.プレイクリップ at ポイント引数は

play16:43

3つ

play16:44

右から音声クリップおとう鳴らす市の情報

play16:47

最後に音量まずは音声クリップ次に位置

play16:50

座標か今回のゲームでは市関係ないから

play16:52

普通に減点座標でいいトランスフォー

play16:54

home .ポジション最後に音量か音量

play16:56

はシステム音量とマスター音量を

play16:58

掛け合わせた数字システムボリューム

play17:00

パーセントかけるマスターボリューム

play17:02

パーセントでは早速おとうならしてみよう

play17:05

メインクラス開いてメインクラスまずは

play17:07

メインコマンドステートの最初に音を

play17:09

鳴らしてみようこの state エンター

play17:11

処理の最後にさっき作った関数を実行する

play17:13

オーディオマネーじゃあインスタンス

play17:15

プレイシステムオーディオマネージャー

play17:17

インスタンスシステムクリックこれで

play17:19

メインコマンドに移行するたびにカチって

play17:21

音が鳴るわけかこの時くれぐれも

play17:23

state エンター処理の格好の外に

play17:25

書かないでねじゃないと毎フレーム

play17:27

クリック音がなってしまうよ業界いっ

play17:29

ちゃあ同じ処理を書くステートの最初に

play17:31

書いていって次は敵と遭遇ステートの最初

play17:34

おっ

play17:35

その次は戦闘コマンド state

play17:39

次は攻撃ステーとか攻撃 state で

play17:41

はクリック音ではなく殴った音を入れる

play17:43

から飛ばす

play17:45

同様に敵からの攻撃 state も

play17:47

飛ばす

play17:48

的に勝利した state ここでは成功

play17:50

したと機能等ならそうか

play17:54

システムアンダーバーサクセス次

play17:56

インベントリを開く state ここで

play17:58

もクリック音鳴らす

play18:01

さらにこの中では使うボタンが押された

play18:03

タイミングでもおとうならそう

play18:08

ここではステートの変化が無いからかそう

play18:11

そう次アイテム組み合わせ state

play18:13

このステートの最初にもクリック音を

play18:15

鳴らす

play18:17

そして組み合わせが成功したら成功音失敗

play18:20

したら失敗音を鳴らす

play18:25

play18:26

play18:27

続いて部屋の選択 state ここでも

play18:30

クリック音を鳴らす

play18:33

その次の部屋移動ステーとでも同様

play18:37

次の何も見つからなかった state で

play18:39

は失敗 on

play18:41

アイテムを見つけた state では

play18:43

成功音を鳴らす

play18:47

これで1回動かしてみるかよしきたああ

play18:50

あああ

play18:55

となってる

play19:04

なんかを通る生なじゃあ音量下げ8

play19:15

スライダーもちゃんと機能してるいい感じ

play19:18

だねでは同じ要領で効果音を鳴らす関数

play19:20

作るよ仕組みはシステム音と全く同じ業界

play19:23

public void プレイ

play19:25

sound effects

play19:28

オーディオソースプレイクリップ at

play19:30

ポイントクリップ transform

play19:32

ポジション効果音ボリュームかける

play19:34

マスターボリュームよしじゃあ攻撃

play19:35

state 内でこの関数実行しようまず

play19:38

は自分から敵への攻撃 state

play19:40

オーディオマネージャーインスタンス

play19:42

プレイ sound effect

play19:43

audio マネージャーインスタンス

play19:45

sound effects アタック敵

play19:47

からの攻撃する8でも同じものを書く

play19:53

じゃあ再度テスト

play19:56

4位

play20:00

4

play20:04

敵からの攻撃と自分の攻撃で音変えても

play20:07

いいかもなあそこらへんは各自お好みで

play20:09

調整してください一応成功だぜじゃあ最後

play20:12

に bgm ならそうよっしゃー

play20:13

public void プレイ

play20:15

music

play20:18

音楽に関しては専用のオーディオソースを

play20:20

用意したからそのオーディオソースの

play20:22

クリップっては国音源をアタッチして

play20:24

プレイという関数を実行する music

play20:27

ソースクリップ=クリップミュージック

play20:29

そうスプレーではメインクラス開いて

play20:32

メインコマンドステートに入った時点で

play20:34

通常 bgm

play20:35

敵との遭遇ステートに入った時点で戦闘 b

play20:38

cm を鳴らそう

play20:51

できたアーティスト

play20:55

を音がなってううるせえええええちょっと

play20:58

先に音量調節しよう

play21:09

ちゃんとなってるがうん

play21:14

おいメインステートに戻るたびに曲が

play21:16

リセットされてしまうぞメインステートに

play21:18

入るたびにクリップ入れ直してプレイ関数

play21:20

実行するからだねもっと工夫しよう

play21:23

もしアタッチしようとしてるクリップが

play21:25

現在アタッチされてるクリップと同じだっ

play21:28

たら何もせずに終了

play21:30

これでいちいち途切れなくなるということ

play21:33

でラスト

play21:34

play21:34

goo

play21:35

[音楽]

play21:37

play21:43

goo

play21:45

グー

play21:49

play21:53

いい感じ敵と戦ってみよう

play21:57

[音楽]

play21:58

ちゃんと切り替わったなぁ敵を倒してみて

play22:02

[音楽]

play22:05

なんだか bgm の切り替わりが急

play22:07

すぎるなそこなんですよ問題は今回はここ

play22:10

で区切って続きは次回にしよう次回は再生

play22:12

している bgm をゆっくりフェード

play22:14

アウトさせるのと同時に次の bgm を

play22:16

ゆっくりフェードインさせることで滑らか

play22:18

に曲を遷移させる仕組みをつくるよう

play22:20

楽しみだぜというわけで今回も最後までご

play22:22

視聴ありがとうございましたもし

play22:24

よろしければチャンネル登録お待ちして

play22:26

おります次回も必ず見てくださいまたねー

Rate This

5.0 / 5 (0 votes)

関連タグ
ゲーム開発音声システム音量調節BGM効果音スライダーオーディオマネージャーゲーム設計プログラミングチュートリアル技術解説