Филмов файл и аудио файл в Unity3d

Имам проблем относно MovieTexture в Unity: искам да заредя филмови и аудио файлове в Unity на един и същ обект на игра (не едновременно). И така, трябва да правя разлика между аудио и видео файл, но не го разбирам. Ето какво искам да направя:

MovieTexture movieTexture;
AudioSource audio = gameObject.GetComponent<AudioSource>();
WWW file = new WWW(@"file:///"+pathToFile); //example.mp4 or example.ogg
if(movie)
{
    movieTexture = file.movie;
    gameObject.GetComponent<Renderer>().material.mainTexture = movieTexture;
    audio.clip = movieTexture.audioClip;
    movieTexture.Play();
    audio.Play();
}
if(audio)
{
    audio.clip = file.audioClip;
    audio.Play()
}

Как мога да направя това?

Използвам Unity 5.2 Personal Edition.

РЕДАКТИРАНЕ: Опитах предложенията, но все още не работи, независимо какво правя.


person Tenshi    schedule 25.10.2015    source източник


Отговори (2)


Ето как коригирам кода ви. Първо проверявате вашия WWW обект file.movie дали е нулев или не. Ако не е нула, това означава, че вече сте заредили филмов файл. Ако е null, проверете file.audioClip дали е null или не. Ако не е нула, това означава, че вече сте заредили аудио файл.

Моля, обърнете внимание, че Unity поддържа само Ogg Theora за зареждане на филмова текстура (http://docs.unity3d.com/Manual/class-MovieTexture.html)

MovieTexture movieTexture;
AudioSource audio = gameObject.GetComponent<AudioSource>();
WWW file = new WWW(@"file:///" + pathToFile); //example.mp4 or example.ogg
if(file.movie != null)
{
    movieTexture = file.movie;
    gameObject.GetComponent<Renderer>().material.mainTexture = movieTexture;
    audio.clip = movieTexture.audioClip;
    movieTexture.Play();
    audio.Play ();
}
else if(file.audioClip != null)
{
    audio.clip = file.audioClip;
    audio.Play();
}
person junian    schedule 26.10.2015
comment
Благодаря за отговора! Въпреки това не работи. if(file.movie != null) винаги е вярно, дори ако заредя само обикновен .ogg аудио файл. Видях, че ако се опитам да заредя аудио файл и той ще се преобразува във филмова текстура, Unity се срива в точка movieTexture.Play(); с прозорец за доклад за грешка. Знаете ли някаква алтернатива на това? - person Tenshi; 26.10.2015

person    schedule
comment
Благодаря за отговора! Въпреки това не работи. if(file.movie != null) винаги е вярно, дори ако заредя само обикновен .ogg аудио файл. Видях, че ако се опитам да заредя аудио файл и той ще се преобразува във филмова текстура, Unity се срива в точка movieTexture.Play(); с прозорец за доклад за грешка. Знаете ли някаква алтернатива на това? - person Tenshi; 26.10.2015