Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

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

Discussion in 'Entity Component System' started by raymondyunity, Jan 25, 2021.

Thread Status:
Not open for further replies.
  1. raymondyunity

    raymondyunity

    Unity Technologies

    Joined:
    Apr 30, 2018
    Posts:
    122
    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.
    insp1.png insp2.png


    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: https://forum.unity.com/threads/dots-editor-0-10-0-preview-release.954882/
     
    Last edited: Jan 25, 2021
    Grizmu, HeyZoos, Neil-Corre and 29 others like this.
  2. Kmsxkuse

    Kmsxkuse

    Joined:
    Feb 15, 2019
    Posts:
    306
    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.
     
    Last edited: Jan 25, 2021
    NotaNaN likes this.
  3. thelebaron

    thelebaron

    Joined:
    Jun 2, 2013
    Posts:
    851
    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
     

    Attached Files:

    Egad_McDad, NotaNaN, OndrejP and 2 others like this.
  4. JesOb

    JesOb

    Joined:
    Sep 3, 2012
    Posts:
    1,106
    Good job thanks :)

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

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

    Inspector can be like this:
    upload_2021-1-25_22-27-9.png
     
  5. scottjdaley

    scottjdaley

    Joined:
    Aug 1, 2013
    Posts:
    160
    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).
     
    NotaNaN, OndrejP, JesOb and 1 other person like this.
  6. WAYNGames

    WAYNGames

    Joined:
    Mar 16, 2019
    Posts:
    988
    Is there a way to filter by 'not' component to filter away let's say prefabs ? Or disabled entities ?
     
    awesomedata likes this.
  7. JesOb

    JesOb

    Joined:
    Sep 3, 2012
    Posts:
    1,106
    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
     
    Neil-Corre, OndrejP and scottjdaley like this.
  8. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    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.
     
  9. craftsmanbeck

    craftsmanbeck

    Joined:
    Nov 20, 2010
    Posts:
    40
    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?
     
    OndrejP, Ruchir and Lightning-Rock like this.
  10. tertle

    tertle

    Joined:
    Jan 25, 2011
    Posts:
    3,753
    You're assuming we all want a 500 pixel wide inspector o_O I like my inspector half the width of your screenshot! (and I use an ultrawide)
     
  11. JesOb

    JesOb

    Joined:
    Sep 3, 2012
    Posts:
    1,106
    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
     
  12. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    Here's where to find these new windows:

    upload_2021-1-28_10-19-59.png

    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:

    upload_2021-1-28_10-25-35.png
     
  13. raymondyunity

    raymondyunity

    Unity Technologies

    Joined:
    Apr 30, 2018
    Posts:
    122
    @WAYN_Games 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.


    @Jes28 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.
     
    Last edited: Jan 29, 2021
  14. Deleted User

    Deleted User

    Guest

    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?!
     
  15. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    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:

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

    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.

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

    !=

    upload_2021-1-28_23-36-46.png
     
    Last edited: Jan 29, 2021
  16. WAYNGames

    WAYNGames

    Joined:
    Mar 16, 2019
    Posts:
    988
    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.
     
  17. Neonage

    Neonage

    Joined:
    May 22, 2020
    Posts:
    272
    upload_2021-1-29_18-41-46.png
     
  18. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    Thank you. Next time I'll be more careful with people's time and read the changelog before posting.
     
  19. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    149
    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.
     
  20. Tony_Max

    Tony_Max

    Joined:
    Feb 7, 2017
    Posts:
    349
    It would be great if you will implement feature which will highlight entities with Prefab component by color or sign
     
    WAYNGames likes this.
  21. Tony_Max

    Tony_Max

    Joined:
    Feb 7, 2017
    Posts:
    349
    Double click
     
  22. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    We are aware and are actively working on a better presentation of component data in the Inspector. Will share more in the future.
     
    AndrewKaninchen likes this.
  23. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Noted.
     
  24. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    Typing "c:NetworkIdComponent" (for example) gives me a lot of results that don't have any NetworkIdComponent on them. Only one of these entities actually have it. Is this normal?

    Other question: is there any way to still see entity names when they are converted?


     
    Last edited: Feb 13, 2021
  25. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    upload_2021-2-15_21-1-12.png

    Being able to search by component value would be useful.
    c:SpecialIndex == 1
    or
    c:SpecialIndex.Value == 1
    , or maybe even
    c:PhysicsVelocity.Linear.y > 2
    or
    c:PhysicsVelocity.Linear == float3.zero
     
    Egad_McDad likes this.
  26. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    I also experienced this. I had a bunch of LinkedEntityGroups filled with null entities showing up in search results. I thought it was my fault for doing a nono by manually deserializing Worlds.
     
  27. GameDeveloper1111

    GameDeveloper1111

    Joined:
    Jul 24, 2020
    Posts:
    100
    It would be useful to see how many entities were found, like in the Entity Debugger:

    upload_2021-2-15_21-11-59.png

    EDIT: The System window shows entity counts for entity queries.
     
    Last edited: Feb 16, 2021
    Tony_Max likes this.
  28. Zec_

    Zec_

    Joined:
    Feb 9, 2017
    Posts:
    148
    The new entity inspector is lovely! We have encountered two types of issues with it though. Haven't seen them reported before, so I thought I might as well do so.

    1: Unhandled exceptions for enum flags, leading to broken inspectors and occasional insane frame times.
    My suspicion is that this is caused by 64-bit enum flags. Correct me if I'm wrong, but it seems as though the inspector attempts to use an EnumFlagsField, and from my knowledge that's restricted to handle only 32 bit enum flags. Most of the times when we inspect an entity with such a field the exception is logged once and the inspector just goes blank. One time when it happened, the inspector kept rendering but the exception got logged each frame, and the game spent 1600ms each frame on building the inspector.

    Here's the logged exception:
    Code (CSharp):
    1. OverflowException: Value was either too large or too small for an Int32.
    2. System.Convert.ToInt32 (System.Int64 value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    3. System.Int64.System.IConvertible.ToInt32 (System.IFormatProvider provider) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    4. System.Convert.ToInt32 (System.Object value, System.IFormatProvider provider) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    5. System.Enum.System.IConvertible.ToInt32 (System.IFormatProvider provider) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    6. System.Convert.ToInt32 (System.Object value) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
    7. UnityEditor.EnumDataUtility.EnumFlagsToInt (UnityEditor.EnumData enumData, System.Enum enumValue) (at <22954a70fcec46f29620f943d3d7bf23>:0)
    8. UnityEditor.UIElements.EnumFlagsField.ValueToMask (System.Enum value) (at <420b942f64794d4da66420603f126f7b>:0)
    9. UnityEditor.UIElements.BaseMaskField`1[TChoice].SetValueWithoutNotify (TChoice newValue) (at <420b942f64794d4da66420603f126f7b>:0)
    10. UnityEditor.UIElements.EnumFlagsField.Init (System.Enum defaultValue, System.Boolean includeObsoleteValues) (at <420b942f64794d4da66420603f126f7b>:0)
    11. Unity.Properties.UI.Internal.GuiFactory.FlagsField[TValue] (Unity.Properties.IProperty property, TValue& value, Unity.Properties.PropertyPath path, Unity.Properties.UI.Internal.InspectorVisitorContext visitorContext) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/GuiFactory.cs:167)
    12. Unity.Properties.UI.Internal.BuiltInAdapter`1[T].VisitPrimitive[TContainer,TValue,TElement] (Unity.Properties.IProperty`1[TContainer] property, TValue& value, Unity.Properties.UI.Internal.BuiltInAdapter`1+DrawHandler`3[T,TContainer,TValue,TElement] handler) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/Adapters/BuiltInAdapter.cs:82)
    13. Unity.Properties.UI.Internal.BuiltInAdapter`1[T].Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container, TValue& value) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/Adapters/BuiltInAdapter.cs:156)
    14. Unity.Properties.Internal.PropertyVisitorAdapterExtensions.TryVisit[TContainer,TValue] (System.Collections.Generic.List`1+Enumerator[T] adapters, Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container, TValue& value) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/Internal/PropertyVisitorAdapterExtensions.cs:60)
    15. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyVisitor.Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:115)
    16. Unity.Properties.Property`2[TContainer,TValue].Unity.Properties.Internal.IPropertyAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:129)
    17. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:71)
    18. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    19. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    20. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    21. Unity.Properties.PropertyVisitExtensions.Visit[TValue] (Unity.Properties.IProperty property, Unity.Properties.PropertyVisitor visitor, TValue& value) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:261)
    22. Unity.Properties.UI.Internal.InspectorVisitor`1[T].DefaultPropertyVisit[TValue] (Unity.Properties.IProperty property, TValue& value, Unity.Properties.PropertyPath path) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:124)
    23. Unity.Properties.UI.Internal.InspectorVisitor`1[T].VisitWithCustomInspectorOrDefault[TContainer,TDeclaredType] (Unity.Properties.IProperty property, TContainer& container, TDeclaredType& value, Unity.Properties.UI.Internal.InspectorVisitor`1+DefaultVisitHandler`1[T,TDeclaredType] defaultVisit) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:216)
    24. Unity.Properties.UI.Internal.InspectorVisitor`1[T].VisitProperty[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container, TValue& value) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:109)
    25. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyVisitor.Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:137)
    26. Unity.Properties.Property`2[TContainer,TValue].Unity.Properties.Internal.IPropertyAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:129)
    27. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:71)
    28. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    29. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    30. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    31. Unity.Properties.PropertyVisitExtensions.Visit[TValue] (Unity.Properties.IProperty property, Unity.Properties.PropertyVisitor visitor, TValue& value) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:261)
    32. Unity.Properties.UI.Internal.InspectorVisitor`1[T].DefaultPropertyVisit[TValue] (Unity.Properties.IProperty property, TValue& value, Unity.Properties.PropertyPath path) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:128)
    33. Unity.Properties.UI.Internal.InspectorVisitor`1[T].VisitWithCustomInspectorOrDefault[TContainer,TDeclaredType] (Unity.Properties.IProperty property, TContainer& container, TDeclaredType& value, Unity.Properties.UI.Internal.InspectorVisitor`1+DefaultVisitHandler`1[T,TDeclaredType] defaultVisit) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:216)
    34. Unity.Properties.UI.Internal.InspectorVisitor`1[T].VisitProperty[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container, TValue& value) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/InspectorVisitor.cs:109)
    35. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyVisitor.Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:137)
    36. Unity.Properties.Property`2[TContainer,TValue].Unity.Properties.Internal.IPropertyAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:129)
    37. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:71)
    38. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    39. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    40. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    41. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.VisitParameters parameters) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:109)
    42. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.PropertyVisitor visitor, Unity.Properties.VisitParameters parameters) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:83)
    43. Unity.Properties.UI.Internal.BindingTarget`1[TTarget].GenerateHierarchy () (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Elements/Internal/BindingTarget.cs:124)
    44. Unity.Properties.UI.PropertyElement.SetTarget[T] (T target) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Elements/PropertyElement.cs:154)
    45. Unity.Entities.Editor.ComponentElementBase.CreateContent[TValue] (Unity.Entities.IComponentProperty property, TValue& value) (at Library/PackageCache/com.unity.dots.editor@0.12.0-preview.6/Editor/Inspector/Elements/ComponentElementBase.cs:49)
    46. Unity.Entities.Editor.ComponentElement`1[TComponent]..ctor (Unity.Entities.IComponentProperty property, Unity.Entities.Editor.EntityInspectorContext context, ProjectM.EntityInput& value) (at Library/PackageCache/com.unity.dots.editor@0.12.0-preview.6/Editor/Inspector/Elements/ComponentElement.cs:16)
    47. Unity.Entities.Editor.EntityInspectorVisitor.VisitProperty[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container, TValue& value) (at Library/PackageCache/com.unity.dots.editor@0.12.0-preview.6/Editor/Inspector/Visitors/EntityInspectorVisitor.cs:32)
    48. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyVisitor.Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:137)
    49. Unity.Properties.Property`2[TContainer,TValue].Unity.Properties.Internal.IPropertyAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:129)
    50. Unity.Properties.PropertyVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/PropertyVisitor.cs:79)
    51. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    52. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    53. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    54. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.VisitParameters parameters) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:109)
    55. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer container, Unity.Properties.PropertyVisitor visitor, Unity.Properties.VisitParameters parameters) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:68)
    56. Unity.Entities.Editor.EntityEditor.Initialize (Unity.Entities.Editor.EntitySelectionProxy proxy) (at Library/PackageCache/com.unity.dots.editor@0.12.0-preview.6/Editor/Inspector/EntityEditor.cs:158)
    57. Unity.Entities.Editor.EntityEditor.CreateInspectorGUI () (at Library/PackageCache/com.unity.dots.editor@0.12.0-preview.6/Editor/Inspector/EntityEditor.cs:93)
    58. UnityEditor.UIElements.InspectorElement.CreateInspectorElementFromEditor (UnityEditor.Editor editor, System.Boolean reuseIMGUIContainer) (at <420b942f64794d4da66420603f126f7b>:0)
    59. UnityEditor.UIElements.InspectorElement.Reset (UnityEditor.SerializedObject bindObject) (at <420b942f64794d4da66420603f126f7b>:0)
    60. UnityEditor.UIElements.InspectorElement.ExecuteDefaultActionAtTarget (UnityEngine.UIElements.EventBase evt) (at <420b942f64794d4da66420603f126f7b>:0)
    61. UnityEngine.UIElements.CallbackEventHandler.HandleEvent (UnityEngine.UIElements.EventBase evt) (at <0050475d167947ea9f166ad030caa84f>:0)
    62. UnityEngine.UIElements.CallbackEventHandler.HandleEventAtTargetPhase (UnityEngine.UIElements.EventBase evt) (at <0050475d167947ea9f166ad030caa84f>:0)
    63. UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.SendBindingEvent[TEventType] (TEventType evt, UnityEngine.UIElements.VisualElement target) (at <420b942f64794d4da66420603f126f7b>:0)
    64. UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindTree (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <420b942f64794d4da66420603f126f7b>:0)
    65. UnityEditor.UIElements.Bindings.<message truncated>
    2:
    ObjectDisposedException: The Unity.Entities.EntityManager has been deallocated, it is not allowed to access it

    This issue happened when we selected an entity in the editor world, and it kept spamming each frame. For informative purposes, we utilize a bunch of custom editor systems and also create/destroy worlds.

    Code (CSharp):
    1. ObjectDisposedException: The Unity.Entities.EntityManager has been deallocated, it is not allowed to access it
    2. Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckWriteAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
    3. Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckWriteAndThrow (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <31d5d65b32ec483292e13e8ae4100b93>:0)
    4. Unity.Entities.EntityManager.GetCheckedEntityDataAccess () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities/EntityManager.cs:76)
    5. Unity.Entities.EntityManager.get_EntityCapacity () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities/EntityManager.cs:152)
    6. Unity.Entities.EntityContainer.Exists () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities.Editor/EntityInspector/EntityContainer.cs:54)
    7. Unity.Entities.DynamicBufferContainer`1[TElement].Exists () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities.Editor/EntityInspector/DynamicBufferContainer.cs:25)
    8. Unity.Entities.DynamicBufferContainer`1[TElement].get_Header () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities.Editor/EntityInspector/DynamicBufferContainer.cs:31)
    9. Unity.Entities.DynamicBufferContainer`1[TElement].get_Count () (at Packages/com.unity.entities@0.17.0-preview.41/Unity.Entities.Editor/EntityInspector/DynamicBufferContainer.cs:39)
    10. Unity.Properties.Internal.ListPropertyBag`2[TList,TElement].TryGetProperty (TList& container, System.Int32 index, Unity.Properties.IProperty`1[TList]& property) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/Internal/ListPropertyBag.cs:130)
    11. Unity.Properties.Internal.PathVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/Internal/PathVisitor.cs:68)
    12. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    13. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    14. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    15. Unity.Properties.PropertyVisitExtensions.Visit[TValue] (Unity.Properties.IProperty property, Unity.Properties.Internal.IPropertyBagVisitor visitor, TValue& value) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:347)
    16. Unity.Properties.Internal.PathVisitor.Unity.Properties.Internal.IPropertyVisitor.Visit[TContainer,TValue] (Unity.Properties.Property`2[TContainer,TValue] property, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/Internal/PathVisitor.cs:116)
    17. Unity.Properties.Property`2[TContainer,TValue].Unity.Properties.Internal.IPropertyAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Properties/Property.cs:129)
    18. Unity.Properties.Internal.PathVisitor.Unity.Properties.Internal.IPropertyBagVisitor.Visit[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyVisitors/Internal/PathVisitor.cs:57)
    19. Unity.Properties.PropertyBag`1[TContainer].Unity.Properties.Internal.IPropertyBagAccept<TContainer>.Accept (Unity.Properties.Internal.IPropertyBagVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:180)
    20. Unity.Properties.PropertyBag.AcceptWithSpecializedVisitor[TContainer] (Unity.Properties.Internal.IPropertyBag`1[TContainer] properties, Unity.Properties.Internal.IVisitor visitor, TContainer& container) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/PropertyBags/PropertyBag.cs:92)
    21. Unity.Properties.PropertyContainer.Visit[TContainer] (TContainer& container, Unity.Properties.Internal.IVisitor visitor, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.Visit.cs:189)
    22. Unity.Properties.PropertyContainer.GetValue[TContainer,TValue] (TContainer& container, Unity.Properties.PropertyPath path, TValue& value, Unity.Properties.Internal.VisitErrorCode& errorCode) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.GetValue.cs:212)
    23. Unity.Properties.PropertyContainer.TryGetValue[TContainer,TValue] (TContainer& container, Unity.Properties.PropertyPath path, TValue& value) (at Library/PackageCache/com.unity.properties@1.6.0-preview/Runtime/Unity.Properties/Algorithms/PropertyContainer.GetValue.cs:185)
    24. Unity.Properties.UI.Internal.BindingTarget`1[TTarget].TryGetAtPath[TValueType] (Unity.Properties.PropertyPath path, TValueType& value) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Elements/Internal/BindingTarget.cs:109)
    25. Unity.Properties.UI.PropertyElement.TryGetValue[TValue] (Unity.Properties.PropertyPath path, TValue& value) (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Elements/PropertyElement.cs:298)
    26. Unity.Properties.UI.Internal.GuiFactory+Binding`2[TFieldType,TValue].Update () (at Library/PackageCache/com.unity.properties.ui@1.6.2-preview.1/Editor/Inspector/Internal/GuiFactory.cs:379)
    27. UnityEngine.UIElements.VisualTreeBindingsUpdater.UpdateBindings () (at <0050475d167947ea9f166ad030caa84f>:0)
    28. UnityEngine.UIElements.VisualTreeBindingsUpdater.Update () (at <0050475d167947ea9f166ad030caa84f>:0)
    29. UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <0050475d167947ea9f166ad030caa84f>:0)
    30. UnityEngine.UIElements.Panel.UpdateBindings () (at <0050475d167947ea9f166ad030caa84f>:0)
    31. UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.UpdateSchedulers () (at <0050475d167947ea9f166ad030caa84f>:0)
    32. UnityEngine.UIElements.UIEventRegistration.UpdateSchedulers () (at <0050475d167947ea9f166ad030caa84f>:0)
    33. UnityEditor.RetainedMode.UpdateSchedulers () (at <420b942f64794d4da66420603f126f7b>:0)
     
  29. raymondyunity

    raymondyunity

    Unity Technologies

    Joined:
    Apr 30, 2018
    Posts:
    122
    @PhilSA A couple of bugs have been fixed around the subscenes and entity names in the upcoming version 0.13 coming very soon. Can you describe a bit more about they way you're converting/creating your entities?
    Entity names should be displayed in the Entity Window.

    @GameDeveloper1111 Search improvements and features are in our plans but for now our priority is to get the full interoperable windows debugging out the door before we improve search. We have also improved the entity counts and information. Expect that in the release after the next.

    @Zec_ Thanks for these bug reports. The first one should be fixed in 2020.2. 2020.2 should be the minimum version in the upcoming release, so beware. For the second bug, we're going to need a bit more information. How you're creating and destroying your worlds?
     
    Egad_McDad and Ruchir like this.
  30. Zec_

    Zec_

    Joined:
    Feb 9, 2017
    Posts:
    148
    My bad for not including version numbers. We are actually using 2020.2.5f1 with Entities 0.17, so that report is actually for 2020.2.

    How? Well, nothing too special or fancy, but here comes some informative points.
    • We use the UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP_EDITOR_WORLD to disable the automatic creation of standardized worlds, giving us control over when to set them up and which system types to inject into them.
    • We don't use DefaultWorldInitialization.Initialize(), we have a separate more or less identical custom implementation that lets us control which systems to inject into each world.
    • We haven't modified anything in the entities package related to this workflow.
    • The internal entities functionality that disposes all worlds when changing between play/editor mode therefore still exists.
    • When creating worlds
      • Instantiate a new World("WorldName")
      • Inject our desired subset of systems via a replicated but customized initialize-method.
      • Hook it into the player loop with ScriptBehaviourUpdateOrder.AddWorldToCurrentPlayerLoop
    • When destroying worlds:
      • Complete all jobs
      • Dispose the world
      • Unhook it from the player loop with ScriptBehaviourUpdateOrder.RemoveWorldFromCurrentPlayerLoop
    • Some other minor notes
      • For the gameplay runtime, the main worlds we utilize are separate server and client worlds, as well as a default world
      • As for the editor world, we don't always have it running. The compiler flag mentioned above disables the automatic creation. We then create and set up the world manually at a later stage, when we need it.
    I'm just curious though, how would our world management affect whether the inspector handles disposed worlds properly or not? My initial thought on the issue was that the inspector simply didn't handle the case when the world for a selected entity had become disposed.
     
    JesOb likes this.
  31. raymondyunity

    raymondyunity

    Unity Technologies

    Joined:
    Apr 30, 2018
    Posts:
    122
    It doesn't, you're correct. It's a bug. Just collecting more information just in case.
     
  32. Sylmerria

    Sylmerria

    Joined:
    Jul 2, 2012
    Posts:
    369
    How find an entity with his index when she has been renamed ? is there a "e:" filter ?
     
  33. xVergilx

    xVergilx

    Joined:
    Dec 22, 2014
    Posts:
    3,296
    IBufferElementData buffers are not redrawn correctly until entity re-selected again (values for editor copied instead of referencing?). Values inside buffer are updated though.
    This happens when buffer length changes, e.g. when adding / clearing buffer. Probably a bug.

    Other than that, debugger looks great.
     
    Tony_Max likes this.
  34. Tony_Max

    Tony_Max

    Joined:
    Feb 7, 2017
    Posts:
    349
    c:Disabled
    doesn't work. Shows no entities

    UPD: Basically it works, but If there was no entities with this tag (empty list) then list wont be updated after entities with Disabled tag was spawned.
     
    Last edited: Mar 9, 2021
  35. jdtec

    jdtec

    Joined:
    Oct 25, 2017
    Posts:
    302
    I just installed this. I was previously using the standard/old entity debugger.

    When selecting an entity there is an initial 3-4 second lock-up of the editor whilst the inspector tab populates for the first time. It was previously instant with the old entity debugger.

    Can it be instant again?
     
    Mockarutan, Tony_Max and JesOb like this.
  36. raymondyunity

    raymondyunity

    Unity Technologies

    Joined:
    Apr 30, 2018
    Posts:
    122
    @jdtec Thanks for the feedback! We're aware of performance around the new inspector. Performance will be better. If it's really blocking your workflow DM me and I can tell you how to switch it back to the old inspector.
     
    jdtec likes this.
  37. iamarugin

    iamarugin

    Joined:
    Dec 17, 2014
    Posts:
    880
    So I have a field of type long in my IComponentData, where some index is packed. So I want to display a string with unpacked index instead of long field, when inspecting an entity with such component data. Is there any way I can do this?
     
    Last edited: Mar 20, 2021
    JesOb likes this.
  38. Enzi

    Enzi

    Joined:
    Jan 28, 2013
    Posts:
    954
    When I hit play and after everything is loaded I have to wait for 11 seconds when the Entities window is open.

    upload_2021-4-24_16-22-28.png
     
    Ruchir likes this.
  39. Neonage

    Neonage

    Joined:
    May 22, 2020
    Posts:
    272
    Same thing, but with constantly instantiating entities (bullets) - the Editor freezes every 3-5 seconds when Entities window is visible.
     
    Ruchir likes this.
  40. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    We are aware and are putting the finishing touches on a major rewrite of the Entities window that will make it a lot faster. The goal of this rewrite is to guarantee that the Entities window will not affect Editor performance in any noticeable way regardless of how much entity activity is going on. We expect to land it either for Entities 0.20 or 0.21. We're aware that Entities package releases have been a bit rocky but hopefully the flow will start again soon.
     
    phobos2077, Orimay, Haneferd and 14 others like this.
  41. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,114
    @uDamian. Awesome. Btw from my understanding, Entities windows has been implemented based on UI Toolkit. I believe it should able to make work at both editor and at runtime. Can u make both Entities Window and System working at runtime too so I can just inspect the same thing at real build like Android and iOS?
     
    thelebaron, Lukas_Kastern and PhilSA like this.
  42. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    This is getting a bit too far into the future so this is a bit speculative, but our current direction is to make it possible for the Unity Editor to connect to a player and display all the same information from that player inside the Editor. Think: Visual Studio's Attach to Process.

    We did think about making the tool windows available at runtime, and with a lot of work it may be possible. However, the user experience will never be that great. I mean, what would the Entities window look like on a phone? How useful would that be?

    I should add that in newer versions of DOTS Editor tooling, all these windows work together to create a workflow in the Editor. So you can go from an Entity, to a System that touches this Entity, to a Query on said System, to a specific Component on that Query, and back to another bunch of Entities that have said Component - all this going through the Inspector. So these otherwise separate tool windows: Entities, Systems, Components, will be more and more linked together as a workflow. And this workflow will get harder and harder to make it a joy to use inside a player, without bringing over all of the Editor with us.

    Hence, why we think the better option is for the Editor to display all the data you want from inside your Player build running on device.

    But curious what everyone else thinks about this approach.
     
    jashan, phobos2077, Haneferd and 9 others like this.
  43. PhilSA

    PhilSA

    Joined:
    Jul 11, 2013
    Posts:
    1,926
    I think that's a fine solution, especially if it can prevent considerably slowing down the development of DOTS Editor
     
    jashan, Egad_McDad, Occuros and 2 others like this.
  44. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,114
    @uDamian. Maybe the simplified version at runtime should be enough. Currently the use case I need is to display the cost of all the systems i.e. time taken for each system to execute at runtime. Not sure the performance for this upcoming DOTS Editor tooling but when I use the current Profiler to profile, the game at real phone will slow down and I can't get the accurate cost of all the systems. Another reason is I can quickly know which system is slow from QA that QA can send me screenshot or video that has the cost of the systems.
     
  45. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    Understood. Ya, I agree this would by itself be useful. That said, we already have an established pattern of using the Profiler to attach to a player. Would it still work if we hade a special ECS Systems Profiler Module that showed System timings?

    By the way, in Entities 0.20+, there are 2 new Profiler Modules for DOTS coming:
    - Entities Structural Changes - see what happened each frame, like entities created, components added/removed, etc.
    - Entities Memory Profiler - see current state of your ECS memory, grouped by Archetypes
    (more details will be posted once 0.20 releases)
     
  46. Kmsxkuse

    Kmsxkuse

    Joined:
    Feb 15, 2019
    Posts:
    306
    That would be interesting but honestly not very useful. Please focus your team's attention on making the in-editor DOTS viewer as robust and feature rich as possible. That is where 99% of the debugging occurs.

    One obvious example over the past few weeks is the ability to view BlobAssets instead of just their int pointer reference.
     
    jashan likes this.
  47. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,114
    It is nice to have. But still I would also like to have runtime version for this ECS Systems Profiler Module because sometimes for all kind of reasons you will fail to profile real phone from Editor like can't detect phone through USB. Editor profiler is designed at the assumption that you can always able to profile real phone successfully.
     
  48. optimise

    optimise

    Joined:
    Jan 22, 2014
    Posts:
    2,114
    Does Entities Structural Changes have a timeline feature like the current Timeline feature that has a scrollbar to jump any point in time for the things that already happened? Btw does Entites 0.18 public release still coming or it's skipped to 0.19 or later?
     
  49. Tony_Max

    Tony_Max

    Joined:
    Feb 7, 2017
    Posts:
    349
    Wow. That's cool. Such tool will be very very useful
     
  50. uDamian

    uDamian

    Unity Technologies

    Joined:
    Dec 11, 2017
    Posts:
    1,231
    I see it no different than a code IDE. Yes, it's more likely you just press Run and debug your program like that. But I would not say it's 99% of use cases. Very often you need to attach to an already running process.

    That said, the out-of-process attaching/debugging will use the exact same features/tools/workflows as when playing in Editor so any improvements we make to our tools applies to both use cases pretty much equally. As such, in-Editor debugging is still very much our focus.
     
Thread Status:
Not open for further replies.