2015-09-05 73 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()值是在這種類型的對象情況下默認打印的值。 –