コガネブログ

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

【Unity】Windows / Mac / iOS / Android でストレージの空き容量・使用中容量・合計サイズを取得できる「simple-disk-utils」紹介

はじめに

「simple-disk-utils」を Unity プロジェクトに導入することで
Windows / Mac / iOS / Android でストレージの
空き容量・使用中容量・合計サイズを取得できるようになります

使い方

Windows

using SimpleDiskUtils;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Start()
    {
        // すべてのプラットフォームで使用可能
        Debug.LogFormat( "空き容量:{0}", ToText( DiskUtils.CheckAvailableSpace() ) );
        Debug.LogFormat( "使用中容量:{0}", ToText( DiskUtils.CheckBusySpace() ) );
        Debug.LogFormat( "合計サイズ:{0}", ToText( DiskUtils.CheckTotalSpace() ) );

        // Windows の場合、ドライブの指定やドライブ名の取得が可能
        var drive = "D:/";

        Debug.LogFormat( "空き容量:{0}", ToText( DiskUtils.CheckAvailableSpace( drive ) ) );
        Debug.LogFormat( "使用中容量:{0}", ToText( DiskUtils.CheckBusySpace( drive ) ) );
        Debug.LogFormat( "合計サイズ:{0}", ToText( DiskUtils.CheckTotalSpace( drive ) ) );

        foreach ( var n in DiskUtils.GetDriveNames() )
        {
            Debug.LogFormat( "ドライブ名:{0}", n );
        }
    }

    // DiskUtils で取得した容量を読みやすいテキストに変換する関数
    private static string ToText( int size, int scale = 0, int standard = 1024 )
    {
        var unit = new[] { "MB", "GB" };
        if ( scale == unit.Length - 1 || size <= standard )
        {
            return string.Format( "{0} {1}", size, unit[ scale ] );
        }
        return ToText( size / standard, scale + 1, standard );
    }
}

Android

using SimpleDiskUtils;
using UnityEngine;

public class Example : MonoBehaviour
{
    private void Start()
    {
        // すべてのプラットフォームで使用可能
        Debug.LogFormat( "空き容量:{0}", ToText( DiskUtils.CheckAvailableSpace() ) );
        Debug.LogFormat( "使用中容量:{0}", ToText( DiskUtils.CheckBusySpace() ) );
        Debug.LogFormat( "合計サイズ:{0}", ToText( DiskUtils.CheckTotalSpace() ) );

#if !UNITY_EDITOR

        // Android の場合、外部ストレージを確認するかどうかの指定が可能
        var isExternalStorage  = false;

        Debug.LogFormat( "空き容量:{0}", ToText( DiskUtils.CheckAvailableSpace( isExternalStorage  ) ) );
        Debug.LogFormat( "使用中容量:{0}", ToText( DiskUtils.CheckBusySpace( isExternalStorage  ) ) );
        Debug.LogFormat( "合計サイズ:{0}", ToText( DiskUtils.CheckTotalSpace( isExternalStorage  ) ) );

#endif
    }

    // DiskUtils で取得した容量を読みやすいテキストに変換する関数
    private static string ToText( int size, int scale = 0, int standard = 1024 )
    {
        var unit = new[] { "MB", "GB" };
        if ( scale == unit.Length - 1 || size <= standard )
        {
            return string.Format( "{0} {1}", size, unit[ scale ] );
        }
        return ToText( size / standard, scale + 1, standard );
    }
}

参考サイト様