https://github.com/nenniana/unity-inspector-enhancements
Inspector Enhancements is a small Unity package offering custom drawers and property attributes (Hide-/ShowIf, HideLabel, Required and InlineProperty, with more on the way) to enhance the Unity Inspector experience.
https://github.com/nenniana/unity-inspector-enhancements
game-development inspector-unity3d unity unity-inspector unity-tool
Last synced: 5 months ago
JSON representation
Inspector Enhancements is a small Unity package offering custom drawers and property attributes (Hide-/ShowIf, HideLabel, Required and InlineProperty, with more on the way) to enhance the Unity Inspector experience.
- Host: GitHub
- URL: https://github.com/nenniana/unity-inspector-enhancements
- Owner: Nenniana
- License: gpl-3.0
- Created: 2024-10-16T11:33:14.000Z (over 1 year ago)
- Default Branch: develop
- Last Pushed: 2024-12-13T15:09:55.000Z (over 1 year ago)
- Last Synced: 2024-12-22T05:42:10.767Z (over 1 year ago)
- Topics: game-development, inspector-unity3d, unity, unity-inspector, unity-tool
- Language: C#
- Homepage:
- Size: 1.09 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Unity Inspector Enhancements
Inspector Enhancements is a Unity package offering custom drawers and property attributes to enhance the Unity Inspector experience. This collection of utility attributes improves data visualization, organization, and validation in the editor.
## Wiki
Please visit the [Wiki](https://github.com/Nenniana/Unity-Inspector-Enhancements/wiki) for information on installation and usage.
## Features
### **Method Button Attribute**
The `[MethodButton]` attribute enables direct method invocation from the Unity Inspector, working seamlessly with both parameterless methods and methods that require parameters.
- **Capabilities**:
- Functions with methods regardless of whether they have parameters or not, requiring no additional setup.
- Displays default values in the Inspector for parameters specified in the attribute or defined as default values in the method itself.
- Supports referencing other serialized fields as parameters by specifying their names.
- Compatible with primitive types, Unity native types (e.g., `Vector3`, `GameObject`), and custom serializable classes/structs.
### **Collection Dropdown Attribute**
The `[CollectionDropdown]` attribute displays a dropdown for selecting items within a collection directly in the Inspector. Compatible with standard collections such as arrays and lists, this feature enhances Inspector usability by allowing streamlined access to collection elements.
- **Capabilities**:
- Provides a dropdown selection for array, list, and similar collection fields, offering an organized and user-friendly way to view and choose items.
- Supports any collection type that implements `IEnumerable`, making it flexible for various use cases in the Inspector.
### **HideIf / ShowIf Attributes**
The `[HideIf]` and `[ShowIf]` attributes allow conditional visibility of specific fields in the Inspector. They can be configured to dynamically hide or display fields based on certain conditions, enhancing data organization and readability.
- **Capabilities**:
- Supports `bool` fields and methods that return `bool` values.
- Accepts parameters if a method is provided, enabling custom logic.
- Can operate without parameters, hiding or showing based on the field’s null status.
- **Limitations**: Not compatible with custom structs or classes; supports Unity native objects and primitive types.
### **HideLabel Attribute**
The `[HideLabel]` attribute simply hides the label of a field in the Inspector. This is useful for a cleaner display, removing labels where they aren’t necessary and simplifying the user interface.
- **Capabilities**: Provides a cleaner look by removing labels where they aren’t needed, which can simplify the interface.
### **Inline Property Attribute**
The `[InlineProperty]` attribute inlines a serializable class or struct, displaying it directly within the Inspector. This attribute is particularly useful for visualizing nested data structures, like other classes within a `MonoBehaviour`, and allows for flexible customization.
- **Capabilities**:
- Inlines a custom class or struct as a field, showing each associated field directly.
- Allows for custom naming, with optional name prefixing for each field in the inline class.
- Supports customization of both the class setup and individual field display, ideal for organizing nested data within `MonoBehaviour` scripts.
### **Required Attribute**
The `[Required]` attribute ensures that a field cannot be left as `null`, helping to prevent common runtime errors by flagging fields that require a value assignment.
- **Capabilities**: Enforces that an object or field must be assigned by displaying a warning if left unfilled.
Here's the **Upcoming Features** section updated to display the new attributes in the same manner as the previous ones:
## Upcoming Features
### **ShowInInspector Attribute**
The `[ShowInInspector]` attribute allows non-serialized properties to be displayed and edited directly within the Inspector. This feature is useful for exposing calculated or dynamically generated properties while still maintaining editable fields in the editor.
- **Capabilities**:
- Displays non-serialized properties directly in the Inspector.
- Allows property editing, updating the backing serialized field if one is referenced, enabling dynamic data management within the editor.
### **InterfaceImplementation Attribute**
The `[InterfaceImplementation]` attribute displays interface fields in the Inspector, enabling users to select from a list of eligible implementations. This makes it easier to assign specific implementations to an interface directly in the Unity editor.
- **Capabilities**:
- Shows eligible implementations of an interface in a dropdown list within the Inspector.
- Only non-abstract classes with a default constructor are selectable, excluding `MonoBehaviour` types and abstract classes.
- Simplifies assigning specific implementations to interfaces directly within Unity’s Inspector.