Я пытаюсь загрузить MP3 из папки streamingasset в проект единства, работающий под IOS. В редакторе все работает нормально, но на iPhone MP3 не загружается.
Я знаю о проблемах с файловыми путями, но предположил, что все сделано правильно. Вот код:
string fileName = "mytestfile";
if (Application.platform == RuntimePlatform.IPhonePlayer) {
path = "file:/" + System.IO.Path.Combine (Application.streamingAssetsPath, fileName + ".mp3");
} else {
path = "file://" + Application.dataPath + "/StreamingAssets/" + fileName + ".mp3";
}
Debug.Log ("LOAD FROM STREAMING ASSET " + path);
// Start a download of the given URL
WWW request = new WWW (path);
// Wait for download to complete
yield return request;
// use request.audio
AudioClip loadedMp3 = request.GetAudioClip (false, false);
Debug.Log ("Result length " + loadedMp3.length);
И вот вывод в xcode:
LOAD FROM STREAMING ASSET file://var/mobile/Applications/{appid}/appname.app/Data/Raw/mytestfile.mp3
Длина результата 0
Кто-нибудь знает, что я делаю неправильно? Как я уже сказал, в редакторе все работает нормально.
Я действительно знаю это, потому что я использовал его сегодня. потоковые активы в iOS называются /Raw/. Таким образом, вы должны сделать #if UNITY_IPHONE и reference/Raw/вместо StreamingAssets. В андроиде он становится еще более запутанным. Вы должны обратиться к своему.jar !! Разве вы не рады, что используете iOS?
Также вам не нужен файл://
Использовать StreamingAssets
Создание XCode-игрока волшебным образом превращает ваш каталог в Raw. Поэтому во время работы ваш код должен это сказать!