Файл фильма и аудиофайл в 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, является ли он нулевым или нет. Если это не ноль, это означает, что вы уже загружаете файл фильма. Если он нулевой, проверьте file.audioClip, является ли он нулевым или нет. Если это не ноль, это означает, что вы уже загружаете аудиофайл.

Обратите внимание, что 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