コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】SharpZipLib を導入できる Unity 公式のパッケージ

概要

Package Manager の「Add package by name...」で
com.unity.sharp-zip-lib と入力して「Add」を押すとインストールできる

使用例

using System.IO;
using System.Text;
using Unity.SharpZipLib.GZip;

/// <summary>
/// 文字列を gzip で圧縮・展開するクラス
/// </summary>
public static class GZipCompressor
{
    //================================================================================
    // 変数(static readonly)
    //================================================================================
    private static readonly Encoding ENCODING = Encoding.UTF8;

    //================================================================================
    // 関数(static)
    //================================================================================
    /// <summary>
    /// 圧縮します
    /// </summary>
    public static byte[] Compress( string rawString )
    {
        var       buffer           = ENCODING.GetBytes( rawString );
        using var baseOutputStream = new MemoryStream();

        using ( var gZipOutputStream = new GZipOutputStream( baseOutputStream ) )
        {
            gZipOutputStream.Write( buffer );
        }

        return baseOutputStream.ToArray();
    }

    /// <summary>
    /// 解凍します
    /// </summary>
    public static string Decompress( byte[] buffer )
    {
        using var baseInputStream = new MemoryStream( buffer );
        using var gZipInputStream = new GZipInputStream( baseInputStream );
        using var streamReader    = new StreamReader( gZipInputStream, ENCODING );
        return streamReader.ReadToEnd();
    }
}
using UnityEngine;

internal sealed class Example : MonoBehaviour
{
    private void Awake()
    {
        var str        = "ピカチュウ";
        var compress   = GZipCompressor.Compress( str );
        var decompress = GZipCompressor.Decompress( compress );

        Debug.Log( decompress ); // ピカチュウ
    }
}