ゲーム開発におけるサウンド処理に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 をインストールするときに発生する初期化エラーの解決策

推薦する

ApplicationHost.config (IIS ストレージ構成領域ファイル) の概要

新しく作成された Web サイトの場合は、ASP.NET MVC5 を例に挙げます。セッションを処理...

IE8 ベータ 1 には注意が必要な 2 つの領域があります

<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...

VMware Workstation のダウンロードとインストールの詳細なチュートリアル

仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...

HTML ハイパーリンク タグ_Powernode Java アカデミー

HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...

1分でVueが右クリックメニューを実装

目次レンダリングインストールコードの実装カスタムスタイル要約する効率的に要件を満たし、車輪の再発明を...

Web データ ストレージ: Cookie、UserData、SessionStorage、WebSqlDatabase

クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...

JS における ES6 継承と ES5 継承の違い

目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...

コード例を通してページ置換アルゴリズムの原理を理解する

ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...

MySQL 結合クエリ構文と例

接続クエリ:これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 ...

CSS ファンタスティックボーダーアニメーション効果の実装

今日、私はブログサイト shoptalkshow を閲覧していて、非常に興味深いこのインターフェース...

jQueryは動的タグイベントを実装します

この記事では、タグイベントを動的に追加するためのjQueryの具体的なコードを参考までに紹介します。...

CSS で text-align と margin: 0 auto を使用して中央に配置する例コード

CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...

Linux でシェル スクリプトを使用して jar パッケージ プロジェクトを展開するための完全な手順

1. JDKをインストールする コンピュータの動作桁を確認します。 uname -ar 2017 x...

Linux で Hadoop クラスターをインストールするための詳細な手順

目次1. usrディレクトリにHadoopディレクトリを作成し、インストールパッケージをそのディレク...

私が遭遇したIE8の互換性に関する注意事項

1. IE8 の getElementById は id のみをサポートし、name はサポートしま...