質問・問題
Unity アプリリソースとして埋め込んだ音源データを PlayEffect() や StartAudioMixing() に渡す場合、パスはどのように指定すべきでしょうか
回答・解決方法
- Assets フォルダ内に「StreamingAssets」というフォルダを作成し、その中にリソース (音源データ) を配置します。
- Application.streamingAssetsPath とリソースのファイル名を結合し、パスを生成します
※例: System.IO.Path.Combine(Application.streamingAssetsPath, filename);
Android では、このパスから直接リソースを参照できないため、追作業として UnityWebRequest 経由で取得する必要があります。
以下、実装例となります:
string audiofile_path = System.IO.Path.Combine(Application.streamingAssetsPath, filename);
#if UNITY_ANDROID
string jar_path = audiofile_path;
UnityEngine.Networking.UnityWebRequest request = UnityEngine.Networking.UnityWebRequest.Get(jar_path);
request.SendWebRequest();
while(!request.isDone) {}
audiofile_path = System.IO.Path.Combine(Application.persistentDataPath, filename);
System.IO.File.WriteAllBytes(audiofile_path, request.downloadHandler.data);
#endif