Files
coplaydev--unity-mcp/MCPForUnity/Editor/Helpers/ScreenshotPreferences.cs
T
2026-07-13 12:49:17 +08:00

50 lines
1.8 KiB
C#

using MCPForUnity.Runtime.Helpers;
using UnityEditor;
namespace MCPForUnity.Editor.Helpers
{
/// <summary>
/// Per-user EditorPrefs override for the default screenshot output folder.
/// Resolution priority used by callers:
/// 1. Per-call <c>output_folder</c> tool parameter
/// 2. <see cref="DefaultFolder"/> (this preference)
/// 3. <see cref="ScreenshotUtility.DefaultFolder"/> built-in fallback
/// </summary>
public static class ScreenshotPreferences
{
public const string EditorPrefsKey = "MCPForUnity_ScreenshotsFolder";
/// <summary>
/// User-configured default folder, or empty string when unset.
/// Stored as a project-relative path (e.g. "Assets/Screenshots", "Captures").
/// </summary>
public static string DefaultFolder
{
get => EditorPrefs.GetString(EditorPrefsKey, string.Empty);
set
{
if (string.IsNullOrWhiteSpace(value))
{
EditorPrefs.DeleteKey(EditorPrefsKey);
}
else
{
EditorPrefs.SetString(EditorPrefsKey, value.Trim());
}
}
}
/// <summary>
/// Resolves the effective folder: caller override → user pref → built-in default.
/// Returns a project-relative path string suitable for <see cref="ScreenshotUtility.ResolveFolderAbsolute"/>.
/// </summary>
public static string Resolve(string callerOverride)
{
if (!string.IsNullOrWhiteSpace(callerOverride)) return callerOverride.Trim();
string pref = DefaultFolder;
if (!string.IsNullOrWhiteSpace(pref)) return pref;
return ScreenshotUtility.DefaultFolder;
}
}
}