ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法

ゲーム開発では、ゲームの雰囲気を演出するために効果音を使う必要があることが多いため、この記事では、Cocos Creator ゲーム開発における効果音コンポーネントのカプセル化と使用についてまとめます。

1. Cocos Creatorでのオーディオ再生の基本

1. 基本

【1】AudioSourceコンポーネント公式ドキュメント: http://docs.cocos.com/creator/manual/zh/audio/audio.html

【2】cc.audioEngine公式ドキュメント: http://docs.cocos.com/creator/manual/zh/audio/audio.html

Cocos Creator には 2 つのオーディオ再生方法があります。AudioEngine と AudioSource はどちらもオーディオを再生できます。両者の違いは、AudioSource はシーンに追加してエディターで設定できるコンポーネントであることです。 AudioEngine はエンジンによって提供される純粋な API であり、スクリプト内でのみ呼び出すことができます。

共通点:基本的には AudioClip オーディオ リソースを処理し、Cocos Creator エディターでコンポーネントをマウントする必要があります。

個人的には、AudioSource コンポーネントを置き換えてサウンドを再生するにはこれを使用することをお勧めします。インターフェイスが完成しており、テストも効果的です。AudioSource コンポーネントと同様のスクリプトをカプセル化して使用できます。

方法1: AudioSourceコンポーネントを使用して再生する

空のノードを作成し、そこに別のコンポーネントを追加します-> AudioSource

スクリプトにAudioSourceをプリセットし、実際のニーズに応じてスクリプトの外部インターフェースを次のように改善します。

cc.クラス({

	プロパティ:

		オーディオソース: {

			タイプ: cc.AudioSource、
			デフォルト: null

		},
	},
	遊ぶ() {

		オーディオソースを再生します。

	},
	一時停止() {

		this.audioSource.pause();

	},
});

方法2: AudioEngineを使用して再生する

次の例の properties オブジェクトに示すように、スクリプトで audioClip リソース オブジェクトを定義します。

再生するには、cc.audioEngine.play(audio, loop, volume); を直接使用します。以下の onLoad の例に示すように。

cc.クラス({

	プロパティ:

		オーディオ:

			デフォルト: null、
			タイプ: cc.AudioClip

		}

	},
	オンロード() {

		this.current = cc.audioEngine.play(this.audio, false, 1);

	},
	onDestroy() {

		cc.audioEngine.stop(this.current);

	}

});

AudioEngine が再生されているときは、完全な AudioClip オブジェクト (URL ではない) が渡されることに注意してください。したがって、再生インターフェースでオーディオ URL を直接入力することはお勧めしません。代わりに、最初に AudioClip を定義してから、オーディオをエディターにドラッグすることをお勧めします。

2. 一般的な方法

【1】コンポーネントオーディオソース

play ( ) オーディオクリップを再生します。

stop ( ) 現在のオーディオクリップを停止します。

pause ( ) 現在のオーディオクリップを一時停止します。

resume ( ) 再生を再開します。

【2】サウンドシステム cc.audioEngine

// バックグラウンドミュージック、ループ

cc.audioEngine.playMusic(ソース);

cc.audioEngine.stopMusic(ソース);

// 短い効果音

cc.audioEngine.playEffect(ソース);

cc.audioEngine.stopEffect(ソース);

上記の最初の方法はネイティブ プラットフォームで多くのバグが発生するため、当社のゲームではすべて 2 番目の方法を使用してサウンドを再生します。

2. Cocos Creator サウンドエフェクト管理コンポーネントのパッケージ化

1. サウンド管理クラスSoundMgr.tsを作成する

定数{
	ccクラス、
	財産
} = cc._デコレータ;

@ccクラス

エクスポートデフォルトクラスSoundMgr {

	sound_path: 文字列 = 'res/sounds/';

	// sound は音楽の名前とオーディオオブジェクトのキーと値のペアを格納します sounds: {
		[キー: 文字列]: 任意
	} = {};

	有効: ブール値 = true;

	音楽: 文字列 = '';

	// シングルトン モード protectedstatic インスタンス: SoundMgr;

	パブリック静的getInstance(): SoundMgr {

		if (!this.instance) {

			this.instance = newSoundMgr();

		}

		このインスタンスを返します。

	}

	// サウンドリソースを追加 addSound(key: string, clip: cc.AudioClip) {

		this.sounds[キー] = クリップ;

	}

	playFx(fxName: 文字列) {

		if (!this.enabled) を返します。

		cc.audioEngine.playEffect(this.sounds[fxName], false);

	}

	playMusic(音楽名: 文字列) {

		this.music = 音楽名;

		if (!this.enabled) を返します。

		cc.audioEngine.playMusic(this.sounds[musicName], true);

	}

	音楽を停止する() {

		cc.audioEngine.stopMusic();

	}

	有効にするかどうかを設定します(有効: ブール値) {

		this.enabled = 有効;

		有効になっている場合

			this.playMusic(this.music);

		} それ以外 {

			cc.audioEngine.stopAll();

		}

	}

	getEnable() {

		returnthis.enabled;

	}

}

2. 初期化中にオーディオリソースをロードする

Cocos Creator ビジュアル編集ツールを使用して、ゲームシーンとリソースを次のように設定します。

