Hello, I have a problem with loading an audio file from HDD, more precisely while it loads, the game stops until it is fully downloaded even if I use yield's or other coroutine methods. Am I doing something wrong or it has to be done using streaming? (which I once used but want to avoid it this time, too much work and code involved)
Here's the code am using right now:
private var musicFolderContents : String[];
var customPlaylistSwitch : int[];
var musicPlaylist : int[];
var actualMusicID : int;
private var externalMusicScan : int;
var playNextTrack : boolean;
var actualAudioTrack : String;
function MusicPlayer (){
if (playNextTrack){
// Play music from internal library
if (musicPlaylist[actualMusicID] < originalMusic.length){
audio.clip = originalMusic[musicPlaylist[actualMusicID]];
audio.Play();
} // Play music from external folder
else if (musicPlaylist[actualMusicID] > originalMusic.length){
actualAudioTrack = Path.GetFileNameWithoutExtension("file://"+musicFolderContents[musicPlaylist[actualMusicID]-originalMusic.length]);
LoadMusicFile();
}
actualMusicID = (actualMusicID + 1) % musicPlaylist.length;
playNextTrack = false;
}
}
function LoadMusicFile (){
var HDDaudioFile : WWW;
if (Application.isEditor) HDDaudioFile = new WWW ("file://"+musicFolderContents[musicPlaylist[actualMusicID]-originalMusic.length]);
else HDDaudioFile = new WWW ("file://"+Application.dataPath+"/Music/"+musicFolderContents[musicPlaylist[actualMusicID]-originalMusic.length]);
yield HDDaudioFile;
if (HDDaudioFile.isDone){
var HDDLoadedFile : AudioClip = HDDaudioFile.GetAudioClip(false, false);
audio.clip = HDDLoadedFile;
while (!audio.isPlaying){
if (audio.clip == null){
playNextTrack = true;
break;
}
if (audio.clip.isReadyToPlay) audio.Play();
else yield;
}
}
}
↧