http://fantom1x.blog130.fc2.com/blog-entry-299.html?sp
こちらに掲載されているコードを使って前回の質問で取得したパスを引数にして音声ファイルを読み込もうとしたのですが、音声が再生されません。
様々な場所にDebug.Logを入れて確認してみたところ、以下の場所で無限ループが発生していました。
C#
1 using (UnityWebRequest req = new UnityWebRequest("file://" + path)) //※あくまでローカルファイルとする 2 { 3 while (!req.isDone) 4 { 5 Debug.Log("wait...");//ここが無限ループ 6 yield return null; 7 }
パスを引数にして再生するまでのコード
C#
1 //外部からの呼び出し用メソッド 2 public void LoadAudio(string path) 3 { 4 if (Path.GetExtension(path) == ".m4a") //※"m4a"は再生できないっぽい 5 { 6 Debug.Log("Not supported audio format."); 7 return; 8 } 9 10 StartCoroutine(LoadToAudioClipAndPlay(path)); 11 } 12 13 //ファイルの読み込み(ダウンロード)と再生 14 IEnumerator LoadToAudioClipAndPlay(string path) 15 { 16 Debug.Log($"load{path}"); 17 if (audioSource == null || string.IsNullOrEmpty(path)) 18 yield break; 19 20 if (!File.Exists(path)) 21 { 22 //ここにファイルが見つからない処理 23 Debug.Log("File not found."); 24 yield break; 25 } 26 Debug.Log("loading"); 27 using (UnityWebRequest req = new UnityWebRequest("file://" + path)) //※あくまでローカルファイルとする 28 { 29 while (!req.isDone) 30 { 31 Debug.Log("wait..."); 32 yield return null; 33 } 34 35 AudioClip audioClip = ((DownloadHandlerAudioClip)req.downloadHandler).audioClip; 36 if (audioClip.loadState != AudioDataLoadState.Loaded) 37 { 38 //ここにロード失敗処理 39 Debug.Log("Failed to load AudioClip."); 40 yield break; 41 } 42 43 //ここにロード成功処理 44 audioSource.clip = audioClip; 45 audioSource.Play(); 46 Debug.Log("Load success : " + path); 47 } 48 } 49
やってみたこと
new UnityWebRequestの時にパスを直接打ち込んだものを引数にしましたが結果は同じでした。
環境
Unity:2018.3.8f1
Windows10
回答2件
あなたの回答
tips
プレビュー