LoginSignup
8
5

More than 1 year has passed since last update.

【Unity】ランタイムで指定したフォルダをファイラーで開く(Mac/Windows)

Last updated at Posted at 2023-02-23

TL;DR

.cs
// MyPicturesフォルダを開く場合
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
System.Diagnostics.Process.Start(path);

経緯

Windows/Mac向けに開発している『Vフレット』というアプリには、スクリーンショットを撮影する機能があります。
20230224-020432.png

スクリーンショットは直接PCの指定フォルダ上に保存される仕組みなのですが、撮影後に保存先のフォルダを開くことができると便利かなと思い方法を調べてみました。

まずはこちらで紹介されている方法を試したところ、Windows版では問題なかったのですが、Mac版でうまく動作しない問題に遭遇しました。

そこで TwitterやUnityゲーム開発者ギルドで質問をしたところ、Processクラスを使えばいいのではないかとアドバイスをいただきました(皆さんありがとうございました…!)

Processクラスは通常対象のプロセス名を指定することが多いのですが

.cs
// プロセス名を指定する方法
System.Diagnostics.Process.Start("EXPLORER.EXE", @"C:\My Documents\My Pictures");

こちらの記事によると、

「ファイルを関連付けられたソフトで開く」と同じように、フォルダも関連付けで開くことができます。フォルダは通常エクスプローラに関連付けられていますので、関連付けが変更されていない限り、エクスプローラでフォルダが開きます。

とありました。今回はWindowsとMacの両方に対応するアプリなので、プロセス名の指定を省略できる方が同じ記述で要件を満たしテストもシンプルになります。

.cs
// MyPicturesフォルダを開く場合
var path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
System.Diagnostics.Process.Start(path);

そこで上記のようなコードで試してみたところ、Windows/Macそれぞれで意図通りの動作となりました!!

scren2.gif

最後に

Twitterやってるので良かったらフォローお願いします!→ @nkjzm

また、VRMアバターで"それっぽく"弾き語りができる『Vフレット』というアプリを開発しています。こちらも興味があれば良かったらぜひ見てみてくれると嬉しいです!

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5