ict.lixian.three/Assets/Plugins/RenderHeads/AVProMovieCapture/Editor/Scripts/Settings.cs

100 lines
3.2 KiB
C#

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
//-----------------------------------------------------------------------------
// Copyright 2012-2022 RenderHeads Ltd. All rights reserved.
//-----------------------------------------------------------------------------
namespace RenderHeads.Media.AVProMovieCapture.Editor
{
internal class Settings : ScriptableObject
{
const string SettingsPath = "Assets/Plugins/RenderHeads/AVProMovieCapture/Editor/Settings.asset";
#pragma warning disable 0414 // "field is assigned but its value is never used"
[SerializeField] string _photoLibraryUsageDescription = string.Empty;
[SerializeField] string _photoLibraryAddUsageDescription = string.Empty;
#pragma warning restore 0414
internal static Settings GetOrCreateSettings()
{
Settings settings = AssetDatabase.LoadAssetAtPath<Settings>(SettingsPath);
if (settings == null)
{
settings = ScriptableObject.CreateInstance<Settings>();
AssetDatabase.CreateAsset(settings, SettingsPath);
AssetDatabase.SaveAssets();
}
return settings;
}
internal static SerializedObject GetSerializedSettings()
{
return new SerializedObject(GetOrCreateSettings());
}
}
internal static class SettingsIMGUIRegister
{
#if UNITY_2018_3_OR_NEWER
private class MySettingsProvider : SettingsProvider
{
public MySettingsProvider(string path, SettingsScope scope)
: base(path, scope)
{
this.keywords = new HashSet<string>(new[] { "Photo" });
}
public override void OnGUI(string searchContext)
{
SettingsGUI();
}
}
[SettingsProvider]
static SettingsProvider CreateSettingsProvider()
{
return new MySettingsProvider("Project/AVPro Movie Capture", SettingsScope.Project);
}
#elif UNITY_5_6_OR_NEWER
[PreferenceItem("AVPro Movie Capture")]
#endif
private static void SettingsGUI()
{
SerializedObject settings = Settings.GetSerializedSettings();
SerializedProperty propPhotoLibraryUsageDescription = settings.FindProperty("_photoLibraryUsageDescription");
SerializedProperty propPhotoLibraryAddUsageDescription = settings.FindProperty("_photoLibraryAddUsageDescription");
EditorGUILayout.Space();
EditorGUILayout.LabelField("macOS / iOS", EditorStyles.boldLabel);
// Photo library usage description
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(
new GUIContent(
"Photo Library Usage Description",
"Adds the NSPhotoLibraryUsageDescription key with the text provided to the generated apps Info.plist file."
),
GUILayout.MaxWidth(250.0f)
);
propPhotoLibraryUsageDescription.stringValue = EditorGUILayout.TextField(propPhotoLibraryUsageDescription.stringValue);
EditorGUILayout.EndHorizontal();
// Photo library add usage description
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(
new GUIContent(
"Photo Library Add Usage Description",
"Adds the NSPhotoLibraryAddUsageDescription key with the text provided to the generated apps Info.plist file."
),
GUILayout.MaxWidth(250.0f)
);
propPhotoLibraryAddUsageDescription.stringValue = EditorGUILayout.TextField(propPhotoLibraryAddUsageDescription.stringValue);
EditorGUILayout.EndHorizontal();
settings.ApplyModifiedPropertiesWithoutUndo();
}
}
}