2015-09-05 154 views
0

我正在尝试使用SpriteRenderer对象播放MovieTexture对象。 我的代码在OSX上正常工作。来自MovieTexture的Unity UpdateExternalTexture Windows崩溃

崩溃我的Windows 7 出口游戏,而在Windows中统一编辑播放模式7.

我相信currentTexture.UpdateExternalTexture()呼叫使其崩溃,但我想不出为什么。

任何人都可以解释为什么这不工作或如何调试它?就是我用

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(); 
} 
} 

观念的统一日志文件不包含任何似乎是有益,只是消息Crashed.

这里?

更新

Debug.Log()编天然纹理指针,打印指针地址(例如:556409680),因此它似乎并不为NULL。

回答

0

团结docsGetNativeTexturePtr()我发现这行:

在不支持原生代码的插件平台,此函数总是返回NULL。

这可能是问题,通过null作为参数会导致崩溃。至于如何解决它,我会说测试的价值是null并运行保证工作的替代代码。

+0

这是一个很好的猜测,我只是试图检查null,但它似乎有一个有效的值。我已经用这个更新了这个问题。 –

+0

我对低级编程不太好,但我相信指针可以指向空值。尝试使用'.ToInt32()'来获取指针的值。 –

+0

再次好点。试过了,它打印出和以前一样的值。所以我认为toInt32()值是在这种类型的对象情况下默认打印的值。 –