はじめに
「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 ); } }