前回より Unityを用いて、データを Base64 変換 する方法を紹介しています。


Base64とはデータを基本的な64種類の印字可能な英数字のみで表すデータ方式。
Unityでの開発で常に使うものでもないですが。サーバーとの連携時にクライアント側での変換が必要と言う方は多いのではないでしょうか。

前回は分かりやすくテキストデータを Base64変換してみました。今回は Textureを Base64変換します。
Unity Basic_093

【TextureデータをBase64化】

ここでは「TextureデータのBase64化」と言うことで、まず、Unityエディタ上で指定した Textureファイルを Base64化して、そのテキストを出力します。
当然、そのテキストが正しいか分からないので、その Base64データを再度 Textureデータに戻し、それをUIイメージに表示すると言うことをやってみます。

そして、前回のテキストデータの変換でもやりましたが、Base64変換では Byteデータを使用するので、Textureデータを Byteデータに変換する必要があります。
それには以下の方法を使います。

Texture => byte[ ]

  byte[ ] bytes = texture.EncodeToJPG ( );

byte[ ] => Texture

  texture.LoadImage(bytes);


上記を利用して、Textureデータを Base64変換して、また逆に Textureデータに戻すプログラムは以下のようになります。

Unity Basic_087


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEngine.UI;

public class Base64_Conversion_2 : MonoBehaviour
{
    public Texture2D texture_Before;
    public Image image_After;

    void Start()
    {
        //Texture->byte変換
        byte[] byte_Before = texture_Before.EncodeToJPG();

        //BASE64への変換
        string encodedText
            = System.Convert.ToBase64String(byte_Before);
        Debug.Log(encodedText);

        //BASE64からの変換
        byte[] byte_After
            = System.Convert.FromBase64String(encodedText);

        //byte->Texture変換
        Texture2D texture_After
        = new Texture2D(texture_Before.width, texture_Before.height, 
                                        TextureFormat.RGBA32, false);
        texture_After.LoadImage(byte_After);

        //UIに変換後のTextureを表示
        image_After.material.mainTexture = texture_After;
    }
}



【実行結果】

そして、その実行結果は以下のようになります。
まず使用した Textureデータは以下です。
Unity Basic_088

実行前のゲーム画面は以下の通り。まだUI上の Imageには何も表示されていません。
Unity Basic_089

そして、ゲームを実行します。
まず、最初の Base64変換後のテキストを出力すると以下のようになっています。
正しいか正確には分かりませんが、それらしいテキストが出力されます。
Unity Basic_090

そして、その Base64変換された結果を Textureデータへ逆変換した結果がUI上の Imageに表示されました。
最初の Textureに戻りましたので、途中の Base64変換も正しかったことが分かります。
Unity Basic_091


いかがでしたでしょうか。Base64変換の使い方が理解できたかと思います。使用する必要が出たらぜひご参考ください。

Unityのゲーム作成で常に使うわけではないので自分でも忘れそうなので、今回は備忘も兼ねて。



Sponsored Link