Auto "Show Save File" Menu Item Script

I can NEVER freakin find these persistent data path files on my Mac, so after some googling, I found a public domain script that opens files or folders from the unity editor, created a menu item out of it, and tailored it to be an “RPG Save System” editor menu at the top… hope you like it…

this will work on both Mac and Windows…

Name this script ShowSaveFile

using UnityEditor;
using UnityEngine;
using System.IO;

public class ShowSaveFile : MonoBehaviour
{
	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;
        }
    }

    [MenuItem("RPG Save System/Show Save file(s)")]
	public static void Test()
	{
		Open(Application.persistentDataPath);
	}

	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);
		}
	}
}
2 Likes

OMG thanks! This is super helpful!

2 Likes

This is very handy. I would like to make one important note: This script should be in a folder named Editor. (It can be under Scripts/Saving/Editor, for example.) If it not in an editor folder, you will not be able to Build the game. This goes for any code that uses UnityEditor.

1 Like

I had no idea… will add that to the original post… thanks!!

THANK YOU! x10000000!!!

1 Like