DOTS Editor 0.12.0-preview Release: The new way to inspect Entities

It has been a while since the last update so we’re bundling both updates into one.

User Requests
Entities Window: Performance
As an on-going process of making our windows support maximum scalability and performance, we made adjustments to the way we update the data in the window. There was a user report about making structural changes every frame and that caused the Entities window to be non-responsive. This has been fixed and if you do see more performance issues with the window please let us know in the thread.

Systems Window: Searching and Domain Reload
When domain reloading, the system window hierarchy would reset and collapse all of the system groups. This was not ideal and it is now fixed.

The search has also been greatly improved with auto-completion for component searching, flat-list search results, and better workflow UX (such as repositioning the selected result in the tree when the filter is cleared).

Latest version (0.12.0-preview) on the right

Systems nested in classes

We now show nested systems in class just like the Entity Debugger but we made it easier to read.

Multiple Inspectors
We now support inspecting Entities in multiple inspector windows. Bringing the option to lock and inspect multiple Entities for debugging just like with GameObjects.

The New Entity Inspector
This was introduced in 0.11.0-preview.3 but we will give a proper introduction here.

The Header
We’ve redesigned the header to show users that they are indeed inspecting an Entity. It also includes the GameObject and clicking on this will highlight the GameObject in the Hierarchy window. We’re bringing the streamlined Unity workflow of Hierarchy and Inspector into a DOTS project and this is just the start. There is also a search bar which can only search component names for now. A real project can easily contain an Entity with hundreds of components so filtering out the component you need to inspect is a necessity.

Component Tags and Icons
Components which are “tags” (empty structs) are now grouped together at the top for ease of viewing. We’ve also introduced different component icons to make them easily distinguishable. We also added individual headers which are collapsable. Another way to cleanly look at the components but also to keep it consistent with GameObjects inspection.

Component Values
There were serious issues with alignment and wasted space which have been corrected. Now that the new inspector uses the new UIToolkit (previously named UIElements), it is much easier to apply UX fixes and also allows maximum flexibility for the future of this window. We redesigned the way users inspect a dynamic buffer, introducing better pagination and the placeholder for modifying them.

The new Inspector is still read-only but we do hear the requests of making it read-write which will come soon. If you want these changes, add the latest version of the DOTS Editor package to your project. Give us feedback in the thread and any problems that arise.

Installation Note: In Unity 2020.1, DOTS related packages are not shown in the Package Manager. You must now initially add this package (“com.unity.dots.editor”: “0.12.0-preview”) in the project manifest file (Packages/manifest.json).

Official Changelog: https://docs.unity3d.com/Packages/com.unity.dots.editor@0.12/changelog/CHANGELOG.html

Our previous version patch notes here: DOTS Editor 0.10.0-preview Release

32 Likes

This is amazing. Where was this my entire (Unity DOTS) life.

Since this uses UI Toolkit, is this supported on 2021.1? I have no problem returning to stable since my entire project is just staring at the old inspector and cursing at the components displaying the wrong float values.

But this, this is big step forward for accessibility of Unity DOTS.

Edit: I noticed that the entity values in the new inspector are no longer clickable. That’s a real shame but the new search function kinda makes up for it.

What I really wish is for the new Systems and Editor windows to replace the ones in the Entity Debugger. Now I have all these redundant windows everywhere.

Also dark mode has a problem in that in play mode, everything other than the game window is tinted black and modifies inspector’s gray text on gray background with gray buttons to blend into a single gray blob. I can still read it but my eyes are starting to hurt.

1 Like

Thanks, performance feels a lot better than the previous version and I definitely appreciate tags being organized at the top for readability.

One thing I’d like to request is component groups, both for my own sets of components but also builtin components that can take up a lot of space. Render components take up an entire screen, similarly with animation and some transform combinations, it gets tough to sort through things at a glance with everything all over the place. I’d love it if they were grouped into a Rendering group and to collapse them.
Also while I’m at it, remembering which components were collapsed throughout the editor session would be really nice

5 Likes

Good job thanks :slight_smile:

There is big amount of work ahead :slight_smile:
You still have big waste of inspector space. Almost third for @thelebaron screen :slight_smile:

And I totally agree that we need component groups or categories to group together and collapse in one shot

Inspector can be like this:

8 Likes

I’m really liking all of the updates here.

