MRが楽しい

MRやVRについて学習したことを書き残す

UnityでPCのドキュメントフォルダやピクチャフォルダにアクセスする

本日はUnityの小ネタ枠です。
UnityでPCのドキュメントフォルダやピクチャフォルダにアクセスする方法です。

System.Environment.SpecialFolder

System.Environment.SpecialFolder列挙型を使って特別なフォルダへのディレクトリパスを取得可能です。
learn.microsoft.com

一例として以下のようなユーザディレクトリのパスを取得できます。

識別子 対象パス
MyDocuments マイドキュメントフォルダ
MyPictures マイピクチャフォルダ
MyVideos マイビデオフォルダ
MyMusic マイミュージックフォルダ
// マイドキュメントフォルダのパスの取得例
var folderType = System.Environment.SpecialFolder.MyDocuments;
var documentFolderPath = System.Environment.GetFolderPath(folderType);

サンプルスクリプト

以下のコンテンツメニューからパス取得の動作確認を行うサンプルスクリプトを作成しました。
・SpecialFolderAccessor.cs

using UnityEngine;

public class SpecialFolderAccessor : MonoBehaviour
{
    // ドキュメントフォルダのパスを取得する
    [ContextMenu("AccessDocumentFolder")]
    public void AccessDocumentFolder()
    {
        // ドキュメントフォルダのパスを取得
        Debug.Log(GetSpacialFolderPath(System.Environment.SpecialFolder.MyDocuments));
    }
    
    // ピクチャーフォルダのパスを取得する
    [ContextMenu("AccessPictureFolder")]
    public void AccessPictureFolder()
    {
        // ピクチャーフォルダのパスを取得
        Debug.Log(GetSpacialFolderPath(System.Environment.SpecialFolder.MyPictures));
    }
    
    // ビデオフォルダのパスを取得する
    [ContextMenu("AccessVideoFolder")]
    public void AccessVideoFolder()
    {
        // ビデオフォルダのパスを取得
        Debug.Log(GetSpacialFolderPath(System.Environment.SpecialFolder.MyVideos));
    }
    
    // ミュージックフォルダのパスを取得する
    [ContextMenu("AccessMusicFolder")]
    public void AccessMusicFolder()
    {
        // ミュージックフォルダのパスを取得
        Debug.Log(GetSpacialFolderPath(System.Environment.SpecialFolder.MyMusic));
    }
    
    private string GetSpacialFolderPath(System.Environment.SpecialFolder specialFolder)
    {
        // 特定のフォルダのパスを取得
        string specialFolderPath = System.Environment.GetFolderPath(specialFolder);
        return specialFolderPath;
    }
}

UnityEditor上でスクリプトを実行すると、以下の通り実行PCの各種マイフォルダへのパスが取得できました。