Search Unity

We recently shared our roadmap for 2021. Now we invite you inside Unity to meet some of the teams working towards these goals. In this first post of a new series, we are zooming in on a team that operates under the codename “Quality of Life.”

Our Unity 2021 roadmap explains our priorities for next year. We’re committed to updating production-ready features and delivering key new features based on what you have told us you’re missing from Unity. But we’re equally determined to improve workflows and your overall quality of life when working in the Editor.

This post is the first of a series giving you a glimpse behind the scenes. You’ll meet some of the teams working on those initiatives, get to know what drives them, and see the progress they’re making. In this first post of a new series, we’re zooming in on a team that operates under the internal codename “Quality of Life.” I met with Aras Pranckevičius, who leads the Quality of Life team, and Martin Gram from the Product team to learn more about the initiative. 

What is Quality of Life?

We all want a better quality of life. At Unity, we strive to improve the quality of life for our users. But what does that actually mean? It’s not just about stability, fixing bugs, and avoiding regressions. When we talk about Quality of Life (QoL), we mean all the little things that make up the user experience. We mean aggregate workflows and an intuitive interface. We want to improve your productivity and let you focus on your creative process.

“This means fast iteration times, reduced interruptions, and overall improved efficiency,” says Martin Gram, Unity Director of Product.  

In recent years, the common uses for Unity have exploded. To serve users across many job roles and industries, we kicked our innovation into high gear. Unity now offers a vastly increased arsenal of tools. This has obviously led to an increase in complexity, and sometimes the user experience can be inconsistent from feature to feature. “With the QoL initiative, we’re focusing on bridging these gaps and bringing more polish to the experience of using the Editor overall,” explains Martin. “As we said in the recent roadmap blog post, we’re committing to doing fewer things but doing them better.”

A team that sets higher standards

While every team at Unity is focused on quality and contributes to this mission, this task force works across teams and is dedicated to the small improvements that often live between teams and feature areas. Aras formed this special squad about a year and a half ago. Much like the Optimization Team focuses on performance, the idea was to focus on quality of life as a feature in its own right.

Today the team is seven people, based in Kaunas, Lithuania. While they work with R&D teams across Unity, their closest partners are the Optimization Team, Scene Tooling Team, Quality Assurance, Product teams and Internal Productions team. Five of the team members originally came from Customer QA, which is not a coincidence.

“Having been on the frontline means the team has seen a lot of user reports. They have a lot of insight into what can be streamlined. Customer QA spends a lot of time reproducing customer bug reports, which means that their primary background is in using Unity, not just creating tools,” explains Aras.

Five of the seven team members. From left to right, top: Paulius, Aras, and Lina; bottom: Justinas and Ignas.

The idea for the team crystallized when they were working on implementing several version control improvements, consisting of a number of UX and integration improvements. For example, fixes to our Perforce integration include an automatic reconnect attempt if a Perforce connection is lost. A new Version Control bar at the top of the Inspector window lets you do additional operations like Add, Lock, Unlock, and Submit, among other improvements. You can now right-click to copy the values of disabled Inspector fields. As Aras explains, “These improvements were examples of features that had been requested by users for a long time. Our team quickly expanded its scope to other features as well – not so much in terms of adding more functionality but rather polishing and improving existing workflows.” 

The team mission is simple: to continuously add improvements which make the product more pleasant to use. This means helping to make the Editor more intuitive and optimizing workflows. “Unity should be a joy to use. We want creators to waste less time and be more productive.”

The team sets its priorities in close collaboration with the Product team, and is open to suggestions from all sides, including the forums, social media, and Unity’s Internal Productions team that works on demos such as the Megacity and DOTS Sample. 

Better QoL with Unity 2020.2

With the latest TECH Stream, Unity 2020.2, now available in beta, several Quality of Life improvements were added.

