0

Unity 3D で base64 文字列をスプライトに変換しようとしていますが、シーン内のスプライトが空白のままです。

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;
}

これは正しいと出力されますが、バイトから画像を適切にロードしているかどうか、または何か他の問題が発生しているかどうかはわかりません。何が問題なのかを判断するために何をチェックすればよいかわかりません。シーンの cardPicture に画像を割り当てると、正しく表示されます。

jsonReply.picture をログに記録し、オンラインの base64 から画像へのコンバーターを使用したところ、画像が正しく表示されました。

4

3 に答える 3

0

リモート URL から画像を取得しようとしていて、バイトをテクスチャに解析しようとしていると思います。In unityWWWはこれを容易にし、ユーザーが変換に関与する必要はありません。

あなたの応答には、テクスチャへの変換で問題を引き起こす可能性のあるヘッダーの詳細が含まれている可能性があると思います。以下のようなコードを使用できます。

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 );
    }
于 2015-08-15T13:35:11.207 に答える