Я пытаюсь воспроизвести объект 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.
Это хорошая догадка, я просто попытался проверить значение null, но, похоже, имеет действительное значение. Я обновил этот вопрос. –
Я не слишком хорош с программированием на низком уровне, но я считаю, что указатели могут указывать на нулевые значения. Попробуйте '.ToInt32()', чтобы получить значение указателя. –
Хорошая точка снова. Пробовал, и он печатает то же значение, что и раньше. Поэтому я думаю, что значение toInt32() - это значение, которое по умолчанию печатается в случае этого типа объекта. –