EDIT:已解决,问题出在“跳过掉落”选项上。

大家好!

我正在工作的一个项目卡在了视频播放器组件上,尽管我尝试了各种方法,还是没能解决问题,所以希望有人能给出答案或提供一些有用的线索。

我的项目中,各种360°视频被投射到skybox上,并且在输入时投射的视频会发生变化。然而,我遇到的问题是,视频开始时会有一个相当大的延迟,约25秒(我用时钟测量的,所以值略有粗略),此期间我只会看到第一帧的投影,之后视频会正常开始。

我已经为skybox分配了一个skybox材料,该材料接受一个render texture和两个render texture,每个输出都分配给了一个视频播放器组件以便实现无缝转换。SceneController GameObject包含了控制器脚本,两个子对象分别包含一个VideoPlayer。

Unity版本是6000.3.15f1。

SceneController包含以下代码:

void Start()
{
    Debug.Log("启动!");

    videoPlayer1.prepareCompleted += OnPlayer1Prepared;

    videoPlayer1.Prepare();
    videoPlayer2.Prepare();

    skyboxMaterial.SetTexture("_MainTex", player1RenderTexture);

    //其他代码这里做一些与设置投影相关的游戏对象的活跃
}

private void IncreaseCurrentShownPosition()
{
    //其他代码这里做一些与设置投影相关的游戏对象的活跃

    if (player1Active == true)
    {
        skyboxMaterial.SetTexture("_MainTex", player2RenderTexture);
        videoPlayer2.Play();
        videoPlayer1.Stop();
        player1Active = !player1Active;
    }
    else
    {
        skyboxMaterial.SetTexture("_MainTex", player1RenderTexture);
        videoPlayer1.Play();
        videoPlayer2.Stop();
        player1Active = !player1Active;
    }
}

public void OnPlayer1Prepared(VideoPlayer source)
{
    Debug.Log("Player 1 prep ready? " + videoPlayer1.isPrepared);
    videoPlayer1.Play();
    Debug.Log("Player 1 started");
}

在最后一次运行中,我检查了OnPlayer1Prepared,发现它在“启动”后约2秒后打印了true,这听起来是合理的,考虑到视频的大小。然而,约25秒的延迟仍然存在,即使我将视频缩小到四分之一的分辨率。这将是不可用的,但我想确认文件大小是否是问题的原因。