Unity 2020.2 comes with a lot of smaller quality improvements across the Editor. The Scene move/rotate/scale handle lines are now thicker and configurable. The Mesh inspector can now visualize blend shapes. Scripting Defines in Player Settings is now displayed as an array. You can  drag multiple Prefabs into the scene simultaneously, and use Frame Selected to zoom into the pivot point of an already framed object.

Aras’ favorite improvement in Unity 2020.2? Arrays and Lists in the Inspector are now reorderable. The attribute [NonReorderable] can disable this. It’s a minor feature but a great example of a small change that many users have been asking for in forums and on social media – it just makes it easier to manage your array or list elements with a few clicks.

If you want to learn more about what’s available now in the beta, check out the blog post and join us for a webinar on October 8.

What to expect in 2021

Looking ahead at the road to 2021, the team’s plans are to continue its momentum and have their sets on several more improvements. But Aras also stresses that the journey doesn’t have a final destination. Improving Unity is a never-ending process. The team will increasingly collaborate with the beta program and source community input in general.

Here’s a taste of three things to come in Unity 2021: 

LODGroup inspector improvements will allow you to view LOD relative screen size percentages in table-formatted view (Label, Value) so you can input precise values. The LOD Group inspector supports multi-select editing and displays triangle counts for LOD levels and triangle count changes between them; it also exposes the object local space size setting.

Editing LOD transitions with multiple LODGroups selected

Overview of mesh complexity between different LOD levels

Enter Play Mode time improvements are related to the optimization of the mesh static batching process that happens upon entering play mode. In our tests, this means that for a scene with 30,000 static objects, entering play mode is now faster by about two seconds.

There are also texture import time optimizations where the work is ongoing but some of the improvements have already landed into 2021.1. These will help speed up the longest part of asset import time. 

These improvements are representative examples. “They are small things that make a big difference to people’s workflows. When millions of users repeat a task multiple times per day, every second or mouse click really does add up,” Aras concludes.

What improvements would you like?

Are there improvements you would like to see in the Editor? Any feature enhancements that would make your quality of life better in the Editor? Let the team know in the comments or in our forums

Want another peek behind the scenes?

This is the first of several dev diaries we’ve planned to introduce you to some of the people working on future versions of Unity and give you a glimpse of their inspiration and drive. Tell us in the comments below if you would like us to cover any specific teams and feature areas in future blog posts.

43 replies on “The road to 2021: Team “Quality of Life””

– Better play/pause/step buttons in the top middle. Example: combined ‘Play/Pause’ button, new ‘Stop’ button
– To prevent accidental deletion of items: confirmation messages for deleting items in the scene view or hierarchy window (these should also be options that users can switch off if they don’t like/want them)
– Visibility and/or Lock toggles for items in the Hierarchy window (I currently get this functionality in a paid add-on but would prefer it to be native / free).
– Folders in the Hierarchy window instead of using empty game objects.
– Undo option to bring back a deleted item in the Project window
– Clickable icons for Save / Save Project, perhaps next to the icons for Move/Scale/Rotate/etc

-Separate render layers and physics layers.
-ability to “lock” prefabs so the hierarchy cannot be expanded. Important for large teams. don’t want X prefab to have sub objects moved etc…
-make focus work in scene view. 99% of the time it zooms you somewhere completely non-sensical
-Make Start() deterministic. Right now under heavy load Start() is often skipped. (Awake and Enabled are always called)
-Callback for when something leaves a trigger due to destruction.
-allow deletion of objects from nested prefabs. I inherit from cup with handle and can’t delete the handle.

the majority of the time when using imported fbx animations, I set the rig to Humanoid. but then animations look pretty messed up and have no choice but to individually set..

1: Root Transform Rotation bake into pose = true
2: based Upon = original
3: Root Transform Position bake into pose = true
4: based upon = original
5: Root Transform Position Xz Bake into pose = true (if not a walking, looping)
6: based upon = original

I have to do this for each animation, just so i can preview it before deciding to use it.
This is tedious and takes a lot of my time up.
Allowing us to access this would be helpful if you cant be bothered to do it.
or have it be a profile setting option.

