【问题标题】:MovieTexture in Unity3D is never ready to playUnity3D 中的 MovieTexture 永远无法播放
【发布时间】:2013-03-01 23:46:10
【问题描述】:

我正在使用 Unity WWW 对象加载 ogg theora 格式的电影文件,但我遇到了一些我无法弄清楚如何解决的奇怪问题。

为了澄清,我的资产文件夹中有一个名为“Movies/”的文件夹,其中包含我本地存储的所有电影文件。

下面是我的应用程序的 C# 代码 sn-p,它位于使用 StartCoroutine 运行的类方法中:

WWW www = new WWW("file://" + Application.dataPath + "/Movies/" + movieName + ".ogg");
yield return www;
m_MovieTexture = www.movie;
if (m_MovieTexture == null)
{
    DbgLog("Movie is NULL!");
    return;
}
if (m_MovieTexture.isPlaying)
{
    // Not sure how this can happen, but just in case....
    m_MovieTexture.Stop();
}
else
{
    if (www.error != null)
    {
        DbgLog("Error: " + www.error);
        return;
    }
    DbgLog("Waiting to load " + www.url);
    while (!m_MovieTexture.isReadyToPlay && !www.isDone)
    {
        yield return www;
    }
    DbgLog("Finished Loading");
    if (www.isDone && !m_MovieTexture.isReadyToPlay)
    {
        DbgLog("Weirdness!  File finished loading before movie was ready to play!");
    }
}
m_MovieTexture.Play();
DbgLog("Playing video (" + m_MovieTexture.duration + " seconds)");
while (m_MovieTexture.isPlaying)
    yield return null;
// be kind... rewind.
m_MovieTexture.Stop();
DbgLog("Finished Playing");
m_MovieTexture = null;

执行上述代码时,其中的日志语句显示 www.isDone 属性返回 true,即使 m_MovieTexture.isReadyToPlay 返回 false。最初,while 循环只在 m_MovieTexture.isReadyToPlay 上等待,但该循环无休止地等待,因此添加了额外的条件,这暴露了真正发生的事情。电影的持续时间也始终为 -1,最后,尽管显式调用 m_MovieTexture.Play() 然后在 m_MovieTexture.isPlaying 为true,m_MovieTexture.isPlaying 立即返回 false,并且电影从不播放(OnGUI 方法中有代码显示 m_MovieTexture 的内容,如果有,则电影正在播放,但问题似乎出在上面的代码中,而不是OnGUI 方法)。

任何关于我在这里可能做错的想法将不胜感激。

提前致谢

【问题讨论】:

    标签: c# unity3d movie coroutine


    【解决方案1】:

    WWW 已经是一个非阻塞协程。因此,您可以只使用一个函数来指示您的 WWW 实例加载视频并将电影分配给您的 m_MovieTexture。然后在你的 OnGUI 或更新函数中检查

    if(m_MovieTexture!=null && !m.isPlaying && m.isReadyToPlay) m_MovieTexture.play();
    

    这是MovieTexture.onIsReadyToplay doc 的链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      相关资源
      最近更新 更多