ゲーム開発では、ゲームの雰囲気を演出するために効果音を使う必要があることが多いため、この記事では、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 エディターでコンポーネントをマウントする必要があります。
方法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. 注意事項
以上が、ゲーム開発におけるサウンド処理にCocosCreatorを使用する方法の詳細です。CocosCreatorのサウンド処理の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: CentOS7 のシステム サービスに Nginx を追加する方法
>>: Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策
新しく作成された Web サイトの場合は、ASP.NET MVC5 を例に挙げます。セッションを処理...
<br />関連記事: Web スキル: 複数の IE バージョンを共存させるソリューシ...
仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...
HTML を学習したり使用したりしたことがある人なら、<a> タグについてよく知っている...
目次レンダリングインストールコードの実装カスタムスタイル要約する効率的に要件を満たし、車輪の再発明を...
クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...
目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...
ページ置換アルゴリズム: 本質は、限られたメモリをワイヤレス プロセスに対応できるようにすることです...
接続クエリ:これは、2 つのクエリ (またはテーブル) の各行をペアで接続した結果です。つまり、1 ...
今日、私はブログサイト shoptalkshow を閲覧していて、非常に興味深いこのインターフェース...
この記事では、タグイベントを動的に追加するためのjQueryの具体的なコードを参考までに紹介します。...
CSSでtext-align、margin: 0 autoを使用して中央揃えにするtext-alig...
1. JDKをインストールする コンピュータの動作桁を確認します。 uname -ar 2017 x...
目次1. usrディレクトリにHadoopディレクトリを作成し、インストールパッケージをそのディレク...
1. IE8 の getElementById は id のみをサポートし、name はサポートしま...