UnityRuntimeInspector icon indicating copy to clipboard operation
UnityRuntimeInspector copied to clipboard

Added support for read-only fields

Open i-xt opened this issue 4 years ago • 3 comments

This PR adds support for read-only fields. A drawer can be made read-only from outside, for example in a IRuntimeInspectorCustomEditor, or via the new RuntimeInspectorReadonlyAttribute. This attribute can specify a static function, which is queried in InspectorField.Refresh() and returns whether the corresponding field or property should be rendered as read-only. If no function is supplied, members with this attribute are always considered read-only.

Of course it would be nice to also link instance methods in the attribute, but this would necessitate further code changes, because:

  1. C# doesn't allow delegates to be passed to attribute constructors, which only leaves reflection as alternative to find the method.
  2. Code that has access to the MemberInfo (InspectorField.BindTo()) to get the attribute from, doesn't have access to the instance on which to search for the method.

Let me know what you think about this implementation. If you are open for a merge, I'm happy to supply documentation.

i-xt avatar Nov 30 '21 17:11 i-xt

I will review your pull request with great enthusiasm when I get the chance, thank you 😺

yasirkula avatar Dec 01 '21 17:12 yasirkula

I've been focused on some other plugins for a couple of weeks and am still working on them so I still couldn't review the PR. Afterwards, I'll prioritize reviewing this.

yasirkula avatar Dec 12 '21 07:12 yasirkula

We need to make sure that there aren't any edge cases with the text color modifications, for example when skin changes at runtime. I might ask you to only set the input fields' interactable to false and not touch the text color but I haven't decided yet. Please wait until #50 is merged. Even though that PR was created afterwards, it'll be easier to merge this PR to that one instead merging that PR to this one.

yasirkula avatar Jan 30 '22 11:01 yasirkula