2015-09-05 5 views
0

Я пытаюсь воспроизвести объект MovieTexture с объектом SpriteRenderer. Мой код отлично работает на OSX.Unity UpdateExternalTexture from MovieTexture windows crash

Она аварии мои окна 7 экспортироваться игра и режим играть в редакторе Unity в окнах 7.

Я уверен, что 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(); 
} 
} 

идеи?

Update

У меня есть Debug.Log() эд родной указатель текстуры, которая печатает адрес указателя (напр., 556409680), так что это, кажется, не быть NULL.

ответ

0

О единстве docs для GetNativeTexturePtr() Я нашел эту строку:

на платформах, которые не поддерживают родные плагины кода, эта функция всегда возвращает NULL.

Возможно, это проблема, минуя null как параметр, который приведет к сбою. Что касается того, как исправить это, я бы сказал, тест для значения, которое должно быть null и запустить альтернативный код, который гарантированно работает.

+0

Это хорошая догадка, я просто попытался проверить значение null, но, похоже, имеет действительное значение. Я обновил этот вопрос. –

+0

Я не слишком хорош с программированием на низком уровне, но я считаю, что указатели могут указывать на нулевые значения. Попробуйте '.ToInt32()', чтобы получить значение указателя. –

+0

Хорошая точка снова. Пробовал, и он печатает то же значение, что и раньше. Поэтому я думаю, что значение toInt32() - это значение, которое по умолчанию печатается в случае этого типа объекта. –

 Смежные вопросы

  • Нет связанных вопросов^_^