No GUI Implemented - FIX
Last updated
Last updated
In rare instances, when using the DataObjectDropdown attribute, the Unity Inspector may display the following error message: "No GUI Implemented." Here’s some context to help understand this issue:
This problem occurs because a third-party asset overrides the default Unity Inspector drawing method. This often happens with older assets that still use the legacy IMGUI system instead of the newer UIToolkit system. Consequently, the DataObjectDropdown property drawer fails to function, resulting in the "No GUI Implemented" message.
The following assets are known to override the Unity Inspector and cause this issue:
Odin Inspector (only older versions. Please make sure to update)
NaughtyAttributes
AI Tree - Behavior Trees for Unity (from Renowned Games)
SOAP
vInspector
It’s generally advisable to check for updates to these assets, as some may have already resolved this issue.
Using the UIToolkit debugger, you can typically inspect the UI to identify the cause:
Open up the UIToolkit debugger -> Window / UIToolkit / Debugger
Select the InspectorWindow in the dropdown (see image)
Choose the GameObject with the script where the property drawer isn’t working
You should be able to see the hierarchy of the inspector in the debugger. (see image)
In the example provided, an EditorElement called AEditor _EnemyDataComponent is visible. This suggests that another element is overriding the drawing, as AEditor is not a default Unity name/script. Additionally, the actual editor is within an IMGUIContainer, which is why it doesn’t function correctly. Searching for a script named AEditor in the project view identifies the culprit: an editor script from a third-party asset overriding the drawing. Removing this script/asset resets the drawing, and the Inspector works as expected. However, deleting an essential asset may not be ideal. In such cases, contact the asset developer for a fix.
Some asset developers are creating custom editors for the Unity Inspector which tries to override the default Unity Inspector behaviour, like custom buttons on the transforms view. To make life easier they're using a simple attribute on their custom editor class which looks like this:
This attribute overrides the default Unity Inspector with their own implementation for all UnityEngine.Object types!! In most cases, they're just supporting IMGUI based editors including property drawers. Meaning, that UIToolkit based editors and property drawers will fail with the message: No GUI Implemented.
Thankfully Unity's UIToolkit has a IMGUIContainer which could be used to draw IMGUI based ui elements inside of a UIToolkit Visual Element. So the solution could be simple but must be implemented by the asset developer itself to support UIToolkit based editors as well.