using System.Collections; using UnityEditor; using UnityEngine; namespace JBooth.MicroVerseCore.Browser.CollectionWizard { public class GUIUtils { /// /// Show property for asset path and a selection button for the asset path selection /// /// /// public static void AssetPathSelector(SerializedProperty property, string title) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PropertyField(property); if (GUILayout.Button("Select", GUILayout.Width(60))) { string selectedPath = SelectAssetPath(title); if (selectedPath != null) { property.stringValue = selectedPath; } } } EditorGUILayout.EndHorizontal(); } public static string AssetPathSelector( string path, string title) { EditorGUILayout.BeginHorizontal(); { EditorGUILayout.PrefixLabel(title); path = EditorGUILayout.TextField(path); if (GUILayout.Button("Select", GUILayout.Width(60))) { string selectedPath = SelectAssetPath(title); if (selectedPath != null) { path = selectedPath; } } } EditorGUILayout.EndHorizontal(); return path; } /// /// Open folder dialog and have user select an asset path /// /// /// public static string SelectAssetPath(string title) { string selectedPath = EditorUtility.OpenFolderPanel(title, "Assets", ""); if (!string.IsNullOrEmpty(selectedPath)) { string assetPath = Application.dataPath.Substring("Assets/".Length); bool isAssetPath = selectedPath.StartsWith(Application.dataPath); if (isAssetPath) { string newPath = selectedPath.Substring(assetPath.Length + 1); // +1 for the initial path separator return newPath; } else { EditorUtility.DisplayDialog("Error", "Path must be in the Assets folder", "Ok"); } } return null; } public static void DrawHeader( string title, ref bool helpBoxVisible) { /// /// Info & Help /// GUILayout.BeginVertical(GUIStyles.HelpBoxStyle); { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Asset Store", EditorStyles.miniButton, GUILayout.Width(120))) { Application.OpenURL("https://u3d.as/2Uxf"); } if (GUILayout.Button("Documentation", EditorStyles.miniButton)) { Application.OpenURL("https://bit.ly/genesis-for-microverse-doc"); } if (GUILayout.Button("Forum", EditorStyles.miniButton, GUILayout.Width(120))) { Application.OpenURL("https://forum.unity.com/threads/released-genesis-for-microverse.1354952"); } if (GUILayout.Button(new GUIContent("?", "Help box visibility"), EditorStyles.miniButton, GUILayout.Width(20))) { // toggle help box visibility helpBoxVisible = !helpBoxVisible; } EditorGUILayout.EndHorizontal(); } GUILayout.EndVertical(); GUILayout.BeginVertical(GUIStyles.AppTitleBoxStyle); { EditorGUILayout.LabelField( title, GUIStyles.AppTitleBoxStyle, GUILayout.Height(30)); } GUILayout.EndVertical(); } } }