using System; using System.Collections.Generic; using UnityEditor; using UnityEngine; public class ReadOnlyAttribute : PropertyAttribute { } [CustomPropertyDrawer(typeof(ReadOnlyAttribute))] public class ReadOnlyDrawer : PropertyDrawer { public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return EditorGUI.GetPropertyHeight(property, label, true); } public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { GUI.enabled = false; EditorGUI.PropertyField(position, property, label, true); GUI.enabled = true; } } /// /// It holds a list of scenes that's shown in the scene quick access tool /// [CreateAssetMenu(fileName = "SceneAccessHolder", menuName = "Scene Data/SceneAccessHolder")] public class SceneAccessHolderSO : ScriptableObject { [Serializable] public struct SceneInfo : IEquatable { [ReadOnly] public string name; [ReadOnly] public string path; public bool visible; public bool Equals(SceneInfo other) { // Would still want to check for null etc. first. return this.path == other.path; } } [Header("List of Scenes")] public List sceneList; }