Как я могу повернуть экран при использовании видео плеера во весь экран в единстве? - PullRequest
0 голосов
/ 01 марта 2020

Я работаю над приложением в unity3d, и моя ориентация - портретная. Поэтому, когда я играю видео в полноэкранном режиме с помощью:

Handheld.PlayFullScreenMovie(vClip, Color.black, FullScreenMovieControlMode.Full);

, мое видео воспроизводится в полноэкранном режиме, но в портретном режиме. Но я хочу воспроизвести его в альбомном режиме. Я пытаюсь:

public void PlayVideo()
{
    StartCoroutine(PlayFullVideoCoroutine());
    Screen.orientation = ScreenOrientation.LandscapeLeft;
    print("Play Full Video Coroutine!");
}
IEnumerator PlayFullVideoCoroutine()
{
     Handheld.PlayFullScreenMovie(vClip, Color.black, FullScreenMovieControlMode.Full);
     yield return new WaitForEndOfFrame();
     Screen.orientation = ScreenOrientation.Portrait;
     print("Full Video Playback Completed.");
}

Это работает, но когда видео заканчивается sh, ориентация приложения не меняется на книжную. Любая помощь, пожалуйста.

1 Ответ

0 голосов
/ 01 марта 2020

Итак, я экспериментировал с Handheld.PlayFullScreenMov ie и, как указано в документации:

Вызов этой функции приостановит Unity во время воспроизведения mov ie. Когда воспроизведение завершится, Unity возобновится.

Это признак проблемы синхронизации . Поэтому я установил следующий код:

using System.Collections;
using UnityEngine;

public class Testy : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(PlayVideo());
    }


    public IEnumerator PlayVideo()
    {
        Screen.orientation = ScreenOrientation.LandscapeLeft;
        yield return new WaitForSeconds(1f);
        Handheld.PlayFullScreenMovie("video.mp4", Color.black, FullScreenMovieControlMode.Full);
        yield return new WaitForSeconds(1f);
        Screen.orientation = ScreenOrientation.Portrait;
    }
}

В моем эксперименте я обнаружил, что если бы я добавил ожидание в одну секунду после установки ориентации с помощью Screen.orientation, это сработало бы, но если бы я ждал только один кадр, это не будет.

Решение

Добавьте yield return new WaitforSeconds(1f) после изменения ориентации, чтобы убедиться, что ориентация изменилась. Я знаю, что это не самый красивый код, но, похоже, он выполняет свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...