Search Unity

Better ContainerWindows

Discussion in 'Editor & General Support' started by AndrewKaninchen, Oct 21, 2018.

  1. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    Are there any plans for changes on ContainerWindows (floating windows)? Currently they are very bad.
    • Icons are way too small. Although this seems to have been caught in the Editor UI redesign thread, so it might finally get fixed.
    • They don't exist as true, operating system level windows. This comes with it's own set of problems:
      • They can't be truly maximized. The maximization button only makes the window size equal to the screen's: the window can still be moved after this and it can't be restored;
      • They can't be minimized;
      • You can't Alt+Tab between these windows and the editor.
    The problems above are just the tip of the iceberg, as the conjunction of all of them even allows you to sometimes simply lose a window. Like this:



    I have a lot of opinions about this topic, so if there is any interest in it, I can try and write some more about it. What I really want in the long term is basically the same funcionality UE4 has in respect to this: webbrowser-like tabs and something like a "CustomContainerWindow" context. These would allow for some more complex workflows which require lots of windows to be MUCH more feasible in Unity.
     
  2. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    87
    Hi Andrew,

    Thanks for the feedback. This is an area we definitely want to improve and I'd really appreciate anything you can share about it. How would you like those windows to show up in the Windows bottom bar?
     
  3. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    In truth, I think the design UE4 has around these workflows is already close to perfect (I can't, at least, think of a better way to do it in terms of usability). I'll try to describe how it works — and how I'd like Unity to adopt something very close to it — and, in steps, try as much as possible to show Unity is not really that distant from it.

    For starters, answering your question, this is how I would like those windows to show up in the Windows bottom bar:

    In the case of separate windows, this is how. It's also exactly how a browser does it:


    In the case of having different Tabs in the same window (also very much recomended), it isn't needed:


    Having just that would already be so much better.
    But it can go beyond that, if you're willing to change some of the Editor's UX. See, the way Unity's and UE4's editors work is a little different in terms of window/tab contexts.

    In Unity, the ContainerWindow (something I only know the name of because of the open CsReference) doesn't have a context in relation to the Windows inside it; it only holds them.

    In UE4, the equivalent to a ContainerWindow context is called an Editor; so you can script it as well, as you would a EditorWindow in Unity, except for the fact that it allows you tu put other EditorWindows inside it.

    For the purpose of example, here's UE4's Material Editor:


    As you can see, it contains quite a bunch of Tabs (UE4's equivalent to Unity's EditorWindows) inside it, and all of them respond to the same context / target: the Material (Shader) being edited.

    It's not as if it's impossible to do something that looks like this in Unity. Ludiq has tried to, in fact, in their Visual Scripting Tool, Bolt:


    But, as you can also see, it's very much a workaround, and loses in UX the familiarity users have of being able to drag tabs around.

    So, with the biggest problems and some possible solutions in mind, I've come up with a strategy/sequence of steps which I think would make Unity incrementaly better in this aspect.

    1. Native Windows
    2. Browser-like tabs.
    3. A new kind of CustomEditor, related to said "Browser-like tabs", available for users.
      • For that, I'm thinking an asset related to window Layouts would be a neat solution. You would create each EditorWindow class as usual (or, even better, using UIElements which is just amazing); then, you would open an instance of your "ContainerWindowEditor", which would be empty. There you would manually add instances of each EditorWindow, positioning them as you saw fit. Then, you would save this layouting as an asset, which you could then reference in the creation of the "ContainerWindowEditor" itself. This is cool because this way you can set a default layout in a data-driven way, also allowing for users of your custom editor to set their own layouts if they're not happy with the default.
    4. Rework of many current native workflows to adapt to the new way. Shadergraph, Animator, I'm looking at you. Possible future general visual programming, you as well. Looking carefully at how UE4 does it I think can give very good ideas.
    I think that's all, for now. I do have some more examples of problems with the current workflows, and other improvements this rework could bring. For one, I think it's necessary as projects become more and more complex, as it allows for more robust workflows, with many windows and little overhead for having them.

    Oh, and as a last note: I realize I am talking a lot about UE4 here, which might make it seem like I am bigger fan of it then I am of Unity; that couldn't be farther from the truth. I really, really enjoy the way Unity does a lot of things, especially when it comes to editor extensibility: Unity's API's for it are so much better, if not as powerful.

    I've come here out of my passion for it, as I hope Unity grows to be even better, in every aspect. It doesn't need to hurt when there are ways in which it wouldn't. It's really, really great to see you guys trying to make it better every day, and this is what brings me hope and motivation to come here and do my part.
     

    Attached Files:

    Last edited: Oct 24, 2018
    Devi-User and Fijit like this.
  4. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    87
    Hi AndrewKaninchen,

    Thank you so much for this detailed post. It's totally acceptable to look at the competition on how they're doing certain things. We actually extensively looked at it ourselves. It is indeed a model which seems to make a lot of sense in most use cases.

    We should resume investigation on those workflows in the coming weeks, we'll share results in this Forum to get your early feedback.

    Cheers
     
    Fijit and AndrewKaninchen like this.
  5. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    Thank you very, very much for the attention. I've been hoping for an upgrade in this area for quite some time now, and thought this was the perfect chance. I've already posted about this in the Shadergraph Feedback forums, as I felt it was one of the workflows that was going to suffer a lot from it and was happy to find there was interest in this area within Unity already, as I previously felt it was ignored and didn't particularly find other people talking about it.

    I'll definitely be paying close attention to this forum and to anything related to it, and offering as much feedback as I possibly can.
     
    benoitd_unity likes this.
  6. Ludiq

    Ludiq

    Joined:
    Mar 6, 2015
    Posts:
    551
    Hi Andrew, hi Benoit!

    Chiming in here, we could definitely see a use for better containers in Bolt.

    Because visual scripting graphs take up a lot of screen real estate, it's often impractical to leave them in a confined tab in the main editor window. Plus, we require a few other utility windows, such as a Variables window and a Graph Inspector.

    The ideal case for us would be for users to be able to create a new Bolt container window that contains all these tabs (Canvas + Variables + Graph Inspector), and let them minimize it like a real OS window. This way, this would be their "Graph IDE" window, while their window layout for scene editing would still live in the main editor window.

    The workarounds I found for this so far are pretty ugly:
    • Implement our own tabbing system to make everything live as pseudo-tabs inside a single editor window. Needless to say this is confusing for users, hard to maintain, and it doesn't work as well as the built-in tabbing system. This is what we did for Bolt 1.
    • Implement a quick "layout-switcher" hotkey that lets users switch their window layout between their normal editor and their "full screen Graph IDE" mode. This lets them configure tabs however they want with the built-in tabbing system, but it's kind of quirky and hacky. It relies on unsupported internal SaveWindowLayout and LoadWindowLayout methods called through reflection. Regardless, this is what we're doing for Bolt 2 so far.
     
  7. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    87
    Hi Ludiq, thanks for jumping in!

    So as a very first step, what would be helpful:
    • Floating panels to behave like native windows
      • Native chrome title bar with proper affordance (Minimize, Maximize, Close)
      • Show up as a separate window in Windows and macOS under the Unity application
      • Support for native OS shortcuts for navigating through them
    • Or course, those floating panels should still allow to add more panels into it to support custom workflows
    Would this solve some immediate user pain?
     
  8. Ludiq

    Ludiq

    Joined:
    Mar 6, 2015
    Posts:
    551
    Definitely! I think this way most people would set up a secondary window as their "Bolt IDE", their equivalent of visual studio, and just minimize it when they're working on their scene.

    One important detail would be that these secondary windows should not automatically de-minimize or focus when focusing on the main editor window.
     
  9. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    One other thing I think would be important is this first step is making sure the already existing Layouts utility works separately per window. That is, if you open a second window, you can set it's layout through the dropdown without affecting the first.
     
  10. benoitd_unity

    benoitd_unity

    Unity Technologies

    Joined:
    Jan 2, 2018
    Posts:
    87
    Got it

    That might be trickier. I don't know how easy to bring that over for other windows. To be considered though.

    Thanks guys
     
  11. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    hey @benoitd_unity, have there been any advances in relation to this? I get more worried the closer we get to the start of the UX changes, as I fear it's way bellow in importance in Unity's list.
     
  12. JoNax97

    JoNax97

    Joined:
    Feb 4, 2016
    Posts:
    4
    I would also like to know about any news here @benoitd_unity. Our team is currently working intensively with Amplify Shader Editor and a couple of other tools and it's becoming a major hassle.
     
  13. Ludiq

    Ludiq

    Joined:
    Mar 6, 2015
    Posts:
    551
    Definitely, we're very much looking forward to this as well with Bolt 2 approaching.
     
  14. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    I can't really get a feel as to if the radio silence is a good or a bad thing. Unity usually only shows us stuff when it's somewhat developed to the point where the proof of concept is there, so it would make sense if that were the case. But I'm also afraid they're just not going to do it? At least not this way? Or not soon? I don't know.

    Wish there was more communication so we could at least get a feel of what they were trying to do, even if not looking at us for feedback in the earliest stages. The feeling I have is benoitd wanted to do so, as he indicated in his first response, but was shutdown by them corporate overlords.
     
    Xarbrough likes this.
  15. frarf

    frarf

    Joined:
    Nov 23, 2017
    Posts:
    9
    Hey @AndrewKaninchen, I feel like it's worth mentioning that Will Goldstone has already said that they're already working on layout tabs (he described it as being similar to workspaces in Blender 2.8). I wouldn't expect it before 2020.1 however.
     
  16. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    Could you link to where he said that? I've seen this thread, where @benoitd_unity himself said they're working on something similar to what was presented there (which is basically Blender 2.8's thing), but I haven't seen exactly what you said anywhere, I think. I'd like to know all the details.
     
  17. frarf

    frarf

    Joined:
    Nov 23, 2017
    Posts:
    9
  18. AndrewKaninchen

    AndrewKaninchen

    Joined:
    Oct 30, 2016
    Posts:
    74
    Nice! Well, I surely hope it shows up somewhere soon. I'd really like to push it towards something more like UE4 like I present here. Layout Tabs are great for Blender because you're working on a single asset at a time, but in a game editor this doesn't apply very much. Well, as long as they're in this direction it's a good thing. Anything is better than the current layout system.