I'd like to share some issues I've had with the Unity editor while working on multiple professional projects. I've compiled this list with the help of team mates and tried to focus on things that affect multiple members of the team. I really enjoy working with Unity and want to make it better, so please take the criticism as tough love. About Me I've been using Unity since 2013. I studied game design and computer science and have been working at both software and game companies. In total I've worked on about 10 real-world projects (released games, VR experiences, software). The projects were between 6 weeks and 6 months with team sizes of about 10 people. I focus on programming, editor tools, general workflows, all things engine and technical. 1) Feedback loop for the Issuetracker Bug reporting with Unity works well. I've reported dozens and always received fast replies and relatively quick fixes. However, many of these replies are personal emails and the community doesn't benefit from them. Also, labels such as "By Design" or "Won't Fix" need explanations. Some of these issues do show comments, but most do not. Beyond the basic issuetracker system I would hope for improved communication directly from developers in cases where technical details should be shared. 2) Assembly Definition Files are difficult to work with and benefits are unclear This is a whole topic on its own, but in short: asmdef breaks the established special folder name "Editor" convention used by almost all tools and it's a pain to maintain. It would be perfect if we could somehow make it work to define our custom asmdef for our own code but also let third party plugins use their Editor folders. Currently we always need to restructure third party tools which can take a long time. Additionally, the overall performance or workflow benefit of asmdef in Unity is hard to tell. Without having hard numbers (I've only checked compiled seconds in a few projects), I'd say that asmdef is even slower than not using them and the workflow of setting up dependencies has been difficult (mainly because of third party code). 3) Editor navigation is cumbersome The project window and inspector really needs breadcrums and back/forward buttons and shortcuts. In fact, navigating assets feels brittle, because I need to always pay close attention to what I currently have selected. When I edit an important prefab or ScriptableObject and god forbid I click somewhere else in the project, I lose my current context, because I forgot to lock the inspector. Then I go back and try to click the tiny lock icon, now I need a second inspector with a few clicks and then I start editing my data, but everytime I change context I need to start over searching because there is no forward or back button. 4) The Hierarchy window is hard to navigate A real-world project has hundreds, thousands or ten thousands of GameObjects. Drilling down into such a hierarchy is incredibly frustrating, because you either lose all of the context when drilled down too many steps deep into a large tree or you need to start searching from the top again to find other objects. The view gets cluttered easily when many objects are expanded. We often implement a "collapse all" button to start over with all GameObjects collapsed. A common pain-point is editing multiple objects or doing side-by-side views. We've made the experience that we spend much more time switching between objects or comparing different contexts than actually only editing a single item. I'd like to see shortcuts to expand and collapse all scenes but the active one and for collapsing all GameObjects. Additionally, maybe some sort of focus mode like the new SceneView Visibility could help editing many GameObjects. 5) No real folder objects in the hierarchy and no place for data without a position I'd say a third of all GameObjects in our scene are empty and should be positioned at the origin with no rotation and scaling of one. That's at least three things that go wrong when level designers work on the project. We desperately need real folder objects. I'd like to avoid the performance penalty and issues caused by Transforms used only for organization. This also counts for all objects which do not need a physical presence in the scene. GameManagers and data-scripts do not need a Transform and do not need to be part of the hierarchy used for building level objects. As a level designer, I don't want to see all these managers, but as a programmer, I want to configure scene data not related to the virtual 3D world, which brings me to the next point: 6) Unity should provide UI focused on workflows Window layouts are a good start, but the truth is, that something like the Hierarchy window can be focuses more on specific workflows. Our level designers only want to focus on seeing 3D objects in there scene, while programmers look for a separate view of data about a scene. Unreal, for example, provides different windows for editing custom data for the global game, specific scenes and then a different view for editing a level. 7) Moving assets in the project view is slow and feels dangerous I try to keep a clean project for my team, but I understand that most of us are afraid of touching anything related to assets. Moving any asset in the project causes a massive freeze, either because of reimporting, recompiling or assembly reload. It's all just painfully slow and feels brittle. We've had it numerous times that users accidentally dragged an asset and moved it into some unknown folder because they tried to select something but then the editor locked up. The entire AssetDatabase feels brittle and dangerous. I've tried to disable "Auto Refresh" but it only stops recompiling after editing a script, but still hangs when moving assets. 8) Asset search needs to be more powerful I was about to write, that the search is slow, but it has actually improved dramatically compared to a few Unity versions back. Instead, I still think that the search is lacking some love. We can't search for the type of assembly definition file, for example. Also, searching for sprite textures is a common thing for us, but it has an annoying problem: We actually want to search for the sprite texture asset to edit the texture import settings. Instead, it shows the sprite sub-asset which cannot be edited. We want to filter for textures, which are of type sprite. 9) The AssetDatabase and importer API has room for optimizations We write a lot of custom importer scripts, AssetModificationProcessor, SceneProcessor etc. As does Unity and plugin developers. Now we have dozens of scripts in our project which all run on import and each one of them receives all global callbacks for many things which they are not interested in. For example, when importing a custom mesh with special settings, why do I have to check the file path of all other imported models? If we are only talking about a single script, this doesn't make a difference, but with many importers, Unity could gather all the different interests and distribute callbacks for specific assets. I'd like to register callbacks for specific assets, specific scene changes, etc. The current system forces me to write boilerplate code and is quite slow. 10) Assembly Reload is too slow Working with assets, scripts or play mode is incredibly slow. The first playmode enter after opening a project takes more than 30 seconds, later its around 10 seconds, but they add up and feel incredibly unproductive. I've also worked on a large indie project with loading times of exactly 7 minutes per scene in the editor. I know people say this should not be the norm and that "something is going wrong", but I've seen this with every project in the past years. There is no way around building large scenes or doing some amount of processing etc, however it all comes down to assembly reload. Compile times are ok, import times are understandable, but assembly reload takes up most of the times, when it feels like the editor freezes and wastes my time. 11) Almost everything runs on the main thread Some days I feel like I'm getting paid to stare at that tiny lock icon at the bottom right and it makes me smile, but then also cry. As a programmer, I understand that certain things take time, but why can't I work on other things while Unity does it's thing in the background? I want to create script, then while it is being imported, create a GameObject, name it, move it, while I wait for the script to become available. Let me import a few folders of model assets and then start setting up some of those hated folder-gameobjects in the scene. While it's importing, I wouldn't be able to save the scene or change any assets on disk; all of it should be locked to prevent issues, but within the safe memory of a scene, I could get to work already. Or even if all edit-operations were locked, but the UI remained responsive, I could start looking around at some settings and prepare myself instead of contemplating if this freeze will be long enough for coffee. 12) Menus have too many unorganized entries and no icons or colors The create menu is simply too long. A lot of other menus are hard to read. They would benefit from icons or colors. Compare with menus in Maya, for example. There I have much better visual clues which I can remember instead of having to read through the gray list of text. All in all, menus in Maya feel so much easier to read and better organized than in Unity. 13) Configuring (custom) menu items and toolbars needs a rework We can add custom menu items to many places, which is a nice feature, we use extensively. However, hardcoded strings and attributes in code are a pain to maintain. I would like to see this handled more like the new shortcuts in the shortcut manager. Users should be able to show/hide specific menu items, such as third-party tool entries. I want to use Cinemachine, but I hate their giant top-level menu entry which I never use. Now think of all the other developers who add their stuff in random locations. Users need a way to fix this on their end and simply organize menus how they need them. See Maya or Visual Studio. Tool developers should be able to add menus or even more custom toolbars (the single toolbar icon since 2019.1 is nice, but we want more), but users should be able to disable them on their local machine. It would be fine to make all official/builtin menu items fixed and only allow changes to custom menus. 14) ProjectSettings/UserSettings pains For example, StackTraceLoggingType or scripting defines is something I personally configure, but other developers on the team do not want to have this as shared setting, maybe it should be a local user preference. EditorBuildSettings is something important for the project, but many of our developers need their own local build configuration as well. Ideally, we would be able to define all of these important settings as project-wide defaults, but then each user could override any setting on their local machine. I know this would cause problems for beginners, it's indeed a pro feature, but that's what expert settings are for, it could be off by default. 15) EditorPrefs is easy to use but awkward I use them all the time, but I still don't know if it is ok to call into this API every frame. It's hard to measure how fast or slow it is or what happens to memory, etc. How much data does Unity actually write to disk? What happens to all the old data some third-party tools forgot to clean? Is all of this slowly filling up my registry with no way of cleaning up? Instead of writing to some hidden location in the registry, I hope for Unity to change to a system with settings files, which can also be copy and pasted between machines, something we cannot do easily with EditorPrefs. Unity could have it's own set of official user settings files (similar to the ProjectSettings folder), but also provide a way for tool developers to add their own user data to a location which is known and visible and managed by the user. 16) Unity windows are not real OS window There's already a thread about this topic. I too think that Unreal handles windows much nicer. I'd like to see real operating system windows and better layouting/tabbing. Tool developers want to create a full-size uber window with multiple child-panels and undockable parts so users can pick their setup, but they are still managed via the main tool window. Currently, our animator is struggling every day with the fact that the Animation window cannot be truly maximized. It's a floating window with the same size as the monitor, but every so often a user accidentally moves the window instead of adding a new keyframe and suddenly the header bar is off screen. 17) Please optimize editor performance I love editor code and it hurts me to see the Unity source or profiling callstacks for so many functions. The editor is simply slow. Our SceneView and window scrolling is lagging. When I try to profile the editor I only find the usual stuff happening, but all together it's too slow to keep up. I see some of these problems are being worked on right now, such as the calls to retrieve custom attributes all over the place, but overall it looks as if editor performance was low on priority and it should not be. The editor is our main work horse, it needs to run smoothly all day long. It's gotten slower over the years and in our current project it's at a point where our animator is having trouble previewing animations, because the editor cannot keep up 30 frames - and this is for a mid-sized 2D project. Real projects rely on custom tools and Unity needs to leave some room for these tools to execute. For example, a few unnecessary repaints of the Inspector or SceneView may not hurt performance when running a fresh project, but after time we implement custom tools, which all need to be redrawn when specific events are triggered. This is where I try to optimize my personal tools to the point where they are almost invisible, but they still show up because of the amount of tools and things happening. Unity needs to pull on this rope as well and optimize their editor code. I could point-out multiple locations in the source where lists are allocated every frame and easy-to-fix things like this for example. 18) It gets worse with big projects It feels as if all performance issues scale linearly with the amount of assets and the size of scenes in Unity. Big projects are barely manageable in Unity. 19) What is dirtying my scenes and assets? In every project we run into issues where some tool (usually something from the Asset Store) dirties an asset or a scene and it's impossible to tell who the culprit is. I'm hoping for an API which lets us track who is dirtying objects so we can write our own tool to check for issues. 20) Unity sets assets dirty without changing their content ProjectSettings, XRSettings and a few other assets are often set dirty by Unity and show up as changed in version control although their contents have not changed. This is a real problem when working in a team and version control context. It's ok for me to revert a few files each day, but it's also causing confusion for other non-technical team members. This has gotten us to a point, where I've noticed some of my custom tools which generate custom metadata were seemingly not saving data correctly until I realized that our level designer has gotten used to discarding all changed files but their scene files because they are accustomed to Unity changing "random files". 21) Provide an API to add to preloaded assets This is part of a request for making it easier to programmatically add data to the build. We often want to inject tooling or special data which does not live in the project, but gets generated during a build. However, there is no official API to support this. A first step would be to add a public method for adding to the preloaded assets list. 22) Builtin packages can be excluded but Unity and developers cannot check for them The new packages system is great. I also like that I can disable packages and exclude builtin modules. However, this can lead to compile errors with other tools which depend on them; but in fact, they don't. For example, I want to disable the VR and XR modules, because we're developing a 2D and I also want to use Amplify Color as a plugin, which supports VR as one of many use-cases. Now I need to include the VR module although I don't use any VR functionality because there is no API which Amplify can use to check for the presence of said module. Can we maybe add preprocessor symbols for packages? See: https://forum.unity.com/threads/add...processor-defines-for-builtin-modules.698291/ 23) GenericMenu is not scrollable (KeyCode and Animation) Has been brought up many times and still an issue for my team and me. 24) Creating script assets is slow and cumbersome I hope that script creation can be made faster and have a better user experience. When I create a new script asset, it's highlighted for renaming, then I accidentally click somewhere else or need to unfocus Unity because I want to lookup some info to pick a good name for the file. Unity starts importing and I have to wait 15 seconds until the editor-lockup is over. Now, I rename my script, wait 15 seconds again. And then I realize that I need to do it 5 more times (because it's a common thing to create a base class, two variants and editor classes for each). Using the 'Add Component' button in the inspector solves the renaming issue: Here I add the component right where I need it and can also pick a name before the asset is created, but only a single one and it doesn't prompt me for a file location. Instead, new scripts often clutter up the Assets root folder and have to be moved later. This is another problem, mentioned later, because moving assets is so slow. To solve the hassle, we can use third-party tool or create text files outside of Unity and only import once, but I feel these kind of workarounds should be addressed, when dealing with such elemental parts of the engine. The next part is the actual script default content. When coding 8 hours a day, every day, it gets pretty repetitive to change all the boilerplate, so templates to the rescue. And Unity does have some sort of script template, but configuring them feels like a hack. The templates only work for a specific Unity version and need to be copy pasted manually after every installation. What I would like to see implemented: A script wizard which lets me create a number of Unity scripts with templates. It should allow me to specify multiple different templates and save locations at the same time, then batch create all of them. I would provide info such as: script name, location, preset type. The presets can be saved and loaded as a user settings on my local machine, but also as part of the project. 24) VSync In Unity I can set up: 60, 30, 15 frame intervals. What I'd rather have: 60, 30, then, when performance drops below 30, disable VSync. And have the intervals be configurable per platform, because these issue may only be relevant to e.g. consoles. 25) Impossible to have smooth camera movement and animation This is also a separate thread, but I notice it in every new project: In a clean project, almost empty scene, without any sort of performance impact being related, it seems to be impossible to achieve a smooth camera pan or animations. There's always some sort of micro-stutter or frame hitches, which do not show up as spikes in the profiler, but are visible on screen. It must be something about VSync or the way the render loop works in combination with specific monitors, but I can only say, that I recognize Unity games because of those hitches and I don't see these problems with other games and engines. Thank you for listening and I'm looking forward to a bright Unity future! Edit: I know this is a long read and some of these requests are their own thread already or should be in the future. However, I do want to bring the point across that all of those issues combined affect my daily work. Looking at each issue at its own would seem like a minor thing, but many of them happen every day for our team.