2015-08-14 2 views
0

Я пытаюсь превратить строку base64 в Sprite в Unity 3D, но мой спрайт в сцене остается пустым.Загрузить спрайт из строки base64, которая поступает из websocket

public var cardPicture : Image; 

function ReceiveData(jsonReply : JSONObject) { 
    var pictureBytes : byte[] = System.Convert.FromBase64String(jsonReply.GetString("picture")); 
    var cardPictureTexture = new Texture2D(720, 720); 
    Debug.Log(cardPictureTexture.LoadImage(pictureBytes)); 
    var sprite : Sprite = new Sprite(); 
    sprite = Sprite.Create (cardPictureTexture, new Rect (0,0,720,720), new Vector2 (0.5f, 0.5f)); 
    cardPicture.overrideSprite = sprite; 
} 

Это печатает верно, но я не уверен, если он загружается изображение соответствующим образом из байтов или если что-то еще будет неправильно. Я не уверен, что проверить, чтобы определить, что тоже не так. Присвоение некоторого изображения карточке в изображении отображается правильно.

Я зарегистрировал jsonReply.picture и использовал онлайн-конвертер base64 для преобразования изображений, и он отобразил изображение правильно.

ответ

0

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

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

public string Url = @"http://dummyimage.com/300/09f/fff.png"; 

    void Start() { 
     // Starting a coroutine to avoid blocking 
     StartCoroutine ("LoadImage"); 
    } 

    IEnumerator LoadImage() 
    { 
     WWW www = new WWW(Url); 
     yield return www; 

     Debug.Log ("Loaded"); 
     Texture texture = www.texture; 
     this.gameObject.GetComponent<Renderer>().material.SetTexture(0,texture); 
    } 
+0

Картинка исходит из подключения к Интернету: / – Waltari