###前提・実現したいこと
まだunity始めたばかりの者です。
ファイルにあるたくさんの音声データをそのまま読み込んでオブジェクトで鳴らしたいのですが、やり方を詳しく教えていただけませんか?
###発生している問題・エラーメッセージ
外部ファイルにある音声データを手動ではなく、スクリプトでunity内で鳴らせない。
###試したこと
WWW.audioClip を使おうとしましたが、使い方がわかりませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Unity5.4 JavaScript
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
Resoucesフォルダを使うとスクリプトから音声を取得できますがJavascriptでの書き方がわからないので適当に変換して使ってください。似たような内容の回答もしましたのでこちらも見てみてください。
https://teratail.com/questions/48887
###使い方説明 下準備
- Resourcesフォルダを適当な場所に作成
- 読み出したいサウンドファイルを制作したフォルダ内に配置
仮にbird1.mp3、bird2.mp3、bird3.mp3、bird4.mp3としておきます。
準備完了
今後も使いそうでしたらわかりやすいようにResources/bird_voicesなどのフォルダを作ってその中に入れてもいいと思います。とりあえず今回は入れている程で進めます。
###実装
・サウンドの配置場所を以下と仮定して進めます。
Resources/bird_voices/bird1.mp3
Resources/bird_voices/bird2.mp3
Resources/bird_voices/bird3.mp3
Resources/bird_voices/bird4.mp3
###サウンド名を指定するパターン
C#
1using UnityEngine; 2using System.Collections; 3 4public class birdManager : MonoBehaviour { 5 6 //鳥のプレハブをセット 7 //※ AudioSourceコンポーネントをつけ忘れないように注意 8 [SerializeField] 9 GameObject birdPrefab; 10 11 //サウンドが保存されている場所のパス 12 string birdFolder = "bird_voices/"; 13 //サウンドの名前 14 string[] birdVoiceName = new string[4] 15 { 16 "bird1", 17 "bird2", 18 "bird3", 19 "bird4" 20 }; 21 22 void Awake() 23 { 24 //10回ほどループしてみます。 25 for (int i = 0; i < 10; i++) 26 { 27 GameObject obj = Instantiate(birdPrefab,new Vector3(Random.Range(1,100),Random.Range(7,10),Random.Range(1,100)), Quaternion.identity) as GameObject; 28 AudioSource source = obj.GetComponent<AudioSource>(); 29 //Resources.Loadでサウンドをロード ()内は画像名をパスから指定 30 source.clip = Resources.Load<AudioClip>(birdFolder + birdVoiceName[Random.Range(0,birdVoiceName.Length)]); 31 source.Play(); 32 } 33 } 34}
###サウンド名を自動で取得するパターン
C#
1using UnityEngine; 2using System.Collections; 3 4public class birdManager : MonoBehaviour { 5 6 [SerializeField] 7 //鳥のプレハブをセット 8 //※ AudioSourceをつけ忘れないように注意 9 GameObject birdPrefab; 10 11 //サウンドが保存されている場所のパス 12 string birdFolder = "bird_voices/"; 13 14 void Awake() 15 { 16 //とりあえず10回ほどループ 17 for (int i = 0; i < 10; i++) 18 { 19 GameObject obj = Instantiate(birdPrefab,new Vector3(Random.Range(1,100),Random.Range(7,10),Random.Range(1,100)), Quaternion.identity) as GameObject; 20 AudioSource source = obj.GetComponent<AudioSource>(); 21 //Resources.LoadAllですべてのサウンドを取得 ()内はファルダ名 22 AudioClip[] clips = Resources.LoadAll<AudioClip>(birdFolder); 23 source.clip = clips[Random.Range(0,clips.Length)]; 24 source.Play(); 25 } 26 } 27}
###Resoucesフォルダの注意点などはこちら
https://teratail.com/questions/48887
投稿2016/09/24 09:42
編集2016/09/24 10:00総合スコア1724
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/24 10:49
2016/09/25 07:38
2016/09/25 09:14
2016/09/25 09:27
2016/09/25 09:44