C# 在unity中使用视频播放器全屏时,如何旋转屏幕?

C# 在unity中使用视频播放器全屏时,如何旋转屏幕?,c#,unity3d,C#,Unity3d,我正在unity3d中开发应用程序,方向是纵向。 因此,当我在全屏模式下播放视频时: Handheld.PlayFullScreenMovie(vClip, Color.black, FullScreenMovieControlMode.Full); 我的视频是全屏播放,但是纵向播放。但我想以横向模式播放。 我尝试: 它正在工作,但当视频完成时,应用程序方向不会更改为纵向。 请提供任何帮助。因此我尝试了,正如文档中所述: 调用此函数将在电影播放期间暂停Unity。播放完成后,Unity将恢复

我正在unity3d中开发应用程序,方向是纵向。 因此,当我在全屏模式下播放视频时:

Handheld.PlayFullScreenMovie(vClip, Color.black, FullScreenMovieControlMode.Full);
我的视频是全屏播放,但是纵向播放。但我想以横向模式播放。 我尝试:

它正在工作,但当视频完成时,应用程序方向不会更改为纵向。 请提供任何帮助。

因此我尝试了,正如文档中所述:

调用此函数将在电影播放期间暂停Unity。播放完成后,Unity将恢复

这表明出现了时间问题。因此,我设置了以下代码:

使用系统集合;
使用UnityEngine;
公共课暴躁:单一行为
{
void Start()
{
开始例行程序(播放视频());
}
公共IEnumerator播放视频()
{
Screen.orientation=ScreenOrientation.LandscapeLeft;
返回新的等待秒(1f);
掌上.PlayFullScreenMovie(“video.mp4”、Color.black、FullScreenMovieControlMode.Full);
返回新的等待秒(1f);
Screen.orientation=ScreenOrientation.grait;
}
}
在我的实验中,我发现如果我在使用
Screen.orientation
设置方向后再加上一秒钟的等待,它就会工作,但如果我只等待一帧,它就不会工作

解决方案 更改方向后添加一个
返回新的WaitforSeconds(1f)
,以确保方向已更改。我知道这不是最漂亮的代码,但它似乎可以胜任这项工作

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.");
}