One thing I would love to see is some way to group entities in the Entities window according to an arbitrary hierarchy. From what I can tell, the currently supported hierarchy only works with the Parent/Child components from the Parent/TransformSystem. This works well, but it requires a bunch of other components (e.g. LocalToWorld, LocalToParent, Translation, Rotation, Scale, etc.). If I try to only add Parent and Child components, they are removed automatically by the ParentSystem (I think it considers a parent without a LocalToWorld as a “deleted parent”).

Ideally, we would have some way to group entities in the editor for easier debugging without having to pay the cost of the TransformSystem and its corresponding components. Even better would be if it supported many-to-many relationships (a child entity having multiple parents).

4 Likes

Is there a way to filter by ‘not’ component to filter away let’s say prefabs ? Or disabled entities ?

1 Like

As I sad earlier we need 3 base functions in entities window:

  • grouping (subgrouping too)
  • sorting
  • filtering

Fourth is:

  • parenting by custom criteria (making hierarchy view by any component we want)

Also we need ability to save views in project and for personal use and quickly enable any view in entities window

With those four we can view entities in any format we want for current tasks.

E.g.:

Artists can filter render entities and group it by type (lihgts, meshes…) sort in some comfortable order and even may be create hierarchy based on LOD system so lower lodgroups will be children of LOD0 …

Programmers can filter only NPCs and group by NPC Type or spatial data to work with NPC logic…

GD/LevelDesigners can filter map logical scripts to fast work on it…

Selection in GameView must somehow be able to select only filtered entities in scene

3 Likes

More grouping, sorting, and filtering options are in our roadmap. Right now, we are focusing on the transition from the Entity Debugger to the new workflows (using the Entities, Systems, and Components windows). Once that transition is successful, we will start working on new capabilities, like grouping.

12 Likes

As I recall there used to be a “Used by Systems” panel that would show all the systems that an entity was being used by, wherabouts is that located now?

3 Likes

You’re assuming we all want a 500 pixel wide inspector :eyes: I like my inspector half the width of your screenshot! (and I use an ultrawide)

3 Likes

I thinks it is easily doable with half width inspector because there you just see stretched fields

But for those who OK with ultra long inspector and can not deal with wide there can be mode to separate header from data

For those than OK with wide inspector and can not deal with ultra long one there can be inline mode

Here’s where to find these new windows:

They replace most features of the Entity Debugger. I’m not sure if they let you search for entities by Component type, though.

That is, I think this is missing:

6775913--783638--upload_2021-1-28_10-25-35.png

@WAYNGames No, you can’t filter by “not” yet. Filter disabled components with “c:disabled” in the Entities window.

@craftsmanbeck Actually, realized there’s a bug there. It’s deprecated now because of the new Inspector. We may bring it back if it causes users pain and they need that “used by systems” area back. We have a better replacement coming soon.

@GameDeveloper1111 You can filter by components in the Entities window. Try the search bar in the window.

@JesOb We’re aware of the noise generated by runtime components in the Inspector. Currently, our philosophy is that the Inspector shows the entire truth of an inspected Entity, including all components.

The only missing features from the EntityDebugger are the interoperability between the Systems/Entities and the Archetypes area. This is an important part we want to get right and are carefully redesigning this portion.

If you have any feedback on the Archetypes section, we would like to know how you use this information.

8 Likes

Where can I get DOTS visual scripting I used the git URL from the drop 12 forum but cannot get it… It’s unavailable… And does the dots VS generate code?!

When I type the name of the component in the search bar, it seems to only search the names of entities but not the names of their components:

6778070--784145--upload_2021-1-28_23-23-40.png

6778070--784148--upload_2021-1-28_23-24-27.png

EDIT: I think you were talking about the Inspector window with an Entity inspected, but this is not the same as filtering for entities by component type like in the Entity Debugger.

6778070--784151--upload_2021-1-28_23-36-3.png

!=

6778070--784154--upload_2021-1-28_23-36-46.png

The “yet” part is the most important piece of that message ^^.

Also the systems widows does not seem to report the ISystemBase times.
If I make an ISystemBase without burst, I get the same times as a SystemBase in the profiler but it reports 0 for the ISystemBase in the system window.

6778862--784379--upload_2021-1-29_18-41-46.png

3 Likes

Thank you. Next time I’ll be more careful with people’s time and read the changelog before posting.

I admit this is very important to have, but that’s essentially what the Debug mode of the regular Inspector does, so I don’t see a reason why pretty much the exact same UX shouldn’t be here. Default should really be readability for design purposes, not for, well, debugging.

It would be great if you will implement feature which will highlight entities with Prefab component by color or sign

1 Like