kiyasuの日記

ハッピーうれピーよろしく哀愁

Unity StreamingAssets wav AudioSource.clip 渡し方

VideoPlayerの場合

VideoPlayer videoPlayer;
videoPlayer.url = Application.streamingAssetsPath + "/file.wav";

VideoPlayerはurlから取得できるのでこれでOKです。

AudioSourceの場合

audioSouceはclipだけでurlはないので間にwebrequestを挟みます(実際に呼ぶのはローカルのファイル)。UnityWebRequestの中身が2020と2019で違うようで、動作確認したのでは2019,.4.26f1のみです。

Unity 2019.4

public class AudioInitializer : MonoBehaviour
{
  [SerializeField]
   private AudioSource audioSource;
 
   [SerializeField]
   private string audioFolderPath;
 
   [SerializeField]
   private string audioFileName;

   private void OnEnable()
   {
       StartCoroutine(GetAudioClip());
   }

   IEnumerator GetAudioClip()
   {
       string clipPath = "file://" + Application.streamingAssetsPath + audioFolderPath + audioFileName;
       using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip(clipPath, AudioType.WAV))
       {
           yield return www.SendWebRequest();
           if (www.isHttpError || www.isNetworkError)
           {
               Debug.Log(www.error);
           }
           else
           {
               AudioClip loadedClip = DownloadHandlerAudioClip.GetContent(www);
               audioSource.clip = loadedClip;
               audioSource.Play();
           }
       }
   }
}

参考

How would I go about using music from StreamingAssets folder (imported by the player) : Unity3D

UnityWebRequestでもローカルファイルの取得ができる - Qiita

2019での書き方

Unity - Scripting API: Networking.UnityWebRequestMultimedia.GetAudioClip

最新版(現在2020.3)での書き方

Unity - Scripting API: Networking.UnityWebRequestMultimedia.GetAudioClip リンクがバージョン指定されてないので今後変わりそう