コードを通じてサウンドを動的に読み込むため、すべてのサウンド ファイルを保存する sounds フォルダーを resources フォルダーに配置します (上図を参照)。

次に、GameMgr.ts を作成し、Canvas ノードにマウントします。

オンスト
	ccクラス、
	財産
} = cc._デコレータ;

「SoundMgr」からSoundMgrをインポートします。

@ccクラス

exportdefaultclassGameMgrextends cc.Component {

	サウンドをロードする(){

		// コードを通じて動的にロードされるリソースはリソース フォルダーに配置する必要があることに注意してください cc.loader.loadResDir('sounds', cc.AudioClip, function(err, clips) {

			console.log("クリップをロード:", クリップ);

			もし(エラー){

				console.log("エラー:", err);

			}

			(i = 0とすると、i

				SoundMgr.getInstance().addSound(クリップ[i].name, クリップ[i]);

			}

		});

	}

	オンロード() {

		サウンドをロードします。

		console.log("サウンド:", SoundMgr.getInstance().サウンド);

	}

	再生クリック() {

		console.log("プレイ");

		SoundMgr.getInstance().playMusic('spring_music');

	}

	一時停止クリック() {

		console.log("一時停止");

		SoundMgr.getInstance().stopMusic();

	}

}

GameMgr カスタム コンポーネントの onLoad メソッドで、loadSounds を呼び出して、ゲームに必要なすべてのサウンド リソースを読み込みます。同時に、再生および一時停止インターフェース メソッド onPlayClick および onPauseClick が GameMgr.ts に提供されます。

再生ボタンと一時停止ボタンによって呼び出されます。

3. 通話の再生と一時停止

4. テストを実行する

すべてのサウンド リソースが正常に読み込まれ、再生ボタンと一時停止ボタンをクリックするとテストが合格します。

3. 注意事項

注意: オーディオ再生関連の設定がすべて完了しているにもかかわらず、一部のブラウザでプレビューまたは実行したときに音が聞こえない場合は、ブラウザの互換性の問題が原因である可能性があります。たとえば、Chrome では WebAudio の自動再生が無効になっており、デフォルトではオーディオは Web Audio を使用して読み込まれ、再生されます。この場合、ユーザーはリソース マネージャーでオーディオ リソースを選択し、プロパティ インスペクターでオーディオ読み込みモードを DOM Audio に変更して、ブラウザーで正常に再生する必要があります。

以上が、ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法の詳細です。CocosCreatorのサウンド処理の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Cocos クリエイターのタッチ イベント アプリケーション (タッチして複数の子ノードを選択する例)
  • iOS開発でcocos2dを使用してタッチイベントを追加する方法
  • Cocos2d-x タッチイベントの例
  • CocosCreator最適化DrawCallの詳細な説明
  • CocosCreatorがスキル冷却効果を実装
  • cocoscreatorプレハブの詳しい説明
  • CocosCreator でレイヤー管理に常駐ノードを使用する方法
  • CocosCreator ScrollView 最適化シリーズ: フレーム読み込み
  • CocosCreator システムイベントがどのように生成され、トリガーされるかについての詳細な説明

<<:  CentOS7 のシステム サービスに Nginx を追加する方法

>>:  Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策

推薦する

Docker がデータベースのデプロイに適さない 7 つの理由のまとめ

Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソフト...

Linux の Centos7 に Mysql5.7.19 をインストールする詳細なチュートリアル

1. MySQLをダウンロードするURL: https://dev.mysql.com/downlo...

MySQL の重要なログファイルの包括的なインベントリ

目次導入ログ分類パラメータファイルエラーログファイル完全なログファイルスロークエリログバイナリログフ...

MySQLにおける時刻日付型と文字列型の選択について

目次1. DATETIMEとTIMESTAMPの使用1. 類似点2. 相違点3. 選択2. varc...

初心者向けWebサイト構築ガイド⑥:FlashFXPの詳しい使い方

今日は、サイトの設定やウェブサイトのアップロードなど、FlashFXP の最も基本的な機能を紹介しま...

VMware ESXi6.7 の簡単なセットアップ(画像とテキスト付き)

1. VMware vSphere の概要VMware vSphere は、業界をリードする最も信...

Reactでパスワード強度検出器を実装する方法

目次序文使用コンポーネントの記述データ構造分析プロセス分析基礎コードの分析他の要約する序文パスワード...

HTML相対パスの親ディレクトリと子ディレクトリの書き方

親ディレクトリを指定する方法../ はソース ファイルの親ディレクトリを表し、../../ はソース...

MySQL 8.0.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

スローモーションアニメーション効果を実現するJavaScript

この記事では、スローモーションアニメーション効果を実現するためのJavaScriptの具体的なコード...

MySQL データベース内の varchar 型の数値のサイズを比較する方法

テストテーブルを作成する -- ---------------------------- -- ch...

TypeScriptの基本型の詳細な説明

目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...

Dockerにlogstashをインストールする詳細な手順

docker-compose.yml を編集し、次のコンテンツを追加します。 バージョン: '...

DockerコンテナがSongtiなどのフォントを認識しない場合の解決策

問題の背景: docker を使用してプロジェクトをデプロイする場合、プロジェクト内で印刷コントロー...

JavaScript setinterval 1秒遅延ソリューション

setinterval を使用すると、ページを開いた直後に 1 秒の遅延後に実行されることがわかりま...