I would really wish Unity had an out-of-the box set of basic creator features and assets like water, decals, rain, grass, state-of-the-art terrain etc. It is untenable to require creators writing or buing crapy assets for basic 3D features. I would also like there would be one Unity version and one type of assets usable everywhere. The current fragmentation of versions – URP/HDRP/Standard and non-working broken assets is a nightmare.

PLEASE make the window lock button turn red when it is in a locked state so it is better visible! It is super small and hard to see but a different color like red will make it much more apparent at a glance.

Being able to copy multiple lines from the console is fantastic, but it’s *really* frustrating that there’s no way to disable stack traces when copying. Most of the time I don’t need the full stacktrace — I just want the text of the log.

Right now I have to paste it into a text editor and manually delete the stack trace for each line. :(

@Aras Pranckevičius:
As part of “Quality of Life” improvements, can Unity add to MonoBehaviour initialization event for inactive GameObjects? There is a BIG HOLE in Unity’s script life cycle -> Start and Awake are called only for active objects. MonoBehaviour constructor is nasty can of worms, so we need safe initialization event for inactive objects.

@Aras Pranckevičius:

Plus, can Unity open source its Mesh.RecalculateNormals() implementation? It would be great help for anyone creating applications with procedurally generated graphics.

@Aras Pranckevičius:
Plus, we need ability to change dynamic batching size limit. Currently it is hardcoded as 900 vertex attributes and no more than 300 vertices and you need source code license to change these limits. We need a way to change these numbers from the editor.

Does ‘Quality of life’ mean extremely long app load times when using URP 9 or 10 in 2020.2 beta? I think not.. not impressed with regressions in 2020.1 and 2020.2

A bug report with details (URP package version, which platform, which graphics API, .load times before/after) would definitely help — I know nothing about URP.

In my opinion, a first great QoL improvement would be to allow the user to automatically import any asset from the Asset Store in the current project into a specific subfolder defined in the Project Settings, that folder could be called “_3rdParty” by default for instance. Same while importing custom packages, it could be into a different path also set in the project settings.

Second small improvement: add a horizontal scrollbar or lateral focus to Project/Hierachy tab while looking for an asset/GameObject while searching in the tree. This could avoid expanding the window…

A big yes for the first one. When you are using lots of assets from the asset store your project starts becoming a monster. And if you change the position of the asset, when you update it, it will install it at the initial location instead of the “changed one”

Thousand times yes! It is really difficult to work on a project that relies on many 3rd party assets.

A huge QoL improvement for me would be to just stop refreshing the project when I hit the close button. If I’m working on a large project, I always turn off the auto-refresh as importing and compiling can take up to or over a minute… and I’m often switching between development branches, or there can be build scripts that only work when Unity is closed. It’s infuriating when I hit the close button and have to wait for Unity to do a bunch of work that I’m only going to revert.

1. Active “kill” button, to stop execution of a deadlock code in play mode.

2. Responsive UI, when Unity builds player. Right now you can’t kill WebGL compilation (sometimes it takes ages to click “Cancel” button).

3. Scene become “dirty” constantly, even without any changes (mostly because of UI resize). Especially annoying in unit testing and git version control.

Good but QOL must mean getting rid of bugs and too many are present in 2020.
Hard to use HDRP without getting red errors in the console – bugs reported when able to recreate

Please make it possible so we can navigate the editor with keyboard easier.

Allow for example to focus the project, inspector and hierarchy windows by pressing shortcut keys. Also when focused, please make it so we can navigate on objects using arrow keys in case of hierarchy and project and tab in the case of the inspector.

Have feedback for pressing play no matter if the editor is compiling. I can’t count the amount of times I’ve double pressed that button twice, meaning unity will first start entering playmode then immediate exit again. It sounds like a small complaint, but when you have done it several times a day in a project that takes a long time to enter playmode – you will understand my pain.

Agreed. The issue is also that everytime you’re in that “did I or did I not click” state of mind, you risk being momentarily distracted, which potentially leads to more time lost.

+1 This. Don’t lock up that button on assembly reload. Run it on a separate thread or something but it needs to be responsive.

+1 on this. It is also possible in some very rare occasions for the play button to appear as if the game is running even though it isn’t when accidentally clicking it during domain reload.

Speaking of Quality of Life, make it so we don’t need to download the Android SDK after every patch.

This is a big yes! Separate the SDKs into Unity Hub so we can upgrade to the latest LTS version without needed to redownload all the SDK components that we want

It would be great to extend this thinking to Unity Services. I imagine there are many at Unity who use the editor all the time but never or rarely use the dashboard, even during Hackweek.

My god – this!

I can’t even imagine how many simple UX problems I found in unity services dashboard. First that comes to my mind, is a “button” instead of a “link”. On 99% websites, you can click on menu/tab/card item with middle mouse button, to open it in a new card. In unity dashboard, you can only click these buttons with left button, and open them in the same card.

@LeonhardP I posted to that forum on Wednesday, no reply yet. Nobody from Unity responded to the other thread there either.

I understand this is not necessarily a QoL change, but while you’re at it changing the LOD Group component, how about adding a secondary mode where the LOD factor is based on distance from the camera, not screen size? For some projects (VR, mobile) this is a much more intuitive way of configuring performance. I have implemented this myself in the past but the overhead is very high when the scene contains a lot of objects, native support would be fantastic.

Did you try it with culling groups API? it has distance bands, but it is still a bad workaround for what should be a native everyday part of LOD management. Other engines offer distance and screen size options.

“Distance based” LOD mode is on a todo list, but I don’t quite know when it will get done.

Great and much needed initiative!

A few more common QoL grievances come to mind:
Adding multiple items to a list
It would be great to be able to add multiple items to a list (e.g. music track 01-05) without losing inspector focus. Right now, I either have to add them one by one or the old trick of 1) Lock Inspector 2) Select all objects and drag them onto list 3) Unlock inspector.

