Search Unity

  1. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Official Workflow Case Study - Show us your pain!

Discussion in 'Editor & General Support' started by willgoldstone, Mar 1, 2019.

  1. KarlKarl2000

    KarlKarl2000

    Joined:
    Jan 25, 2016
    Posts:
    602
    One new pain point.

    1) Save C# script ~> Go to Editor to do the 10 minute compile.
    2) Pop back into VS to review C# code
    3) While reviewing code, editor instantly takes back screen view after 10 min. <~ :mad:
     
  2. vertxxyz

    vertxxyz

    Joined:
    Oct 29, 2014
    Posts:
    106
    Here's a pain point that's extremely easy to resolve.
    It's difficult to find Assembly Definitions in a folder full of scripts when the project view is zoomed out.
    These two things sit beside each other often enough, and yet they look so similar at this zoom level!
    Changing the icon to have a different look would save me time in this mundane area of project navigation.
    upload_2021-4-27_16-21-18.png
     
  3. xarismax

    xarismax

    Joined:
    Jul 22, 2015
    Posts:
    11
    Pain: Monobehaviours made as prefab become "Hardcoded" and "rely on a concrete SPECIFIC gameobject". This nerfs the composability of the system as the "gameobject" of a monobehaviour which is prefab cannot be altered.

    This causes 2 monobehaviour prefabs to conflict and be "unmergable" because "they rely on a different gameobject", but unity forces us to "create this empty gameobject" to serialize it because a "monobehaviour cannot exist without a gameobject" arbitary limitation.


    Suggestion: Nested Monobehaviours:
    https://forum.unity.com/threads/req...behaviour-filters-inspector-entities.1103023/
     
  4. imaginationrabbit

    imaginationrabbit

    Joined:
    Sep 23, 2013
    Posts:
    349
    I'm a professional filmmaker currently finishing up an animated feature film made in Unity (trailer here)

    This was my biggest pain point/time waster working on the film in Unity-

    Can you please add the ability to preview humanoid animations to the "Select AnimationClip" window?



    I preview/load in hundreds of animation clips a day for my cutscenes and without a preview in that window it is really a slow, clunky and oftentimes frustrating workflow.

    It would save so much time if the preview that is displayed when browsing .anim files in the inspector was visible in the above window. The file name and path is not useful at all when browsing animations.

    Something like this is what I'm requesting



    Is this possible now? If so, how? If the animations auto-played it would be perfect.

    My workflow right now to load in an .anim file is like this-

    -Search in the project window for an animation so I can see a preview
    -Click the animation clip field to load the clip I want

    * Since I cannot preview the clip within the window I'm loading them in- I have to either remember the name of the clip or keep the clip active in the project window to drag and drop it. Both ways are not good.

    Thank you for your time.
     
    awesomedata likes this.
  5. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,215
    I would say the new nested copy component, is now more steps to do just a simple full component copy.

    Would be great if was readilly accesible like before and have the extras like copy only rotation etc in a menu only.

    This is a huge pain for me, as before was so vastly easier to perform this copy.

    Another issue is the default shader async compilation, in some platforms this default options makes compiling shaders 10x to 20x slower, would be great if was turned off by default as is clearly not working in the general case.
     
  6. tonycoculuzzi

    tonycoculuzzi

    Joined:
    Jun 2, 2011
    Posts:
    301
    I think I've mentioned this to you @willgoldstone, but I'd love the ability to embed Object data reliably within another Object instead of creating an asset for that Object, without worrying about data loss or other issues.

    A few examples:
    • embedding a non-asset Material object within a Renderer to avoid creating a single-use asset for that Material
    • a PostProcessProfile within a PostProcessVolume for unique profiles which don't need to be shared
    • a Scene with embedded NavMeshData to prevent assets being created for each NavMeshSurface
    • a VisualScriptingGraph inside a ScriptMachine (these are very often single-use objects, so them being assets just contributes to asset bloat)
    • a unique Timeline object inside a PlayablesDirector component

    Currently this is half-possible through editor scripting, but it comes with a few issues:
    1. Prefabs will not retain embedded Object data, like Materials. As soon as the domain reloads, this data will go missing.
    2. Scenes with embedded Object data do work, but there's no way to share those objects between other objects in the Scene
    3. Users would need to be a way to view and assign scene-based Objects to other Object fields within the scene (this could be done through a Scene Object Palette window similar to the Hierarchy, or something, which lists all non-GameObject Objects embedded within the scene)
    4. There would need to be a way to inspect and modify these assets without having to double-click on them from an inspector field (this could also be handled by the Scene Object Palette window, where you can select the Objects just like in the Hierarchy, and modify them through the inspector like any other Object)

    I know it's a weird suggestion, but this functionality would help immensely with project organization by preventing asset bloat. It'd also speed up workflows for lots of different cases, especially prototyping. Common asset types don't necessarily need to always exist as assets, especially if they're only ever used in one situation.

    I've had a few ideas for how to implement this, and even went as far as to try doing it myself a few times through editor scripting, but a few types of assets (like Timelines) don't play well with this concept, which makes it even more frustrating. Some asset types work with this kind of workflow out of the box, but the support isn't consistent across all Object types.


    Here's an example of how this workflow could work:

    ObjectFields could be given a + button, which when pressed would create a new embedded Object. The embedded Object would be stored in the Scene, Prefab, or Component without the need for users to create an asset. At a later time, this Object can then be converted into an asset if users deem it necessary.

    Clicking the + button would create and embed a new Material within the given field
    upload_2021-5-25_17-32-52.png

    After embedding, an object could be saved/exported with another field-based button
    upload_2021-5-25_17-37-16.png


    Godot is slowly maturing into a very user friendly engine, and it handles this kind of workflow well. All of their data types can exist as embedded data or assets, interchangeably, allowing the user to choose when to convert an embedded object into an asset when it suits them best.
     
    JesOb, Nexer8, Wattosan and 2 others like this.
  7. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    I hate the "new" prefab workflow, it's been a couple years now and it still makes me steam, I am still not used to it. I hate being told I can't do simple tasks, and they must be done in prefab mode. Simple things like adding a cube to the scene, and then attaching it to a bone for debugging takes all sorts of contortions.
    Best way I know of is create primitive*, open armature tree and find bone, attach primitive to bone, save prefab, open prefab, open armature tree AGAIN and find bone AGAIN, move primitive to where you want it in bone hierarchy, close hierarchy, and in this particular instance that made me finally punch out my frustrations here, reboot after the crash, because now I get to do it all over again.....

    ...all to attach a primitive to a bone, to try to observe something....

    I mean, yeah, maybe the prefab workflow is awesome if you know exactly what you are doing, but when you are experimenting with things, adding objects to the scene, trying to add them to the prefab... what a PITA. I dunno, maybe have TWO hierarchy tabs at once? Never tried that, always been a fantasy, YOLO.

    While I am bitching about prefab workflow, What is the purpose off whiting out the screen in prefab mode? When I am trying to make artistic adjustments, it's terrible. I am trying to see how it blends or even looks, or how a light looks attached to the prefab, and instead I have this whitewashed weird thing going on.

    *(Let's not forget to mention how newly spawned objects in hierarchy seem to have their own will about where they are placed, both within hierarchy, sometimes they will child to a highlighted object, and sometimes they will just appear at the bottom of the entire heirarchy, and in world space, it just seems random to me, so you get to readjust everything in transform, all nine windows, because there is not even a single adjustment per transform function, so say you could just click on "position". press, "0" and viola, it is now at 0,0,0...)
     
  8. Right click on Transform component / Reset.
     
  9. Baste

    Baste

    Joined:
    Jan 24, 2013
    Posts:
    6,273
    You turned it on:
    upload_2021-5-27_12-49-41.png

    Or it's on by default? But, yeah, literally a toggle. There's three modes, all are useful in some instances.
     
  10. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    What if I want to make it all 2's?

    You know what would be really cool? if you could just drag over the word "scale" in the transform window, and it would uniformly scale all three at once, or click on scale, and a dialogue window would open and you could type in the value you want.

    It was that way Long time ago in Blender, but I think they changed it.
     
  11. You mean like this? Unity 2021.2 alpha. :D

    screenshot1.png
     
    Ne0mega likes this.
  12. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    Cool. I've been pretty happy with 2021 being a "QOL build", honestly.
     
    Sinister-Design likes this.
  13. Yeah, I downloaded to try out the new overlay tooling (toolbars and stuff), oh man, I don't want to go back. Now I'm investigating what I lose if I bring up my project to the alpha (I'm at the very beginning, so being even on alpha isn't that big of a deal). I would have to rearrange my timeline though, so I will probably cry a little and then go back to the LTS for now... but I barely saw even code compile dialog during these two days, so promising, for now.
     
    Sinister-Design, frarf and gasppol like this.
  14. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    Add and remove buttons (-, +) are at the bottom of Action/Event lists in inspector. (Other things too, like importing animations, in fact, almost everything that can add/remove has the tabs at the bottom).
    Therefore, when you want to add or remove multiples, you must retarget and refire for every mouse click, as the list shrinks or grows with every add or removal.

    If the (-,+) were put at the top of the list... adding/removing multiples would be like buddah, (also, there is empty space there, so removing the little (- +) tab at the bottom and putting it in the header would save a little bit of that precious screen space).

    Also, I have not peeped 2021.2, but, if you could make these re-orderable, it would be so nice.

    Also, I have not checked the new UI system, I am using TMP UGUI, but... ...it would be nice, I think, if when adding objects, it defaulted to GameObject.SetActive, as I am guessing, 75%(?) of the time, that is what is being done, if using the editor to define actions. Even if it is not 75% of the time, it still has to be chosen and assigned regardless what you do, so making GameObject.SetActive the default state would not add any extra work if a different action is desired.
     
    Last edited: Jun 6, 2021
    useraccount1 and Lars-Steenhoff like this.
  15. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    So this was regarding default numbering of copied objects, and I was happy for a bit, then I realized, I don't want any numbers tacked on the end at all. I fiddled around, and I don't see an option for that.
     
  16. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    Hi, I wrote a version that uses less space and only has to be activated once after domain reload (or when something has changed).
    I am using the "Scene References" Window in a project with ~30 scenes and about 30.000-40.000 gameObjects. Quite a bunch of them have references.


    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEditor;
    3. using System.Collections.Generic;
    4. using UnityEngine.UIElements;
    5. using UnityEditor.UIElements;
    6.  
    7. namespace JL.JLEditor
    8. {
    9.     public class ShowSceneReferencesEditor : EditorWindow
    10.     {
    11.         Dictionary<GameObject, List<GameObject>> _refHolders;
    12.         Dictionary<GameObject, List<Object>> _reffedBy;
    13.  
    14.         GameObject _lockedObject;
    15.  
    16.         VisualElement root;
    17.  
    18.         [MenuItem("Tools/Scene References")]
    19.         static void Init()
    20.         {
    21.             ShowSceneReferencesEditor win = GetWindow<ShowSceneReferencesEditor>();
    22.             win.titleContent = new GUIContent("Scene References");
    23.             win.Show();
    24.         }
    25.  
    26.         // will be executed by unity
    27.         private void OnBecameVisible()
    28.         {
    29.             root = rootVisualElement;
    30.             BuildFor(Selection.activeGameObject);
    31.         }
    32.         void OnBecameInvisible()
    33.         {
    34.  
    35.         }
    36.  
    37.         private void OnSelectionChange()
    38.         {
    39.             if (root == null) return;
    40.             BuildFor(Selection.activeGameObject);
    41.         }
    42.  
    43.         private void OnEnable()
    44.         {
    45.             root = rootVisualElement;
    46.         }
    47.  
    48.         void BuildReferenceDictionary()
    49.         {
    50.             _refHolders = new Dictionary<GameObject, List<GameObject>>();
    51.             _reffedBy = new Dictionary<GameObject, List<Object>>();
    52.  
    53.             // get all monobehaviours, their connections (including GameObjects)
    54.             // and track if any of them was moved to another scene
    55.             // or was deleted
    56.  
    57.             MonoBehaviour[] behaviours =
    58.                 GameObject.FindObjectsOfType<MonoBehaviour>(true);
    59.  
    60.             // get all their fields
    61.             foreach (MonoBehaviour behaviour in behaviours)
    62.             {
    63.                 SerializedObject serObj = new SerializedObject(behaviour);
    64.                 SerializedProperty prop = serObj.GetIterator();
    65.                 while (prop.NextVisible(true))
    66.                 {
    67.                     bool isObjectField = prop.propertyType == SerializedPropertyType.ObjectReference;
    68.                     if (isObjectField && prop.objectReferenceValue)
    69.                     {
    70.                         Object value = prop.objectReferenceValue;
    71.  
    72.                         if (AssetDatabase.Contains(value)) continue;
    73.                         if (PrefabUtility.IsPartOfPrefabAsset(value)) continue;
    74.                         // has value, not an asset, not a prefab, not a Mesh,
    75.                         // must be a scene reference
    76.  
    77.                         GameObject valueGO = null;
    78.                         if (value is GameObject)
    79.                         {
    80.                             valueGO = value as GameObject;
    81.                         }
    82.                         else if (value is Component)
    83.                         {
    84.                             Component valueComponent = value as Component;
    85.                             valueGO = valueComponent.gameObject;
    86.                         }
    87.                         else
    88.                         {
    89.                             //Debug.Log("value is type of " + value.GetType());
    90.                             continue;
    91.                         }
    92.  
    93.                         List<GameObject> refs;
    94.                         if (!_refHolders.TryGetValue(
    95.                             behaviour.gameObject, out refs))
    96.                         {
    97.                             refs = new List<GameObject>();
    98.                             _refHolders[behaviour.gameObject] = refs;
    99.                         }
    100.                         refs.Add(valueGO);
    101.  
    102.                         List<Object> refHolders;
    103.                         if (!_reffedBy.TryGetValue(
    104.                             valueGO, out refHolders))
    105.                         {
    106.                             refHolders = new List<Object>();
    107.                             _reffedBy[valueGO] = refHolders;
    108.                         }
    109.                         refHolders.Add(behaviour);
    110.                     }
    111.                 }
    112.             }
    113.         }
    114.  
    115.         // create visual buttons / labels / objectFields
    116.         void BuildFor(GameObject gameObject)
    117.         {
    118.             root.Clear();
    119.  
    120.             if (_lockedObject)
    121.             {
    122.                 gameObject = _lockedObject;
    123.             }
    124.  
    125.             if (!gameObject)
    126.             {
    127.                 Label pleaseSelectLabel = new Label();
    128.                 root.Add(pleaseSelectLabel);
    129.                 pleaseSelectLabel.style.fontSize = 20;
    130.                 pleaseSelectLabel.text = "Please Select a GameObject in the Scene";
    131.                 return;
    132.             }
    133.  
    134.             VisualElement hor = new VisualElement();
    135.             hor.style.flexDirection = FlexDirection.Row;
    136.             root.Add(hor);
    137.  
    138.             ObjectField selObjectField = new ObjectField("Selected: ");
    139.             selObjectField.objectType = typeof(GameObject);
    140.             selObjectField.value = gameObject;
    141.             hor.Add(selObjectField);
    142.  
    143.             Button lockToggleButton = new Button();
    144.             hor.Add(lockToggleButton);
    145.             lockToggleButton.clickable.clicked += () =>
    146.             {
    147.                 if (_lockedObject)
    148.                 {
    149.                     _lockedObject = null;
    150.                     BuildFor(Selection.activeGameObject);
    151.                 }
    152.                 else
    153.                 {
    154.                     _lockedObject = gameObject;
    155.                     SetLockToggleButtonText();
    156.                 }
    157.             };
    158.             lockToggleButton.style.width = 200;
    159.  
    160.             void SetLockToggleButtonText()
    161.             {
    162.                 if (_lockedObject) lockToggleButton.text = "Unlock";
    163.                 else lockToggleButton.text = "Lock";
    164.             }
    165.             SetLockToggleButtonText();
    166.  
    167.             Button refreshButton = new Button(() =>
    168.             {
    169.                 BuildReferenceDictionary();
    170.                 BuildFor(Selection.activeGameObject);
    171.             });
    172.             refreshButton.text = "Refresh";
    173.             refreshButton.style.height = 25;
    174.             root.Add(refreshButton);
    175.  
    176.             if (_refHolders == null || _reffedBy == null) return;
    177.  
    178.             ScrollView scrollView = new ScrollView(ScrollViewMode.Vertical);
    179.             root.Add(scrollView);
    180.  
    181.             Box reffedByBox = new Box();
    182.             scrollView.Add(reffedByBox);
    183.  
    184.             Label reffedByLabel = new Label("Selected Object is Referenced by:");
    185.             reffedByBox.Add(reffedByLabel);
    186.  
    187.             if (_reffedBy.TryGetValue(gameObject,
    188.                 out List<Object> reffedByList))
    189.             {
    190.                 // show input blocks
    191.                 foreach (Object reffedByObj in reffedByList)
    192.                 {
    193.                     Box group = new Box();
    194.                     group.style.marginBottom = 10;
    195.                     reffedByBox.Add(group);
    196.  
    197.                     //Label blockType = new Label();
    198.                     //group.Add(blockType);
    199.  
    200.                     ObjectField objectField = new ObjectField();
    201.                     objectField.objectType = typeof(Object);
    202.                     objectField.value = reffedByObj;
    203.                     group.Add(objectField);
    204.                 }
    205.             }
    206.  
    207.             if (reffedByList == null || reffedByList.Count == 0)
    208.             {
    209.                 Label noRefsFoundLabel = new Label();
    210.                 reffedByBox.Add(noRefsFoundLabel);
    211.                 noRefsFoundLabel.style.fontSize = 20;
    212.                 noRefsFoundLabel.text =
    213.                     "Object is not referenced by any other object";
    214.             }
    215.  
    216.             Box reffingBox = new Box();
    217.             scrollView.Add(reffingBox);
    218.  
    219.             Label reffingLabel = new Label("Selected Object references:");
    220.             reffingBox.Add(reffingLabel);
    221.  
    222.             if (_refHolders.TryGetValue(gameObject,
    223.                 out List<GameObject> subRefsList))
    224.             {
    225.                 foreach (GameObject subRef in subRefsList)
    226.                 {
    227.                     Box group = new Box();
    228.                     group.style.marginBottom = 10;
    229.                     reffingBox.Add(group);
    230.  
    231.                     //Label blockType = new Label();
    232.                     //group.Add(blockType);
    233.  
    234.                     ObjectField objectField = new ObjectField();
    235.                     objectField.objectType = typeof(GameObject);
    236.                     objectField.value = subRef;
    237.                     group.Add(objectField);
    238.                 }
    239.             }
    240.  
    241.             if (subRefsList == null || subRefsList.Count == 0)
    242.             {
    243.                 Label noRefsFoundLabel = new Label();
    244.                 root.Add(noRefsFoundLabel);
    245.                 noRefsFoundLabel.style.fontSize = 20;
    246.                 noRefsFoundLabel.text =
    247.                     "Object does not reference anything";
    248.             }
    249.         }
    250.  
    251.     }
    252. }
     
  17. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    In case anyone else is wondering where this menu can be found ... after 8 years of game dev, I just had to deal with it and it's horrible. xD
    This is the menu to define the script execution order, located in "Project Settings/Script Execution Order/ '+' icon with down arrow".
     
    NotaNaN likes this.
  18. oxysofts

    oxysofts

    Joined:
    Dec 17, 2015
    Posts:
    124
    Man I hope that gets fixed really soon. Ever since I saw this I couldn't help but wonder.. why? It is clear to me that a lot of Unity's tools have not truly been battle tested very much, much less with a large bulk of editing and test cases where the variables grow to the extreme.
     
    Last edited: Jun 10, 2021
    Ne0mega likes this.
  19. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    Creating new object in hierarchy with an object in hierarchy selected, and having that object then put itself at THE VERY END of the hierarchy is HORRIBLY MEAN. I then have to grab said object, and drag it ALL THE WAY BACK UP THE HIERARCHY. BUT ITS NOT OVER YET, I must also READJUST the position and scale of said newly created object. All to create a cube child.

    I have no idea why sometimes it puts it at the bottom of hierarchy, and others it creates as a child as intended. I just tried it three times, and for some reason, the third time it did as it should. But truth of the matter is, it should NEVER put it at the bottom of the hierarchy when any object besides the scene is selected.
     
    Last edited: Jun 10, 2021
  20. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    More hierarchy workflow:

    when trying to move things around in hierarchy, if one of your objects are "open" "showing children", and you try to drag to reorder, you can not drag an item underneath that object without it becoming of child of said object.

    So, what would be nice is, when dragging one object beneath another object, if you pulled your mouse all the way to the left, and into the hierarchy margin,the little blue line would magically extend to the left margin, or perhaps extend and change color, maybe play a little audio snippet from space odyssey 2001, and a spark particle effect... whatever... the point is, you pull your mouse into the left margin of the hierarchy view, and then when you release drag, the object reorders beneath the parent object under which the line is displayed, as opposed to becoming a child of it.

    otherwise, reordering in hierarchy is a tedious exercise in closing an object, dragging to reorder, then re-opening the object to get back to where you were, when it could be one easy trick AAA studios hate.
     
    Sinister-Design likes this.
  21. xT1TANx

    xT1TANx

    Joined:
    Nov 16, 2017
    Posts:
    17
    Hello, I recently updated to Big Sur and 2020.3.5f1.

    When I click build the export as field is gone. WHY!?
    I now have to do so many steps to export a build. Click on new folder, rename the thing, click choose. Before it was so easy to increment the build number and be done. Why would you remove this? It doesn't seem to be system wide.
     
  22. moatdd

    moatdd

    Joined:
    Jan 13, 2013
    Posts:
    178
    Please allow us to reorganize the Create menu.
    upload_2021-6-12_14-2-46.png
    I haven't seen such disorganization in a menu since the Old Blender UI
     
  23. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    So much this!

    99% of the time I just create Materials, Dialogue Tree Assets and ScriptableObject Variables, everything else just gets in my way.
    If this "create" thing would open up with those three options only and everything else hidden behind some expandable thing, I could save a bunch of minutes per day.
     
    moatdd likes this.
  24. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    I learned how to create my own custom C# script templates, and made about 6 of them, so excited, then I spent hours trying to see if there was a way to hide them in a sub menu, like you can with scriptable objects... ...no such luck to my knowledge, so now my Create Menu is taller than my screen.
     
    moatdd likes this.
  25. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    All tooltips should have the hotkey combo listed as well, and not "F", like some programs do when they mean "alt-F", but "alt-F".
     
  26. moatdd

    moatdd

    Joined:
    Jan 13, 2013
    Posts:
    178
    I hate getting the rug pulled out of under my feet when the documentation tells me:

    "oh hey we have this brand new v2 version of this thing that is far superior than v1 (even though v1 is clunky and has the bugs worked out) and v1 is deprecated now so you should all use the v2 thing"

    Then I try using the v2 thing and it's 98% complete, but it's 2% incomplete.

    Like eating a delicious chocolate cake with 2% broken glass in it.

    Then that 2% broken glass shard gets caught in your throat and you have no idea how long you have to wait before help arrives so you have to reach in there with your own fist and try to pull it out yourself (creating your own workarounds and substitutes for the missing features)

    And that's how assets on the Asset store are created! :D Everyone wins!
     
  27. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    Contextual Shortcuts, please. This thread is long, idk if it was already mentioned but I don't need a specific Hotkey for setting frames in the timeline, if the Timeline Window isn't even opened anywhere.
    Same for 99% of shortcuts. ProBuilder, ProGrids, AnimationWindow, ...
    But when I use them, I don't need all the SceneView specific shortcuts like "save/restore selection", "moveObjectToView" and so on.
     
  28. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    In the animation preview window, you have the sun shining from behind the model, making it kind of hard to see the model. The sun should be in front of the model from an angle. And boy is that animation preview window camera control painful, as is the editor window camera.
     
  29. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    Don't bother.

    Animation re-importation is a nightmare. It is not much work, if done once, and all animations are ready. But what if you are constantly updating the animations?

    There is a warning in the manual:

    Warning: If you manually change any properties of the imported clips, Unity will not import new animation clips when the source Asset changes. For example, if you create a new clip or change a clip’s timing on the Animation tab, that clip list will not change even if you add clips to the FBX file outside of Unity. Unity will ignore the new animation clips.

    But, please, make it so this warning can be removed.

    This is how I do it, I have read elsewhere you could just delete the meta file, but I have not tried that yet, because one of the reasons I just don't delete the FBX and then import a new one is because I want to keep all my other libraries that draw from the skinned mesh renderer as they are. If I delete FBX, write new FBX, I then have to re-assign all my skinne dmesh renderers in my various scripts.

    The big problem is the animations list does not refresh when a new FBX file with new animations overwrites the old one.
    I have tried toggling animation import on/off. Nope, old list of animations is kept.

    The only method I have been able to get it to work correctly, is to remove every single animation from Animation Import Settings in the inspector tab, one by one (which recalls the horrors of this: https://forum.unity.com/threads/workflow-case-study-show-us-your-pain.637552/page-11#post-7211446)

    Turn off import animations. Apply. Turn on import animations. Apply.

    Then go in properties window, and click on one of the animation clips in the properties window. Now the Animation Import Settings repopulates the entire list of animation clips in the FBX file. However, you then have to go through each clip and reapply properties, like Loop Time, (which is best done by opening two inspector tabs, if the animation clips list is long).




    TLDR: Animation Import Settings viewed in Inspector Tab needs a sub-program that has a little button called "Refresh Animations", this will delete all Animation Clips in the list, re-import the new ones, while keeping the same Animation Clip properties if possible for new animations with old names. Currently refreshing or re-importing the FBX does not do this, as it will retain the old list of animations.
     
    Last edited: Jul 9, 2021
  30. Baste

    Baste

    Joined:
    Jan 24, 2013
    Posts:
    6,273
    You're aware that you can make a new animation in the importer and then select the new clip from the fbx file as the source clip, right?
     
  31. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    Good to know. Now I see "source take" is not the same as the animations listed in the project screen. Now it all makes sense. I am happy to be very wrong about this one.
     
  32. moatdd

    moatdd

    Joined:
    Jan 13, 2013
    Posts:
    178
    I just figured out a nice way to solve this issue:

    Users can add nodes to the shader graph by hitting the Space bar and then begin typing the name of the node and the search results are auto filtered.

    All I want is to be able to click a folder in the Project view and hit a hotkey to bring up the Create dialog, and then begin typing and have auto-filtered search results.
     
    frarf and John_Leorid like this.
  33. Rowlan

    Rowlan

    Joined:
    Aug 4, 2016
    Posts:
    4,097
    omg it got added :eek:

    sync.png

    :):):):):):):):):):):):)
     
    Sinister-Design likes this.
  34. Cameron_SM

    Cameron_SM

    Joined:
    Jun 1, 2009
    Posts:
    915
    Please fix:


    The McDonalds POS system is easier to navigate than this monstrosity. From a purely cognitive perspective, even experts with training can only comprehend about 12 items at once on a single axis (FYI maccas never exceed 10), and only then when they've been exposed to those items multiple times before.

    Might be worth looking at apps like Maya or C4D that have different setups for different workflows.
     
    IOU_RAY likes this.
  35. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    I think this is on the roadmap already (more or less)
    upload_2021-7-26_15-9-18.png
    https://unity.com/roadmap/unity-platform/editor
     
    lilacsky824 and Cameron_SM like this.
  36. JesseSTG

    JesseSTG

    Joined:
    Jan 10, 2019
    Posts:
    236
    Optimize Unity. Make it faster. Drop everything else until its incessant stalling is fixed, otherwise no other improvement will matter.
     
    Neto_Kokku and nasos_333 like this.
  37. BOXOPHOBIC

    BOXOPHOBIC

    Joined:
    Jul 17, 2015
    Posts:
    505
    It's 2021 and a new project still starts in Gamma space :confused:
     
  38. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    Gotta keep that early 2000's look alive.
     
    moatdd, NotaNaN and BOXOPHOBIC like this.
  39. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    I want the option to ignore too small transform values.

    This looks at the first glance as if Y is 8.49,

    when it is actually:

    just a floating precision error, it is basically 0.

    Let us set a minimum, I will never ever move any object less than 0.1 Millimeters, so the smallest value I will ever type is 0.0001 everything below that value should be displayed as 0.
    The box displaying the number could have an outline or the Y could have a different color or something, maybe even a "0 appr." in the Value Field, I am open for any solution - but the current way of displaying it, is extremly confusing.

    It should be clear at first sight that this number is basically 0 and it shouldn't look like it is 8.49.
     
  40. moatdd

    moatdd

    Joined:
    Jan 13, 2013
    Posts:
    178
    What I'd really like to see is the ability to set it to snap to discrete values so I can CTRL+Drag on the value to have it round the value while dragging on it, and to set the precision of the snapping as well.

    Sometimes I want to drag a value to change it by steps of 0.0025 and it jumps by big steps of 0.03
     
    Ne0mega likes this.
  41. Ne0mega

    Ne0mega

    Joined:
    Feb 18, 2018
    Posts:
    738
    They all need shift+drag for precise/ slow precision, ctrl+drag for int increments, and perhaps alt for 1/16 or 1/32nd increments or .1 increments.
     
    FernandoMK likes this.
  42. FernandoMK

    FernandoMK

    Joined:
    Feb 21, 2017
    Posts:
    178
  43. JesseSTG

    JesseSTG

    Joined:
    Jan 10, 2019
    Posts:
    236
    Yes, but I mean allocate more people towards it. I think they should suspend most work on experimental new features (that aren't approaching pre-release) to focus on this until people stop complaining about it.

    Note that I am not suggesting that they suspend all work on new features (I don't think that's realistic). Just ones that aren't close to being ready for prime-time or that fit narrow niches.
     
  44. LightStriker

    LightStriker

    Joined:
    Aug 3, 2013
    Posts:
    2,717
    Gotta love this thread... Been using Unity for 10 years now. In the first few years, I gave a 10 pages list of productivity improvement. Almost none got implemented.

    After all those years, we still have something like this;
    upload_2021-8-10_22-57-10.png

    I mean.. Took 9 years to get a freaking copy-paste function in the inspector. Why even bother.
     
  45. LightStriker

    LightStriker

    Joined:
    Aug 3, 2013
    Posts:
    2,717
    Or this:

    upload_2021-8-10_23-7-51.png

    Or this:
    upload_2021-8-10_23-8-13.png

    Or this:
    upload_2021-8-10_23-9-3.png

    Or this:
    upload_2021-8-10_23-10-44.png

    (My mouse is on the scroll UI, why does it freaking highlight a gameobject??)
     
  46. april_4_short

    april_4_short

    Joined:
    Jul 19, 2021
    Posts:
    489
    My pain points of using Unity are the lack of attention given to fixing pain points of Unity, by Unity.
     
    BOXOPHOBIC, IOU_RAY, JesseSTG and 2 others like this.
  47. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    I don't understand the first picture? You can disable the "make everything grey except the search-filtered objects". (the setting is in the preferences)

    Second picture -> the gizmos dropdown already has a search bar in V2021.1 . (but unfortunately there is no way to disable/enable all icons, but there is one for all gizmos)
     
    Last edited: Aug 12, 2021
  48. LightStriker

    LightStriker

    Joined:
    Aug 3, 2013
    Posts:
    2,717
    Where is it? Must be new in 2020 or 2021 (we are on 2019).

    The gizmo panel; it should only list the class that do have gizmos or something. I'm on a Ryzen 3950X, and this panel is SLOW. And even then, any panel that ends up with a long list should be done properly.
     
    april_4_short likes this.
  49. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    Probably V2021.1 upwards, idk.

    Would be awesome if they could group the Gizmo Panel by namespace, because right now, packages are mixed with my scripts. In V2021.1 only classes with icons / OnDrawGizmos method are listet.

    99% percent of the time I am not interested in icons, I just want to change what scripts show their debug drawing. Would be cool if we had a toggle like "ignore icons" or something AND the namespace groups. Then I think, this window could be somewhat useful?

    Or just open the API to the "AnnotationWindow" so we can roll our own, custom solutions (which should be done, no matter if any of the above features are implemented).

    But yea, right now, this gizmo panel window is a pain point.
     
  50. John_Leorid

    John_Leorid

    Joined:
    Nov 5, 2012
    Posts:
    643
    Scene Groups would be pretty cool to have.

    upload_2021-8-15_12-5-29.png

    When working with multiple scenes, there is no option to hide some of these, except for removing them from the hierarchy entirely. If we could group them (like adding a parent on top of them, then collapsing it), it would be way better to load/unload them and to have a clean hierarchy.

    If we add 4 more levels, I will have to scroll to just see the scenes.

    Also:
    Please give us the option to keep scenes collapsed after loading them. Right now I have to select a bunch of scenes, click on "Load", then on the three dots on the top right corner of the hierarchy -> "Collapse All", then select another set of scenes and so on.
    If I want to expand them, I will do it on my own.
     
    useraccount1 and Lars-Steenhoff like this.