Search Unity

Stats Monitor - Performance Stats & Graph for Unity

Discussion in 'Assets and Asset Store' started by ciathyza, Aug 30, 2015.

  1. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Soon in the Assets Store!



    Stats Monitor is a highly customizable performance measuring tool for Unity3D projects. It displays a number of performance-related statistics as well as a graph that can help you in testing the performance of your game.
     
  2. Tapgames

    Tapgames

    Joined:
    Dec 1, 2009
    Posts:
    242
    Looks cool! Can I see those stats from in-game on an iOS or Android device?
     
  3. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Cheers Tapgames! Ah, the headache-inducing mobile game development! ;) For the initial version only hotkeys are available but I'm looking into how to best integrate it on mobile devices via gestures.
     
  4. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Oh, and here's a sneak image...

     
  5. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    While v1.0 should be out any day now, v1.1 is basically finished and will be committed as soon as v1.0 is out. 1.1 adds a whole bunch of new features and improvements, incl. touch control for mobile devices. Here's a short preview video of how these controls work.

     
  6. Tapgames

    Tapgames

    Joined:
    Dec 1, 2009
    Posts:
    242
    Really cool! Will pick this up when its live. What will the price be?
     
  7. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Glad you find it useful! The price will be $15.
     
  8. Tapgames

    Tapgames

    Joined:
    Dec 1, 2009
    Posts:
    242
    Great price! :D

    Oh this would be super cool if you can use this in VR, when pressing a certain button you get this hud in VR so we can see some stats while we have a VR device on our head.
     
  9. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    I don't have a VR device at my disposal to test that but I wonder would it require anything additional to be done to add support for VR or would that work out-of-the-box?

    Since this widget uses the Unity UI system another possibly for VR would be to have an in-game (i.e. 3D) terminal somewhere and project the view onto it. Not really useful on the long run though. :)
     
  10. Tapgames

    Tapgames

    Joined:
    Dec 1, 2009
    Posts:
    242
    The UI needs to be in world space to work in VR. Then just place this World Space UI in front of the camera where we like. :)
     
  11. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Hi all,

    Stats Monitor v1.1 has been released now and is available at https://www.assetstore.unity3d.com/en/#!/content/44870

    You may be wondering where is version one?

    Version one wasn't actually released since there was some text in the manual that wasn't up to par to the publisher guidelines. Since I already had version 1.1 in the draft queue and prepared all new images, docs, etc. I decided to correct the text for that version instead and asked UT if they still could prioritize the updated release. They did and hence v1.1 is already out which in the end isn't bad at all.

    Hope you enjoy this tool!
     
  12. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    Very very like the 'old-school-style'. Bookmaked. :cool:
     
  13. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    BTW, can we use this tool for tracking something else : like a float variable?
    I think 'yes', but confirmation would be welcomed ;)
     
  14. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Thanks for the input! Tracking custom variables is a feature I've been thinking about since I had the need for being able to quickly observing some variables. It's definitely something useful and I'm looking into how to implement it optimally.
     
  15. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Meanwhile v1.2.0 has been released! Here's what's new:

    NEW IN VERSION 1.2.0:
    - Text and graph can now be outlined for making it stand out more in front of game graphics. Looks particularly good without background.
    - The background image component will not be created anymore if alpha is set to zero.
    - Added better API docs to public methods.
    - Calculated properties are now set to public get only.
    - Several code optimizations.

    Available at https://www.assetstore.unity3d.com/en/#!/content/44870

    Here's a quickly set up demo scene that shows v1.2.0 in action:
     
  16. MarcMitchell_Soluis

    MarcMitchell_Soluis

    Joined:
    Jul 9, 2015
    Posts:
    6
    Hi,

    Just downloaded your asset and it works a treat.

    I was wondering if you had any ideas on what features you would be looking to implement in the future?

    I know it probably won't be set in stone yet for what's coming but it would be good to know for the sake of discussion and also to avoid putting work in to modify it if there's something in the pipeline.

    Thanks,

    Marc.
     
  17. imtrobin

    imtrobin

    Joined:
    Nov 30, 2009
    Posts:
    1,548
    what's the garbage generated per frame? There was a previous asset, on mobile, the performance dropped so it wasn't a good measure.
     
  18. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Sorry, I'm not sure what you're asking. Stats Monitor doesn't produce any noteworthy garbage that can be collected. On mobile the FPS is usually always much lower than on desktop. On an iPad mini Retina for example I get an average FPS of 30 even if the scene is empty.
     
  19. MaT227

    MaT227

    Joined:
    Jul 3, 2012
    Posts:
    628
    This seems to be a really interesting performance tool but are all those values available in a WebGL build ?
     
  20. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Hi MaT.

    Yes, Stats Monitor shows all values on WebGL builds. You can see a quick online demo at http://labs.hexagonstar.com/smwebgl/index.html

    Key controls work, too:
    SHIFT+~ : on/off
    CTRL+~ : toggle position
    ALT + ~ : toggle style.
     
  21. MaT227

    MaT227

    Joined:
    Jul 3, 2012
    Posts:
    628
    @avalonsutra Great, thank you very much for your fast answer !
     
  22. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    I like the asset, but it's too much trouble to integrate into an existing UI.
     
  23. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Hi JTown, can you elaborate a bit more how you want to integrate it into an existing UI? What Stats Monitor does now is basically just laying itself above all other UI so it's always top-most. I haven't had a problem with that so far but it would be good to know if there are any UI problems users are encountering with it.
     
  24. J_P_

    J_P_

    Joined:
    Jan 9, 2010
    Posts:
    1,027
    For most people that's probably fine, but I wanted it at a specific position instead of one of the corners. That was a bit tricky.

    Then, the way it handles persistence across scenes is weird. If I remember correctly, it always set itself to do not destroy on load regardless of the state of the corresponding checkbox. Unticking that checkbox in your asset just makes it destroy itself when it loads to simulate normal behavior. So if I have a reference to it (so that users can change or enable on the fly through the existing game input), it gets lost next time I load the scene and it kills itself, so that's an extra layer of awkwardness to work around.

    Finally, I have a pretty complex camera setup and I need all the UI on the same camera so I'd want to have it next to my other UI elements in the hierarchy etc. With the way I'm blitting multiple cameras to the screen, your canvas doesn't end up showing up when it's rendered on top (even if I see it in the scene view).

    I simply want to position it in the editor along with the rest of my UI and then let my scripts tell it to enable/disable and what mode to run in.
     
  25. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Thanks for the details JTown! As for the positioning, would it work if I add an option to set an arbitrary h/v margin between the Stats Monitor widget and screen corners? That could essentially be used to position the widget anywhere and still be compatible with the screen corner alignment.

    The level persistence issue is a bug I will be looking into.

    Do you think the last issue could be related to that SM tries to keep itself top-most? That might certainly be a limitation in some cases. I will look deeper into how I can create the canvas integration more flexible.
     
  26. FatIgor

    FatIgor

    Joined:
    Sep 13, 2015
    Posts:
    29
    Hi.

    I'm having a bit of a problem with the display on this.

    I have 1 camera, and 1 canvas in my scene.

    I attach the 2 scripts to an empty object.

    If I have the object inside the canvas, I get this. My stuff is displaying ok, but the monitor overlay covers the whole screen.



    And if I have the object outside the canvas I get this. Monitor displays ok, but for some reason my stuff is zoomed in on.



    Any suggestions gratefully received.
     
  27. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Hi fatlgor. that looks odd! I never encountered this behavior. Did you put Statsmonitor into an object as child under your own canvas object somewhere or is it in root in your scene?

    Edit: Can you make a screenshot of your scene displayed in the Scene view while it's running so that all objects can be seen? And if possible the scene hierarchy? That would help understand what's going on.
     
  28. FatIgor

    FatIgor

    Joined:
    Sep 13, 2015
    Posts:
    29
    I created an empty ui object (called it StatsMonitorHolder) , and put Statsmonitor and Statsmonitorwrapper in that as two added components.
    Then if I put StatsMonitorHolder in the root of the scene, I get it as image 2.
    If I put StatsMonitorHolder as a child object inside my canvas object, I get image 1.

    I am using RenderMode.WorldSpace, and an orthographic camera. Also I have set the layout to 720x1280 under the Game tab.
     
  29. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    I see. Have to check how it behaves when SM is put into another object. So far it hasn't been intended to be used like that. Is there any important reason for putting Statsmonitorwrapper as child into another object? Also the Stats Monitor objects needs to stay a child of the wrapper for the canvas used by SM to work properly.
     
  30. FatIgor

    FatIgor

    Joined:
    Sep 13, 2015
    Posts:
    29
    OK. I hadn't noticed the StatsMonitor under the "create other" option in the editor. When I do that it works fine.

    The failure to find that was why I had been just attaching the scripts to an object.

    Thanks for your prompt replies to my attempts to break your plugin through inattention...
     
  31. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Glad to hear it works now for you! I should probably make it more obvious for users to know how to add the monitor to a scene.
     
  32. blacksun666

    blacksun666

    Joined:
    Dec 17, 2015
    Posts:
    214
    will this run on consoles like the ps4 and xbox?
     
  33. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    In theory it should but I can't test it due to lack of those consoles. You'd have to map buttons from the gamepad to toggle the monitor of course.
     
    blacksun666 likes this.
  34. Wilbert-Blom

    Wilbert-Blom

    Joined:
    Aug 13, 2011
    Posts:
    109
    Could you please create a simple example of how to access Stats Monitor settings through C# script ?
    I've found the API but I can't get it to work.
     
  35. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Sorry for the delay! To access Stats Monitor's API you could use something like for example:

    Code (CSharp):
    1.             StatsMonitorWidget widget = FindObjectOfType<StatsMonitorWidget>();
    2.             if (widget != null)
    3.             {
    4.                 widget.Alignment = SMAlignment.LowerCenter;
    5.                 widget.Toggle();
    6.             }
    7.  
     
  36. bitinn

    bitinn

    Joined:
    Aug 20, 2016
    Posts:
    961
    I have a suggestion, could you avoid calling DontDestroyOnLoad when user has unchecked Keep Alive?

    I have only one scene (due to procedural nature of my game) and not calling it means I can avoid putting stats monitor in root.

    Not a big deal, just a nice to have.

    PS: It involves updating StatsMonitor and StatsMonitorWidget. Don't force DontDestroyOnLoad on awake, and don't Dispose when _keepAlive is false.
     
    Last edited: Dec 1, 2016
  37. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    @bitinn Sorry for the late reply! I've submitted a new release (1.3.4) that has some updated changes about Keep Alive. This should also solve your change request.
     
  38. orz3

    orz3

    Joined:
    Apr 6, 2015
    Posts:
    2
    not working on unity 5.6.0f3. When stats monitor is activated unity editor will deadlock in 100% cpu. Please fix it thanks!
     
    Dwight_Everhart likes this.
  39. Deleted User

    Deleted User

    Guest

    Is it possible to disable the Touch gestures on Smartphones / Tablets?
     
  40. Dwight_Everhart

    Dwight_Everhart

    Joined:
    May 11, 2014
    Posts:
    123
    @avalonsutra I just bought Stats Monitor, but it crashes Unity when I press Play. This happens simply by adding the Status Monitor object to the scene using the menu command. I didn't modify any settings. This crash also occurs when running a build of the game (with a very similar stacktrace).

    I'm running Unity 5.6.0f3 on macOS 10.12.4. Here's part of the crash report:

    Code (csharp):
    1.  
    2. Process:               Unity [32497]
    3. Path:                  /Applications/Unity/Unity.app/Contents/MacOS/Unity
    4. Identifier:            com.unity3d.UnityEditor5.x
    5. Version:               Unity version 5.6.0f3 (5.6.0f3)
    6. Code Type:             X86-64 (Native)
    7. Parent Process:        ??? [1]
    8. Responsible:           Unity [32497]
    9. User ID:               501
    10.  
    11. Date/Time:             2017-04-23 22:11:24.391 -0700
    12. OS Version:            Mac OS X 10.12.4 (16E195)
    13. Report Version:        12
    14. Anonymous UUID:        264ECA25-6141-B923-B180-3DD9586E8FD3
    15.  
    16. Sleep/Wake UUID:       4601202E-0509-45A7-88C5-FA860CBAC2FC
    17.  
    18. Time Awake Since Boot: 1900000 seconds
    19. Time Since Wake:       170000 seconds
    20.  
    21. System Integrity Protection: enabled
    22.  
    23. Crashed Thread:        0  CrBrowserMain  Dispatch queue: com.apple.main-thread
    24.  
    25. Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
    26. Exception Codes:       KERN_PROTECTION_FAILURE at 0x00007fff5f3ffeb8
    27. Exception Note:        EXC_CORPSE_NOTIFY
    28.  
    29. Termination Signal:    Segmentation fault: 11
    30. Termination Reason:    Namespace SIGNAL, Code 0xb
    31. Terminating Process:   exc handler [0]
    32.  
    33. VM Regions Near 0x7fff5f3ffeb8:
    34.     Stack                  000070000ef74000-000070000f776000 [ 8200K] rw-/rwx SM=COW  thread 88
    35. --> STACK GUARD            00007fff5bc00000-00007fff5f400000 [ 56.0M] ---/rwx SM=NUL  stack guard for thread 0
    36.     Stack                  00007fff5f400000-00007fff5fc00000 [ 8192K] rw-/rwx SM=PRV  thread 0
    37.  
    38. Thread 0 Crashed:: CrBrowserMain  Dispatch queue: com.apple.main-thread
    39. 0   libmono.0.dylib                   0x000000010b3f86e5 mono_aot_get_class_from_name + 30
    40. 1   libmono.0.dylib                   0x000000010b45cbb7 mono_class_from_name + 203
    41. 2   libmono.0.dylib                   0x000000010b47a86a mono_exception_from_name_domain + 55
    42. 3   libmono.0.dylib                   0x000000010b47aafb mono_exception_from_name_msg + 49
    43. 4   com.unity3d.UnityEditor5.x       0x0000000102092c33 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) + 99
    44. 5   com.unity3d.UnityEditor5.x       0x00000001020864dd ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 125
    45. 6   com.unity3d.UnityEditor5.x       0x0000000102092ddd scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 269
    46. 7   com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    47. 8   com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    48. 9   com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    49. 10  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    50. 11  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    51. 12  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    52. 13  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    53. 14  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    54. 15  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    55. 16  com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    56. 17  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    57. 18  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    58. 19  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    59. 20  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    60. 21  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    61. 22  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    62. 23  com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    63. 24  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    64. 25  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    65. 26  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    66. 27  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    67. 28  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    68. 29  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    69. 30  com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    70. 31  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    71. 32  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    72. 33  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    73. 34  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    74. 35  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    75. 36  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    76. 37  com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    77. 38  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    78. 39  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    79. 40  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    80. 41  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    81. 42  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    82. 43  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    83. 44  com.unity3d.UnityEditor5.x       0x0000000102086540 ScriptingStringPtr ScriptingInvocation::Invoke<ScriptingStringPtr>(ScriptingExceptionPtr*, bool) + 16
    84. 45  com.unity3d.UnityEditor5.x       0x00000001025c5b1c ExtractMonoStacktrace(core::basic_string<char, core::StringStorageDefault<char> > const&, core::basic_string<char, core::StringStorageDefault<char> >&, core::basic_string<char, core::StringStorageDefault<char> >&, int, core::basic_string<char, core::StringStorageDefault<char> >&, int*, int, int) + 188
    85. 46  com.unity3d.UnityEditor5.x       0x0000000101c95caf DebugStringToFile(DebugStringToFileData const&) + 847
    86. 47  com.unity3d.UnityEditor5.x       0x0000000101c938fd DebugStringToFile(char const*, int, char const*, int, LogMessageFlags, int, int, void (*)(CppLogEntry const&)) + 93
    87. 48  com.unity3d.UnityEditor5.x       0x0000000102092e7d scripting_stack_trace_info_for(ScriptingExceptionPtr, StackTraceInfo&) + 429
    88. 49  com.unity3d.UnityEditor5.x       0x0000000102080b2f Scripting::LogException(ScriptingExceptionPtr, int, char const*) + 223
    89. 50  com.unity3d.UnityEditor5.x       0x000000010208650c ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 172
    90. 51  com.unity3d.UnityEditor5.x       0x000000010223ef99 UI::RectTransform::Deactivate(DeactivateOperation) + 153
    91. 52  com.unity3d.UnityEditor5.x       0x00000001017c5f59 GameObject::ActivateAwakeRecursivelyInternal(DeactivateOperation, AwakeFromLoadQueue&) + 1113
    92. 53  com.unity3d.UnityEditor5.x       0x00000001017c5d1e GameObject::ActivateAwakeRecursivelyInternal(DeactivateOperation, AwakeFromLoadQueue&) + 542
    93. 54  com.unity3d.UnityEditor5.x       0x00000001017c5d1e GameObject::ActivateAwakeRecursivelyInternal(DeactivateOperation, AwakeFromLoadQueue&) + 542
    94. 55  com.unity3d.UnityEditor5.x       0x00000001017c5d1e GameObject::ActivateAwakeRecursivelyInternal(DeactivateOperation, AwakeFromLoadQueue&) + 542
    95. 56  com.unity3d.UnityEditor5.x       0x00000001017c6da1 GameObject::Deactivate(DeactivateOperation) + 129
    96. 57  com.unity3d.UnityEditor5.x       0x00000001017c733f GameObject::EnsureUniqueTransform(bool, bool) + 815
    97. 58  com.unity3d.UnityEditor5.x       0x0000000101cc3108 AddComponentUnchecked(GameObject&, Unity::Type const*, ScriptingClassPtr, MonoScript*, core::basic_string<char, core::StringStorageDefault<char> >*) + 328
    98. 59  com.unity3d.UnityEditor5.x       0x0000000101cc5e16 AddComponent(GameObject&, Unity::Type const*, ScriptingClassPtr, core::basic_string<char, core::StringStorageDefault<char> >*) + 486
    99. 60  com.unity3d.UnityEditor5.x       0x00000001019c76e0 MonoAddComponentWithType(GameObject&, ScriptingSystemTypeObjectPtr) + 304
    100. 61  ???                               0x00000001356a8a9a 0 + 5191142042
    101. 62  ???                               0x00000001356a8947 0 + 5191141703
    102. 63  ???                               0x000000013549e1bd 0 + 5189001661
    103. 64  ???                               0x000000013549dbbb 0 + 5189000123
    104. 65  ???                               0x000000013549cffe 0 + 5188997118
    105. 66  ???                               0x000000013549c803 0 + 5188995075
    106. 67  ???                               0x000000013549c664 0 + 5188994660
    107. 68  ???                               0x0000000124703984 0 + 4906301828
    108. 69  ???                               0x000000012470070d 0 + 4906288909
    109. 70  ???                               0x0000000119fe75fa 0 + 4731074042
    110. 71  libmono.0.dylib                   0x000000010b39b036 0x10b391000 + 41014
    111. 72  libmono.0.dylib                   0x000000010b4c5b0e mono_runtime_invoke + 117
    112. 73  com.unity3d.UnityEditor5.x       0x00000001020864dd ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 125
    113. 74  com.unity3d.UnityEditor5.x       0x00000001025bfc46 MonoBehaviour::CallMethodIfAvailable(int) + 470
    114. 75  com.unity3d.UnityEditor5.x       0x00000001025c2e55 MonoBehaviour::AddToManager() + 341
    115. 76  com.unity3d.UnityEditor5.x       0x0000000102095f98 AwakeFromLoadQueue::InvokeAwakeFromLoad(AwakeFromLoadQueue::Item*, unsigned int, AwakeFromLoadMode) + 120
    116. 77  com.unity3d.UnityEditor5.x       0x0000000102095d76 AwakeFromLoadQueue::AwakeFromLoad(AwakeFromLoadMode, bool) + 422
    117. 78  com.unity3d.UnityEditor5.x       0x00000001017c6c32 GameObject::Activate() + 194
    118. 79  com.unity3d.UnityEditor5.x       0x00000001017c74b4 GameObject::EnsureUniqueTransform(bool, bool) + 1188
    119. 80  com.unity3d.UnityEditor5.x       0x0000000101cc3108 AddComponentUnchecked(GameObject&, Unity::Type const*, ScriptingClassPtr, MonoScript*, core::basic_string<char, core::StringStorageDefault<char> >*) + 328
    120. 81  com.unity3d.UnityEditor5.x       0x0000000101cc5e16 AddComponent(GameObject&, Unity::Type const*, ScriptingClassPtr, core::basic_string<char, core::StringStorageDefault<char> >*) + 486
    121. 82  com.unity3d.UnityEditor5.x       0x00000001019c76e0 MonoAddComponentWithType(GameObject&, ScriptingSystemTypeObjectPtr) + 304
    122. 83  ???                               0x00000001356a8a9a 0 + 5191142042
    123. 84  ???                               0x00000001356a8947 0 + 5191141703
    124. 85  ???                               0x000000013549e1bd 0 + 5189001661
    125. 86  ???                               0x000000013549dbbb 0 + 5189000123
    126. 87  ???                               0x000000013549cffe 0 + 5188997118
    127. 88  ???                               0x000000013549c803 0 + 5188995075
    128. 89  ???                               0x000000013549c664 0 + 5188994660
    129. 90  ???                               0x0000000124703984 0 + 4906301828
    130. 91  ???                               0x000000012470070d 0 + 4906288909
    131. 92  ???                               0x0000000119fe75fa 0 + 4731074042
    132. 93  libmono.0.dylib                   0x000000010b39b036 0x10b391000 + 41014
    133. 94  libmono.0.dylib                   0x000000010b4c5b0e mono_runtime_invoke + 117
    134. 95  com.unity3d.UnityEditor5.x       0x00000001020864dd ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 125
    135. 96  com.unity3d.UnityEditor5.x       0x00000001025bfc46 MonoBehaviour::CallMethodIfAvailable(int) + 470
    136. 97  com.unity3d.UnityEditor5.x       0x00000001025c2e55 MonoBehaviour::AddToManager() + 341
    137. 98  com.unity3d.UnityEditor5.x       0x0000000102095f98 AwakeFromLoadQueue::InvokeAwakeFromLoad(AwakeFromLoadQueue::Item*, unsigned int, AwakeFromLoadMode) + 120
    138. 99  com.unity3d.UnityEditor5.x       0x0000000102095d76 AwakeFromLoadQueue::AwakeFromLoad(AwakeFromLoadMode, bool) + 422
    139. 100 com.unity3d.UnityEditor5.x       0x00000001017c6c32 GameObject::Activate() + 194
    140. 101 com.unity3d.UnityEditor5.x       0x00000001017c74b4 GameObject::EnsureUniqueTransform(bool, bool) + 1188
    141. 102 com.unity3d.UnityEditor5.x       0x0000000101cc3108 AddComponentUnchecked(GameObject&, Unity::Type const*, ScriptingClassPtr, MonoScript*, core::basic_string<char, core::StringStorageDefault<char> >*) + 328
    142. 103 com.unity3d.UnityEditor5.x       0x0000000101cc5e16 AddComponent(GameObject&, Unity::Type const*, ScriptingClassPtr, core::basic_string<char, core::StringStorageDefault<char> >*) + 486
    143. 104 com.unity3d.UnityEditor5.x       0x00000001019c76e0 MonoAddComponentWithType(GameObject&, ScriptingSystemTypeObjectPtr) + 304
    144. 105 ???                               0x00000001356a8a9a 0 + 5191142042
    145. 106 ???                               0x00000001356a8947 0 + 5191141703
    146. 107 ???                               0x000000013549e1bd 0 + 5189001661
    147. 108 ???                               0x000000013549dbbb 0 + 5189000123
    148. 109 ???                               0x000000013549cffe 0 + 5188997118
    149. 110 ???                               0x000000013549c803 0 + 5188995075
    150. 111 ???                               0x000000013549c664 0 + 5188994660
    151. 112 ???                               0x0000000124703984 0 + 4906301828
    152. 113 ???                               0x000000012470070d 0 + 4906288909
    153. 114 ???                               0x0000000119fe75fa 0 + 4731074042
    154. 115 libmono.0.dylib                   0x000000010b39b036 0x10b391000 + 41014
    155. 116 libmono.0.dylib                   0x000000010b4c5b0e mono_runtime_invoke + 117
    156. 117 com.unity3d.UnityEditor5.x       0x00000001020864dd ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) + 125
    157. 118 com.unity3d.UnityEditor5.x       0x00000001025bfc46 MonoBehaviour::CallMethodIfAvailable(int) + 470
    158. 119 com.unity3d.UnityEditor5.x       0x00000001025c2e55 MonoBehaviour::AddToManager() + 341
    159. 120 com.unity3d.UnityEditor5.x       0x0000000102095f98 AwakeFromLoadQueue::InvokeAwakeFromLoad(AwakeFromLoadQueue::Item*, unsigned int, AwakeFromLoadMode) + 120
    160. 121 com.unity3d.UnityEditor5.x       0x0000000102095d76 AwakeFromLoadQueue::AwakeFromLoad(AwakeFromLoadMode, bool) + 422
    161. 122 com.unity3d.UnityEditor5.x       0x00000001017c6c32 GameObject::Activate() + 194
    162. 123 com.unity3d.UnityEditor5.x       0x00000001017c74b4 GameObject::EnsureUniqueTransform(bool, bool) + 1188
    163. 124 com.unity3d.UnityEditor5.x       0x0000000101cc3108 AddComponentUnchecked(GameObject&, Unity::Type const*, ScriptingClassPtr, MonoScript*, core::basic_string<char, core::StringStorageDefault<char> >*) + 328
    164. 125 com.unity3d.UnityEditor5.x       0x0000000101cc5e16 AddComponent(GameObject&, Unity::Type const*, ScriptingClassPtr, core::basic_string<char, core::StringStorageDefault<char> >*) + 486
    165. 126 com.unity3d.UnityEditor5.x       0x00000001019c76e0 MonoAddComponentWithType(GameObject&, ScriptingSystemTypeObjectPtr) + 304
    166. 127 ???                               0x00000001356a8a9a 0 + 5191142042
    167. 128 ???                               0x00000001356a8947 0 + 5191141703
    168. 129 ???                               0x000000013549e1bd 0 + 5189001661
    169. 130 ???                               0x000000013549dbbb 0 + 5189000123
    170. 131 ???                               0x000000013549cffe 0 + 5188997118
    171. 132 ???                               0x000000013549c803 0 + 5188995075
    172. 133 ???                               0x000000013549c664 0 + 5188994660
    173. 134 ???                               0x0000000124703984 0 + 4906301828
    174. 135 ???                               0x000000012470070d 0 + 4906288909
    175. 136 ???                               0x0000000119fe75fa 0 + 4731074042
    176. 137 libmono.0.dylib                   0x000000010b39b036 0x10b391000 + 41014
    177.  
    Those last groups of frames repeat many times after that. Looks like infinite recursion.

    Looking at the code, I determined that the recursion is triggered by the call to AddComponent<RawImage>() in CreateBackground(). Disabling that line eliminates the crash, but nothing is displayed. The code looks correct to me, so this may be a bug in Unity 5.6. Is there a way to work around it?
     
    Last edited: Apr 24, 2017
  41. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    @Dwight Thank you for the crash report and crash log! I will be looking into the issue! Will push a hotfix as soon as I found and fixed the source of this crash.
     
    Dwight_Everhart likes this.
  42. Dwight_Everhart

    Dwight_Everhart

    Joined:
    May 11, 2014
    Posts:
    123
    @avalonsutra Thanks! I hope it's not too difficult to fix or work around.
     
  43. 4sascha

    4sascha

    Joined:
    Mar 9, 2017
    Posts:
    51
    Hi,

    did you find a method to get it run in 5.6.0f3. Freeze here too after play.
    In 5.5.1 all works.

    best,

    Sascha
     
  44. koichikasai

    koichikasai

    Joined:
    Dec 4, 2012
    Posts:
    1
    not working in 5.6.1.
    but it worked with small change. it was not perfect.(only work MInimal / StatsOnly)

    StatsMonitorWidget.cs
    Code (CSharp):
    1. // memTotal = Profiler.GetTotalReservedMemory() / MEMORY_DIVIDER;
    2. // memAlloc = Profiler.GetTotalAllocatedMemory() / MEMORY_DIVIDER;
    3.  
    4. memTotal = Profiler.GetTotalReservedMemoryLong() / MEMORY_DIVIDER;
    5. memAlloc = Profiler.GetTotalAllocatedMemoryLong() / MEMORY_DIVIDER;
    and commentout all CreateBackground() in CreateChildren().
    and add component RawImage to "Stats Monitor Widget" in Editor.
     
    Dwight_Everhart likes this.
  45. SugoiDev

    SugoiDev

    Joined:
    Mar 27, 2013
    Posts:
    395
    Hey @avalonsutra, just a heads up:
    On the 3rd, last month, I sent you a detailed report and a fixed build for the problem @Dwight_Everhart mentioned
    I had also previously sent you an email using your site, but it went offline.
    I tried mailing as well, but the emails are bouncing.
     
    Dwight_Everhart likes this.
  46. Member123456

    Member123456

    Joined:
    Oct 17, 2012
    Posts:
    237
    @avalonsutra I am looking to purchase this, is it going to be updated to work with the latest versions of unity anytime soon? Thanks.
     
    Dwight_Everhart likes this.
  47. DrivingSim

    DrivingSim

    Joined:
    May 28, 2013
    Posts:
    32
    Hi Avalon...

    Interested in your asset. We want to detect performance while running our simulator on an Xbox. Is there any reason this would not work on Xbox?

    Thanks.
     
  48. ciathyza

    ciathyza

    Joined:
    Aug 16, 2015
    Posts:
    109
    Sorry for the long silence and delay in updates! Life kept me busy with other things and several approaches to fix the crash issue in between were frustratingly fruitless. However I've now submitted a new version (1.3.6) that fixes the crash issue and a few other things.

    My website is currently offline. I'm planning to set up a new one soon.
     
  49. bitinn

    bitinn

    Joined:
    Aug 20, 2016
    Posts:
    961
    Thx! Interestingly, the old version went back to work during Unity 2017.1-2 update. I re-imported and its API update makes Stats Monitor work.

    But good to know 1.3.6 is finally out.
     
    ciathyza likes this.
  50. SugoiDev

    SugoiDev

    Joined:
    Mar 27, 2013
    Posts:
    395
    Hey, nice to have you back.

    I've been trying to contact you for some time now. Could you get in touch?
    I have a small improvement that I added a while back to make object and active renderers counting faster. It would be awesome to have it integrated so I don't have to keep patching manually after every update.