The “static” checkbox
This checkbox effectively hides a bunch of important, but largely unrelated settings. Some have to do with batching, others with lightbaking and rendering, some with occlusion, some with navigation. In my experience, more often than not you don’t want all these off/on simultaneously, but the representation makes that seem like the obvious choice and invites team members to do so. Manually configuring these settings is a massive, time-consuming pain, because you can only do it by clicking the tiny, fiddly arrow next to the checkbox, then adjusting flags one by one, each of which raises a modal dialog (“Apply to children?”). I’ve had to reset to custom-made tools just to stay sane before.

I wonder why these have to be under this obscure header of “static”, since they’re disparate flags that would really make more sense of the actual components they affect. E.g. “why can I check Reflection Probe/Batching static if this object doesn’t even have a a Renderer?” or “My level designer clicked the static checkbox because they wanted this object to batch, but now it’s also a navigation obstacle…” Note that the Lightmap Static toggle already points towards this solution: it is (inconsistently) also exists on the MeshRenderer, from where it somehow sets the GameObject’s flags.

I understand the above suggestion might be a more invasive refactor than a QoL team might want to tackle. In that case, I would already consider it a big improvement if editing these flags was made less cumbersome and the whole thing was represented as the collection of settings that it is.

You can right click the target component/gameobject and choose properties at the bottom and it will pop out a separate window for that so you don’t have to do the lock/unlock dance.

I am not sure if that was your issue, but felt the need to share if so.

Speaking about QOL improvements, it would be great to get an official solution for prefab lightmaps, instead of a script that is floating around since 2015 sometime on the forums being the only official thing provided to take care of this.

That would make a lot of projects much more feasible, most time I spend on contactor projects is working out how to get around the prefab lightmap issue as large scenes on devices like HoloLens or WebGL projects often require high usage of prefabs to build up and unload parts of scenes. Sometimes having actual scenes is not an option too.

I vote plus one on this. Prefab lightmaps are a crucial thing over the production pipeline in some cases.

Comments are closed.