using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UIElements; #if UNITY_EDITOR using UnityEditor; using UnityEditor.UIElements; #endif namespace BITKit { [System.Serializable] public class ReferenceSO : ScriptableObject { [TextArea] public string value; } [System.Serializable] public record ReferenceScriptableObject : References { public ReferenceSO so; public override string Get() => so.value.IsNullOrEmpty() ? so.name : so.value; } #if UNITY_EDITOR [CustomPropertyDrawer(typeof(ReferenceScriptableObject))] public class ReferenceScriptableObjectDrawer : BITProperty { public override VisualElement CreatePropertyGUI(SerializedProperty property) { VisualElement root = new(); root.Add(base.CreatePropertyGUI(property)); Button button = new(); root.Add(button); return root; } public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { base.OnGUI(position, property, label); EditorGUI.PropertyField(position, property); EditorGUI.LinkButton(position, "New Button"); } } #endif }