diff --git a/Assets/MenuScripts/MenuController.cs b/Assets/MenuScripts/MenuController.cs index 024eea3..2701843 100644 --- a/Assets/MenuScripts/MenuController.cs +++ b/Assets/MenuScripts/MenuController.cs @@ -150,7 +150,7 @@ public void DefaultOptions() public void OpenConfigFolder() { - EditorUtility.RevealInFinder($"{Application.persistentDataPath}/Config/"); + OpenInFileBrowser.Open($"{Application.persistentDataPath}/Config/"); } public void FillOptionFields() diff --git a/Assets/Scripts/OpenInFileBrowser.cs b/Assets/Scripts/OpenInFileBrowser.cs new file mode 100644 index 0000000..47efb81 --- /dev/null +++ b/Assets/Scripts/OpenInFileBrowser.cs @@ -0,0 +1,105 @@ +// From http://wiki.unity3d.com/index.php/OpenInFileBrowser + +public static class OpenInFileBrowser +{ + public static bool IsInMacOS + { + get + { + return UnityEngine.SystemInfo.operatingSystem.IndexOf("Mac OS") != -1; + } + } + + public static bool IsInWinOS + { + get + { + return UnityEngine.SystemInfo.operatingSystem.IndexOf("Windows") != -1; + } + } + + [UnityEditor.MenuItem("Window/Test OpenInFileBrowser")] + public static void Test() + { + Open(UnityEngine.Application.dataPath); + } + + public static void OpenInMac(string path) + { + bool openInsidesOfFolder = false; + + // try mac + string macPath = path.Replace("\\", "/"); // mac finder doesn't like backward slashes + + if (System.IO.Directory.Exists(macPath)) // if path requested is a folder, automatically open insides of that folder + { + openInsidesOfFolder = true; + } + + if (!macPath.StartsWith("\"")) + { + macPath = "\"" + macPath; + } + + if (!macPath.EndsWith("\"")) + { + macPath = macPath + "\""; + } + + string arguments = (openInsidesOfFolder ? "" : "-R ") + macPath; + + try + { + System.Diagnostics.Process.Start("open", arguments); + } + catch (System.ComponentModel.Win32Exception e) + { + // tried to open mac finder in windows + // just silently skip error + // we currently have no platform define for the current OS we are in, so we resort to this + e.HelpLink = ""; // do anything with this variable to silence warning about not using it + } + } + + public static void OpenInWin(string path) + { + bool openInsidesOfFolder = false; + + // try windows + string winPath = path.Replace("/", "\\"); // windows explorer doesn't like forward slashes + + if (System.IO.Directory.Exists(winPath)) // if path requested is a folder, automatically open insides of that folder + { + openInsidesOfFolder = true; + } + + try + { + System.Diagnostics.Process.Start("explorer.exe", (openInsidesOfFolder ? "/root," : "/select,") + winPath); + } + catch (System.ComponentModel.Win32Exception e) + { + // tried to open win explorer in mac + // just silently skip error + // we currently have no platform define for the current OS we are in, so we resort to this + e.HelpLink = ""; // do anything with this variable to silence warning about not using it + } + } + + public static void Open(string path) + { + if (IsInWinOS) + { + OpenInWin(path); + } + else if (IsInMacOS) + { + OpenInMac(path); + } + else // couldn't determine OS + { + OpenInWin(path); + OpenInMac(path); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/OpenInFileBrowser.cs.meta b/Assets/Scripts/OpenInFileBrowser.cs.meta new file mode 100644 index 0000000..2218045 --- /dev/null +++ b/Assets/Scripts/OpenInFileBrowser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1876f05c07bda6409ad79397af07834 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: