From d2b4abb8f7eca59fbcc4ed6f9cb5c575acdb0f76 Mon Sep 17 00:00:00 2001 From: David Kutschke Date: Tue, 30 Nov 2021 18:13:12 +0100 Subject: [PATCH 1/2] Added support for readonly fields --- .../RuntimeInspectorReadonlyAttribute.cs | 26 +++++++ .../RuntimeInspectorReadonlyAttribute.cs.meta | 11 +++ .../RuntimeInspector/Fields/ArrayField.cs | 10 +++ .../RuntimeInspector/Fields/BoolField.cs | 7 ++ .../RuntimeInspector/Fields/BoundsField.cs | 7 ++ .../RuntimeInspector/Fields/ColorField.cs | 3 + .../RuntimeInspector/Fields/EnumField.cs | 8 ++ .../Fields/ExposedMethodField.cs | 6 ++ .../RuntimeInspector/Fields/InspectorField.cs | 74 +++++++++++++++++++ .../RuntimeInspector/Fields/NumberField.cs | 7 ++ .../Fields/NumberRangeField.cs | 6 ++ .../RuntimeInspector/Fields/ObjectField.cs | 8 ++ .../Fields/ObjectReferenceField.cs | 11 +++ .../RuntimeInspector/Fields/RectField.cs | 21 ++++++ .../RuntimeInspector/Fields/StringField.cs | 7 ++ .../RuntimeInspector/Fields/Vector2Field.cs | 15 ++++ .../RuntimeInspector/Fields/Vector3Field.cs | 18 +++++ .../RuntimeInspector/Fields/Vector4Field.cs | 21 ++++++ .../Helpers/RuntimeInspectorUtils.cs | 7 ++ .../Scripts/RuntimeInspector/Skin/UISkin.cs | 15 ++++ 20 files changed, 288 insertions(+) create mode 100644 Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs create mode 100644 Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs.meta diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs new file mode 100644 index 0000000..cfa5926 --- /dev/null +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs @@ -0,0 +1,26 @@ +using System; + +namespace RuntimeInspectorNamespace +{ + [AttributeUsage( AttributeTargets.Field, Inherited = false, AllowMultiple = false )] + public class RuntimeInspectorReadonlyAttribute : Attribute + { + private readonly InspectorField.IsReadonlyGetter m_getter = () => true; + public InspectorField.IsReadonlyGetter Getter { get { return m_getter; } } + + public RuntimeInspectorReadonlyAttribute() {} + + public RuntimeInspectorReadonlyAttribute( Type classAroundMethod, string methodName ) + { + var getter = Delegate.CreateDelegate( + type: typeof( InspectorField.IsReadonlyGetter ), + target: classAroundMethod, + method: methodName, + ignoreCase: false, + throwOnBindFailure: false ); + + if( getter is InspectorField.IsReadonlyGetter readonlyGetter ) + m_getter = readonlyGetter; + } + } +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs.meta b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs.meta new file mode 100644 index 0000000..cd7eb4d --- /dev/null +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Attributes/RuntimeInspectorReadonlyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3d52ae5f0b91624bbddc9b0d312b02f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs index 8d4a7cd..b8a0b0e 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs @@ -141,6 +141,7 @@ protected override void GenerateElements() ( (ExpandableInspectorField) elementDrawer ).IsExpanded = true; elementDrawer.NameRaw = Inspector.ArrayIndicesStartAtOne ? ( ( i + 1 ) + ":" ) : ( i + ":" ); + elementDrawer.IsInteractable = IsInteractable; elements.Add( elementDrawer ); } } @@ -165,6 +166,7 @@ protected override void GenerateElements() if( i < elementsExpandedStates.Count && elementsExpandedStates[i] && elementDrawer is ExpandableInspectorField ) ( (ExpandableInspectorField) elementDrawer ).IsExpanded = true; + elementDrawer.IsInteractable = IsInteractable; elements.Add( elementDrawer ); } } @@ -318,5 +320,13 @@ private object GetTemplateElement( object value ) return template; } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + sizeInput.BackingField.interactable = IsInteractable; + sizeInput.BackingField.textComponent.color = this.GetTextColor(); + sizeText.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs index c7894ee..8882cf2 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs @@ -48,5 +48,12 @@ public override void Refresh() base.Refresh(); input.isOn = (bool) Value; } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + input.interactable = IsInteractable; + input.graphic.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs index 5348cc9..cfd1313 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs @@ -86,6 +86,13 @@ protected override void OnDepthChanged() inputExtents.Depth = Depth + 1; } + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + inputCenter.IsInteractable = IsInteractable; + inputExtents.IsInteractable = IsInteractable; + } + public override void Refresh() { base.Refresh(); diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs index a8ee1a8..536f619 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs @@ -40,6 +40,9 @@ protected override void OnBound( MemberInfo variable ) private void ShowColorPicker( PointerEventData eventData ) { + if( !IsInteractable ) + return; + Color value = isColor32 ? (Color) (Color32) Value : (Color) Value; ColorPicker.Instance.Skin = Inspector.Skin; diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs index aa34743..0e9d628 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs @@ -160,5 +160,13 @@ public override void Refresh() if( valueIndex != -1 ) input.value = valueIndex; } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + input.interactable = IsInteractable; + input.captionText.color = this.GetTextColor(); + dropdownArrow.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs index 40ad700..b1f6492 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs @@ -35,6 +35,12 @@ protected override void OnDepthChanged() ( (RectTransform) invokeButton.transform ).sizeDelta = new Vector2( -Skin.IndentAmount * Depth, 0f ); } + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + invokeButton.interactable = IsInteractable; + } + public void SetBoundMethod( ExposedMethod boundMethod ) { this.boundMethod = boundMethod; diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs index 08bd88a..34bdda3 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs @@ -11,6 +11,8 @@ public abstract class InspectorField : MonoBehaviour, ITooltipContent public delegate object Getter(); public delegate void Setter( object value ); + public delegate bool IsReadonlyGetter(); + #pragma warning disable 0649 [SerializeField] protected LayoutElement layoutElement; @@ -88,6 +90,43 @@ public int Depth private bool m_isVisible = true; public bool IsVisible { get { return m_isVisible; } } + private bool m_isInteractableSelf = true; + private bool m_isInteractableInHierarchy = true; + + public bool IsInteractable + { + get { return m_isInteractableInHierarchy && m_isInteractableSelf; } + set { IsInteractableInHierarchy = value; } + } + + protected bool IsInteractableInHierarchy + { + get { return m_isInteractableInHierarchy; } + set + { + bool oldValue = IsInteractable; + m_isInteractableInHierarchy = value; + if (oldValue != IsInteractable) + { + OnIsInteractableChanged(); + } + } + } + + protected bool IsInteractableSelf + { + get { return m_isInteractableSelf; } + set + { + bool oldValue = IsInteractable; + m_isInteractableSelf = value; + if (oldValue != IsInteractable) + { + OnIsInteractableChanged(); + } + } + } + public string Name { get { if( variableNameText ) return variableNameText.text; return string.Empty; } @@ -109,6 +148,7 @@ public string NameRaw private Getter getter; private Setter setter; + private IsReadonlyGetter isReadonlyGetter; public virtual void Initialize() { @@ -175,6 +215,10 @@ public void BindTo( Type variableType, string variableName, Getter getter, Sette this.getter = getter; this.setter = setter; + var attr = variable?.GetCustomAttribute(); + if( attr != null ) + isReadonlyGetter = attr.Getter; + OnBound( variable ); } @@ -247,6 +291,17 @@ public virtual void Refresh() RefreshValue(); } + protected virtual void OnIsInteractableChanged() + { + if( variableNameText ) + { + if( IsInteractable ) + variableNameText.color = Skin.TextColor; + else + variableNameText.color = Skin.InactiveTextColor; + } + } + private void RefreshValue() { try @@ -264,6 +319,16 @@ private void RefreshValue() else m_value = null; } + + if( isReadonlyGetter != null ) + { + try + { + IsInteractableSelf = !isReadonlyGetter(); + } + catch + {} + } } } @@ -429,6 +494,13 @@ protected override void OnDepthChanged() elements[i].Depth = Depth + 1; } + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + for( int i = 0; i < elements.Count; i++ ) + elements[i].IsInteractable = IsInteractable; + } + protected void RegenerateElements() { if( elements.Count > 0 || exposedMethods.Count > 0 ) @@ -501,6 +573,7 @@ public InspectorField CreateDrawerForComponent( Component component, string vari variableName = component.GetType().Name + " component"; variableDrawer.BindTo( component.GetType(), string.Empty, () => component, ( value ) => { } ); + variableDrawer.IsInteractable = IsInteractable; variableDrawer.NameRaw = variableName; elements.Add( variableDrawer ); @@ -531,6 +604,7 @@ public InspectorField CreateDrawer( Type variableType, string variableName, Gett if( variableDrawer != null ) { variableDrawer.BindTo( variableType, variableName == null ? null : string.Empty, getter, setter ); + variableDrawer.IsInteractable = IsInteractable; if( variableName != null ) variableDrawer.NameRaw = variableName; diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs index 214adcf..dc7b208 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs @@ -86,5 +86,12 @@ public override void Refresh() if( !numberHandler.ValuesAreEqual( Value, prevVal ) ) input.Text = numberHandler.ToString( Value ); } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + input.BackingField.interactable = IsInteractable; + input.BackingField.textComponent.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs index 5674c56..7b67248 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs @@ -71,6 +71,12 @@ protected override void OnSkinChanged() ( (RectTransform) input.transform ).anchorMin = new Vector2( 1f - inputFieldWidth, 0f ); } + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + slider.BackingField.interactable = IsInteractable; + } + public override void Refresh() { base.Refresh(); diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs index 6e94a80..2cf398b 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs @@ -171,5 +171,13 @@ private void InitializeObject() IsExpanded = true; } } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + initializeObjectButton.interactable = IsInteractable; + Text buttonText = initializeObjectButton.GetComponentInChildren(); + buttonText.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs index 30d61cb..a85f1d1 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs @@ -47,6 +47,9 @@ public override bool SupportsType( Type type ) private void ShowReferencePicker( PointerEventData eventData ) { + if ( !IsInteractable ) + return; + Object[] allReferences = Resources.FindObjectsOfTypeAll( BoundVariableType ); ObjectReferencePicker.Instance.Skin = Inspector.Skin; @@ -128,5 +131,13 @@ public override void Refresh() if( lastValue != Value ) OnReferenceChanged( (Object) Value ); } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + Color textColor = this.GetTextColor(); + referenceNameText.color = textColor; + background.color *= textColor; + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs index 7a7744b..9ff58e7 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs @@ -178,6 +178,27 @@ protected override void OnSkinChanged() ( (RectTransform) inputH.transform ).SetAnchorMinMaxInputField( labelH.rectTransform, rightSideAnchorMin, new Vector2( rightSideAnchorMax.x, 0.5f ) ); } + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + Color textColor = this.GetTextColor(); + + inputX.BackingField.interactable = IsInteractable; + inputY.BackingField.interactable = IsInteractable; + inputW.BackingField.interactable = IsInteractable; + inputH.BackingField.interactable = IsInteractable; + + inputX.BackingField.textComponent.color = textColor; + inputY.BackingField.textComponent.color = textColor; + inputW.BackingField.textComponent.color = textColor; + inputH.BackingField.textComponent.color = textColor; + + labelX.color = textColor; + labelY.color = textColor; + labelW.color = textColor; + labelH.color = textColor; + } + public override void Refresh() { #if UNITY_2017_2_OR_NEWER diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs index 9690fd9..80caee1 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs @@ -112,5 +112,12 @@ public override void Refresh() else input.Text = (string) Value; } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + input.BackingField.interactable = IsInteractable; + input.BackingField.textComponent.color = this.GetTextColor(); + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs index 43d6df5..1c6131e 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs @@ -165,5 +165,20 @@ public override void Refresh() inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); } } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + Color textColor = this.GetTextColor(); + + inputX.BackingField.interactable = IsInteractable; + inputY.BackingField.interactable = IsInteractable; + + inputX.BackingField.textComponent.color = textColor; + inputY.BackingField.textComponent.color = textColor; + + labelX.color = textColor; + labelY.color = textColor; + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs index 2ce862d..5dfeb3c 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs @@ -191,5 +191,23 @@ public override void Refresh() inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); } } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + Color textColor = this.GetTextColor(); + + inputX.BackingField.interactable = IsInteractable; + inputY.BackingField.interactable = IsInteractable; + inputZ.BackingField.interactable = IsInteractable; + + inputX.BackingField.textComponent.color = textColor; + inputY.BackingField.textComponent.color = textColor; + inputZ.BackingField.textComponent.color = textColor; + + labelX.color = textColor; + labelY.color = textColor; + labelZ.color = textColor; + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs index cc44414..a113e07 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs @@ -197,5 +197,26 @@ public override void Refresh() inputW.Text = val.w.ToString( RuntimeInspectorUtils.numberFormat ); } } + + protected override void OnIsInteractableChanged() + { + base.OnIsInteractableChanged(); + Color textColor = this.GetTextColor(); + + inputX.BackingField.interactable = IsInteractable; + inputY.BackingField.interactable = IsInteractable; + inputZ.BackingField.interactable = IsInteractable; + inputW.BackingField.interactable = IsInteractable; + + inputX.BackingField.textComponent.color = textColor; + inputY.BackingField.textComponent.color = textColor; + inputZ.BackingField.textComponent.color = textColor; + inputW.BackingField.textComponent.color = textColor; + + labelX.color = textColor; + labelY.color = textColor; + labelZ.color = textColor; + labelW.color = textColor; + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs index 7873dda..740cd90 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs @@ -989,5 +989,12 @@ public static IRuntimeInspectorCustomEditor GetCustomEditor( Type type ) return null; } + + public static Color GetTextColor( this InspectorField drawer ) + { + if( drawer.IsInteractable ) + return drawer.Skin.TextColor; + return drawer.Skin.InactiveTextColor; + } } } \ No newline at end of file diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Skin/UISkin.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Skin/UISkin.cs index 54d2db9..0272b05 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Skin/UISkin.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Skin/UISkin.cs @@ -158,6 +158,21 @@ public Color TextColor } } + [SerializeField] + private Color m_inactiveTextColor = Color.gray; + public Color InactiveTextColor + { + get { return m_inactiveTextColor; } + set + { + if( m_inactiveTextColor != value ) + { + m_inactiveTextColor = value; + m_version++; + } + } + } + [SerializeField] private Color m_scrollbarColor = Color.black; public Color ScrollbarColor From bd5f3a30bba64c37ecc50708f0b925aef70556bb Mon Sep 17 00:00:00 2001 From: Sandro Forster Date: Mon, 13 Dec 2021 11:31:15 +0100 Subject: [PATCH 2/2] Reset InspectorField.IsInteractable when transform is unbound --- .../Scripts/RuntimeInspector/Fields/InspectorField.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs index 34bdda3..c73e127 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs @@ -442,6 +442,7 @@ protected override void OnUnbound() IsExpanded = false; HeaderVisibility = RuntimeInspector.HeaderVisibility.Collapsible; + IsInteractable = true; ClearElements(); }