我正在尝试使用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。
答案 0 :(得分:0)
在GetNativeTexturePtr()
的{{1}}上,我找到了这一行:
在不支持本机代码插件的平台上,此函数始终返回NULL。
这可能是问题,将null
作为参数传递会导致崩溃。至于如何修复它,我会说测试它的值为null
并运行保证可以工作的备用代码。