Welcome to the official NOA Debugger forum thread on the Unity Asset Store!
Here you can:
Share feedback about NOA Debugger
Ask questions about integration and usage
Suggest new features or improvements
Exchange tips and best practices with other users
We are committed to supporting a diverse community, so feel free to post in English or Japanese. Our team will respond to your inquiries in the language you used. Please note that our support hours are from 10:00 to 18:00 JST, Monday through Friday.
To facilitate clear communication, please include any necessary details about your feedback or question, such as step-by-step descriptions, error messages, screenshots, or code snippets.
Thank you for supporting NOA Debugger. We’re excited to collaborate with you and enhance the debugging experience for everyone.
You may want to start this post, and your asset store page, with an explanation or a concrete example of how your debuggers stands out. As it is, I can’t make heads or tails of it and I can only make assumptions to form a vague idea how this might be useful, which is likely along the lines of “on-device debugging” rather than remote debugging. But this isn’t clear.
Initially the first impression is dismissal: why would I need a custom debugger when I have a powerful debugger already in my IDE and a powerful Profiler available in Unity?
That’s what you’re up against. You want to make sure this thought is quickly overcome.
But your marketing text and images don’t get across at all what the concrete benefits of this tool are to its users.
I’m sure it is as indispensible as you say to some users, but first you have to get across what that means to them, how your debuggers changes their way of working, what issues they are facing that your tool solves. Otherwise you’ll find it difficult to gather interest.
For a test, remove all the adjectives and superlatives to see what’s left of your description. Replace them with concrete workflow examples, before/after comparisons, and such. Those are way more enticing than saying “indispensible”.
We truly appreciate your thoughtful and candid feedback.
We recognize your point that our explanation on the Asset Store may have focused predominantly on the functionalities of NOA Debugger, potentially leaving out the specific problems it aims to solve. We agree that it’s vital to communicate the tangible benefits our asset provides to potential users. Here are some issues NOA Debugger can help address:
Real-time Performance Tracking Without USB Connection: Measure FPS, memory usage, and rendering state on devices without needing to tether to a computer. One key aspect here is accurately capturing memory usage through native APIs, which provides insights beyond what’s available in UnityEditor—essential for quick performance bottleneck identification.
Snapshot Functionality: You can record and compare the performance load between content changes, document FPS and memory usage, and even employ custom APIs for tailored data capture. This enables painless bottleneck detection as content scales.
APILog for Communication Data: Capture runtime communication data to swiftly resolve issues that arise due to unexpected responses across varying runtime environments, reducing time spent on debugging failed communications.
Runtime Hierarchy Inspection: Observe the state of hierarchy and components within live scenes, helping to troubleshoot environment-specific objects and issues in cross-platform development.
Debug Commands: Implement and test runtime commands easily, potentially altering game states without full rebuilds. This can lead to reduced build times and, in turn, lower debugging costs.
Customization and Extensibility: NOA Debugger is designed with extensibility in mind, making it simpler for users to implement custom debugging panels, with support for source code and prefab integrations. This saves time and costs typically associated with creating separate debugging screens. Moreover, UI font replacement functionality supports multiple languages, reflecting our commitment to efficient memory usage.
While these are some key advantages to integrating NOA Debugger, we also realize that documentation provided solely within the package may be insufficient for users to fully evaluate the tool. Therefore, we are considering the publication of our documentation and enhancing future updates on the Asset Store to more clearly outline the benefits our tool can bring to your development workflow.
Thank you once again for reaching out. Your feedback is invaluable as we strive to make NOADebugger an essential tool for developers. We’ll certainly incorporate your suggestions to improve how we present our product and its features.
Ok, here I am per your reply email. First, I’d say that having the help hidden in that weird package directory instead of the root of the visible folder in the hierarchy is odd - please consider moving the guide somewhere I’m likely to see it after install.
In the email, you said the Environment- and Device-specific Setup Guide had details on setting NOA up with the new input system. This has one line for the new input system:
“When using Unity’s InputSystem, please attach InputSystemUIInputModule to the EventSystem in the scene.”
I’ve already got this component, yet the debug button still flashes red when I push it. It throw exceptions in NoaDebuggerButton.cs, such as on the bold linebecause the input piece is hardcoded.
void _UpdateTapStateOnPressing(float pressingTime)
{
if (_tapState == TapState.Tap && pressingTime >= NoaDebuggerDefine.PressTimeSeconds)
{
_tapState = TapState.LongTap;
}
if ((_tapState is TapState.Tap or TapState.LongTap) && _pressStartPos != null)
{ float distance = Vector2.Distance(_pressStartPos.Value, Input.mousePosition);
if (distance >= NoaDebuggerDefine.DragThresholdDistanceOnScreen)
{
_tapState = TapState.Drag;
_dragBehaviour.CanMove = true;
}
}
}
Can you please provide a more comprehensive explanation as to how I get this working with the new input system?
Thank you for your feedback and for bringing this to our attention.
We acknowledge that the current location of the documentation may be less intuitive for our users and we will certainly consider making it more accessible in our next update.
Regarding the issue you’ve encountered with NOA Debugger when using Unity’s new input system, we suggest the following steps as a preliminary solution: please navigate to ‘Edit > Project Settings > Player’ in Unity and open the PlayerSettings. From there, change the ‘Active Input Handling’ setting to ‘Both’. This adjustment should address the problem you’re experiencing with the button.
We understand this might not be a permanent fix and would like to inform you that we will address this issue comprehensively in the upcoming update of NOA Debugger to ensure a smoother experience with the new input system.
Again, thank you for your patience and for providing valuable input to help us improve NOA Debugger. If you have any further questions or require additional assistance, please do not hesitate to get in touch.
Thanks! That resolves that, and I’ve learnt something - I never knew ‘both’ was an option.
Regarding the profiling, I can see the graph at top level. With the profiler in the editor, I tend to drill down to see what is taking the most time. Is there any way to do that, either in the interface or by saving a session for viewing on your dev machine afterwards?
Thank you for your inquiry regarding the profiling features of NOA Debugger.
NOA Debugger’s profiler is designed to help you quickly identify runtime hotspots by visually presenting the FPS and memory usage data. It is aimed at facilitating the recognition of performance issues at a glance, rather than offering an in-depth analysis of the load. The system does not maintain a detailed log of performance burdens internally.
Once you’ve identified potential hotspots with NOA Debugger during runtime, we envision that you would then use the Unity Editor’s Profiler to drill down into more detailed performance investigations. This approach allows you to pinpoint the specific areas in your project that require further optimization.
We hope this clarifies the intended workflow between NOA Debugger and Unity’s built-in profiling tools.
Thank you for your congratulations on our asset. To define and use a command in the debugger, you need to create a class that inherits from the DebugCategoryBase class. You can define properties and methods you wish to use as commands and expose them in the UI by setting attributes.
Classes inheriting from DebugCategoryBase must be registered at runtime using DebugCommandRegister.AddCategory.
Here is a sample code snippet for a class inheriting from DebugCategoryBase:
#if NOA_DEBUGGER
using NoaDebugger;
public class DebugCommandSample : DebugCategoryBase
{
public void ExampleMethod()
{
// Some process
}
[CommandGroup("Group1"), DisplayName("Property1"), SaveOnUpdate]
public int ExampleProperty1
{
get;
set;
}
// Example treated as a GetOnlyProperty
[CommandGroup("Group1"), DisplayName("Property2"), SaveOnUpdate]
public int ExampleProperty2
{
get;
private set;
}
}
#endif
And here is a sample code for registering with DebugCommandRegister.AddCategory:
#if NOA_DEBUGGER
using NoaDebugger;
#endif
public class Example
{
void Initialize()
{
#if NOA_DEBUGGER
DebugCommandRegister.AddCategory<DebugCommandSample>("CategoryName", 1);
#endif
}
}
For a detailed document on debug commands, please refer to the following path in the package:
UnityProject/Packages/com.exnoa.noa.debugger/Documentation~/en/DebugCommand/DebugCommand.md
I hope this helps you get started with adding and using debug commands in NOA Debugger.
Hi,
I have a use case that I do not know if I can handle with NoaDebugger.
I want to have custom commands but with input variables. Will methods like:
AddResource(int id, int amount) work as well?
Dear FixItFelix,
Thank you for reaching out about the capabilities of NOA Debugger regarding custom commands with input variables.
While NOA Debugger’s DebugCommand does not directly support methods with parameters, there is a different approach that can be used to achieve similar functionality. You can define parameters as commands themselves, and then use them within a method, as shown in the following code example:
#if NOA_DEBUGGER
using NoaDebugger;
public class DebugCommandSample : DebugCategoryBase
{
[CommandGroup("Resource"), DisplayName("Id"), CommandOrder(0)]
public int Id
{
get;
set;
}
[CommandGroup("Resource"), DisplayName("Amount"), CommandOrder(1)]
public int Amount
{
get;
set;
}
[CommandGroup("Resource"), CommandOrder(2)]
public void AddResource()
{
SampleManager.Instance.AddResource(Id, Amount);
}
}
#endif
Additionally, you can add commands dynamically during runtime using the following method:
#if NOA_DEBUGGER
using System;
using NoaDebugger;
using UnityEngine;
public class DynamicDebugCommand : MonoBehaviour
{
private int id;
private int amount;
void Start()
{
var attributes = new Attribute[]
{
new CommandGroupAttribute("Dynamic Command Group"),
new CommandOrderAttribute(0)
};
var definition = DebugCommandRegister.CreateMethod(
"Dynamic Command Category",
"AddResource",
() => this.AddResource(),
attributes);
DebugCommandRegister.AddCommand(definition);
}
void AddResource()
{
SampleManager.Instance.AddResource(id, amount);
}
}
#endif
It is important to note that using these methods allows you to circumvent the limitation of not being able to directly call methods with parameters, and provides a flexible means of managing custom commands within NOA Debugger.
We hope this information is helpful to you and enables you to implement the custom command functionality as needed. Should you have any further questions, please do not hesitate to ask.
Best regards,
The NOA Debugger Development Team at DMM GAMES
Added a configuration in NOA Debugger Editor to position certain UI elements at the bottom of the screen for portrait orientation.
A setting aimed at improving operability on mobile devices.
Added a link to the Asset Store within the NOA Debugger Editor.
Changed
ConsoleLog
Modified to display only the count of occurrences when the same log is output consecutively.
APILog
Modified to display only the count of occurrences when the same log is output consecutively.
DebugCommand
Changed the arguments of the CommandInputRange attribute and the CommandIncrement attribute from float type to object type.
With this change, you can specify settings in the same type as the type of the target property.
Ensured that commands with no specified order or the same value specified are arranged in the order they are defined.
As a consequence, changed the display of Get-Only properties.
Other
Improved CPU load, rendering load, and memory usage.
Reduced the CPU load at tool initialization by 99%.
Distributes CPU load by creating instances of each function after the tool starts.
Reduced the rendering load of the GUI while the tool is running.
Reduced SetPass calls by up to 84%.
Reduced batches by up to 70%.
Improved the framerate during tool operation by up to 60%.
Reduced memory usage after removing the tool by 88%.
Changed the manual and NOA Debugger Editor forum links in NOA Debugger’s thread.
Added a link to the tool installation instructions in the README.
Setting files to be used at runtime cannot be edited directly from the Unity Editor’s inspector.
Removed
APILog
Omitted the individual log deletion feature following the implementation of continuous output count display.
Fixed
Hierarchy
Fixed an issue where Unity would crash when retrieving component information for a Canvas without a Camera set.
DebugCommand
Fixed an issue where dragging beyond the min/max type limit of numeric property types would not cause overflow.
Other
Fixed a bug where NOA Debugger would throw an exception when using the new Input System.
Note: when updating NOA Debugger for Unity from the Package Manager, don’t forget to delete the existing old version from the project before importing the new one (V1.0.0) !
You can delete NOA Debugger in NOA Debugger Editor by selecting Window -> NOA Debugger from the Unity menu.
Best regards,
The NOA Debugger Development Team at DMM GAMES
Thank you for using NOA Debugger for Unity.
I have submitted version 1.2.0 to the Asset Store. The release date is July 10, 2024 (JST).
Here are the release notes:
Added
Information
Added an event that executes when download starts.
Snapshot
Added an event that executes when logs are copied to the clipboard.
Added an event that executes when logs download starts.
ConsoleLog
Added an event that executes when logs are copied to the clipboard.
Added an event that executes when logs download starts.
APILog
Added an event that executes when logs are copied to the clipboard.
Added an event that executes when logs download starts.
DebugCommand
Added a feature to collapse commands by groups.
Added buttons to increment and decrement values for numeric property types.
Expanded the draggable area overall to accommodate design adjustments stemming from the addition of these buttons.
Other
Added a feature to dynamically display various UI elements on the screen.
This feature is useful when you want to easily display text, buttons, etc. on the screen.
Added an API to change the tool’s font at runtime.
Added an API to execute screen captures.
Added settings to change the initial position, scale, movement type, and whether to save the position of the start button.
Added a setting to change whether the settings of the NOA Debugger Editor are saved automatically.
Changed
ConsoleLog
Changed the display of characters not included in the font asset to remove the \ when trying to display them in logs.
Other
Changed the name and behavior of the configuration that positions certain UI elements at the bottom of the screen for portrait orientation.
Made it possible to select the notification format of the start button when NOA Debugger detects an error.
Made it possible to set the opacity of the start button to 0.
Changed the behavior of the NOA Debugger Editor’s font settings to display them only when necessary.
Adjusted the NOA Debugger Editor link to the Asset Store.
Fixed
DebugCommand
Fixed a bug where the detail view could not be opened when initializing the DebugCommand screen at tool startup either through NoaDebug.Show() or by changing the order of functionalities.
Improved performance when displaying the detail view.
Fixed a bug where the value was not reflected correctly when inputting double-type properties.
CustomMenu
Fixed a bug where the Prefab used in custom menus was saved as inactive.
Note: when updating NOA Debugger for Unity from the Package Manager, don’t forget to delete the existing old version from the project before importing the new one (V1.2.0) !
You can delete NOA Debugger in NOA Debugger Editor by selecting Window -> NOA Debugger from the Unity menu.
Best regards,
The NOA Debugger Development Team at DMM GAMES
Thank you for using NOA Debugger for Unity.
We have submitted version 1.3.0 to the Asset Store. The release date is August 28, 2024 (JST).
Here are the release notes:
Added
APILog
Added a feature to adjust the display area by dragging the boundary between the log list and log details.
Changed
APILog
Adjusted the grouping of tabs in the log details.
Adjusted the process to format the request body and response body in the log details as JSON regardless of the HTTP header’s Content-Type.
If no specification is provided, the formatting will be executed.
Changed the formatting of the request body and response body for copying to the clipboard and downloading to match the log details.
Fixed
APILog
Improved the scroll area of the log details to make it easier to use.
Other
Fixed a bug where some settings would reset to their default values when switching from a branch with an older version of NOA Debugger to a branch with a newer version of NOA Debugger in a version-controlled project.
Note: when updating NOA Debugger for Unity from the Package Manager, don’t forget to delete the existing old version from the project before importing the new one (V1.3.0) !
You can delete NOA Debugger in NOA Debugger Editor by selecting Window -> NOA Debugger from the Unity menu.
Best regards,
The NOA Debugger Development Team at DMM GAMES
Currently, our mechanism does not support the fallback feature of TextMeshPro at runtime. However, you can display Unicode characters, including Chinese, Japanese, and Korean (CJK) characters, by following these steps:
Generate font assets that include Chinese, Japanese, and Korean (CJK) font textures using FontAssetCreator.
In NOADebuggerSettings, set the created CJK font asset to the FontAsset.
If the CJK font asset (font texture) contains the corresponding text, it will display correctly.
Note: You may also be able to solve this problem by simply setting the already existing “NotoSansCJK - Regular SDK” as the FontAsset in the NOA Debugger Settings.
Thanks for your immediate response
I think the problem may not be entirely with the fallback mechanism, but rather with dynamic fonts.
I tried NotoSansCJK-Regular SDF using dynamic fonts, still only unicode is displayed
Based on your description, it seems there may be an issue with the dynamic fonts rather than the fallback mechanism. To further investigate this, we would appreciate if you could provide us with a minimal Unity project that replicates the issue. This will help us better understand the problem and provide a more accurate solution.
Please note that we will not be replying via email; instead, we will continue our communication through the forum. Additionally, this investigation may take some time, so we appreciate your patience during this period.
Should you have any other questions or need further assistance, please do not hesitate to contact us.
I just created a new project using dynamic fonts, and it seems to be working fine
Maybe there is something in the original project that caused it. I will do some research. If I can reproduce this error, I will send the project to you.
Thanks~