MovieTexture窗口中的Unity UpdateExternalTexture崩溃

时间:2015-09-05 20:12:30

标签: c# windows graphics unity3d texture2d

我正在尝试使用MovieTexture对象播放SpriteRenderer对象。 我的代码在OSX上工作正常。

崩溃我的Windows 7 导出游戏,并在Windows 7中的 Unity编辑器中播放模式。

我确信currentTexture.UpdateExternalTexture()电话会让它崩溃,但我无法弄清楚原因。

有人可以解释为什么这不起作用或如何调试它? Unity日志文件不包含任何看似有用的内容,只包含消息Crashed.

以下是我正在使用的内容

using UnityEngine;
using System.Collections;

public class FMAC_VideoPlayer : MonoBehaviour {

public string animationName = "escalator";

MovieTexture movieTexture;
Texture2D currentTexture;
SpriteRenderer spriteRenderer;
Sprite sprite;

void Start () 
{
    movieTexture = Resources.Load (animationName) as MovieTexture;

    currentTexture = new Texture2D(movieTexture.width, movieTexture.height);
    currentTexture.UpdateExternalTexture(movieTexture.GetNativeTexturePtr());

    spriteRenderer = GetComponent<SpriteRenderer> ();
    sprite = Sprite.Create (currentTexture, new Rect(Vector2.zero, new Vector2(movieTexture.width, movieTexture.height)), new Vector2(0.5f, 0.5f));
    spriteRenderer.sprite = sprite;

    movieTexture.Play();
}
}

想法?

更新

Debug.Log()编辑了打印指针地址的原生纹理指针(例如556409680),所以它似乎不是NULL。

1 个答案:

答案 0 :(得分:0)

GetNativeTexturePtr()的{​​{1}}上,我找到了这一行:

  

在不支持本机代码插件的平台上,此函数始终返回NULL。

这可能是问题,将null作为参数传递会导致崩溃。至于如何修复它,我会说测试它的值为null并运行保证可以工作的备用代码。