Hi! I’ve added the asset to my project and I’m trying to configure it for my project. I copied the IconSet_XXX, InputsIconManager and InputIconSetConfigurator to a different project folder to not overwrite my changes when updating the asset and their files.
Then I modified the values in the Input Icons Setup Window to suit my needs.
The thing is that every time I click play, the value I set in the “Icon Set Configurator” window (in the Customization tab) is reverted backto the original file. Why is this happening?
Thanks!
Hey @ecentinela
Both the InputIconsManager and InputIconSetConfigurator use as static instance field for easier access from various places. The instance gets assigned when the Scriptable Object calls its Awake method. As you have two of each of these objects in place it might very well be that they keep fighting for which can have the instance.
I understand that updating the tool can be a bit annoying as you might have to reconfigure the manager and the configurator assets. I will think about a better solution. Maybe adding a boolean field like “Is Actual Manager” which when set to false will prevent the object from calling Instance = this might be a good enough solution for now.
You could also try deleting the newly imported manger and configurator and only keep your own ones. If you run into trouble, make sure they are within a “Resources/InputIcons/” folder. I have not tried but I think this should work once the Instances have been reassigned which should happen when you enter play mode.
Hey @tobias_froihofer!
Yeah, the boolean can be a quick and good enough solution at this moment!
Thanks for your help!
Just want to report a bug that for Input Icons - UI Toolkit Extension.
The Setup Panel/Text/TextStyleSheet button relies on the Text Style Sheet in the Resource Folder, otherwise it will cause error.
The line stylesheetResourcesPath.IndexOf(“Resources/”) will return a -1 which causes an error.
Thank you, a fix for this is on its way.
Just bought the asset and am trying to get it to work. When I attach the II_Image Prompt a UI Image, the icons show up like this when ‘Search Binding By’ is set to ‘Binding Type.’ When I change it to ‘Binding Index’, the proper icon displays. Why is this?
Seeing a questionmark often suggests that the script could not find a corresponding binding? Are the control scheme names of this input action asset equal to the ones you chose during the setup process in the setup window? They must match exactly.
You can also try to enable the advanced mode checkbox when using Binding Type as the search option and see if this changes things.
This is what the setup looks like. Changing the modes back and forth/clicking advance seems to change one of them, but not the gamepad input. The example scenes in this test project work fine, so it must be something with how I’ve set it up, but I’m not sure what.
Thank you for the additional information. Since the example scenes work I still believe there is something wrong with the control scheme names. I have had users report that they somehow got in a hidden character into the string field which resulted in this behavior - this might be the case here too. Please double check there are no hidden characters, by temporarily changing your new control scheme names to just a single letter for example (you need to change them in the setup window and in the input action asset as well).
I also suggest:
- try displaying a binding of one of the example input action assets in your new scene, this should work.
- try duplicating a working example input action asset and change the control scheme names to the ones you use in your own input action asset and see if the bindings still get displayed correctly when entering play mode.
Thank you. It has been fixed. Thanks so much for your help and patience! I love how the asset simplifies the process of displaying controls and rebinding them.
In the UI Toolkit Extension there is a similar problem with the Image Prompt.
Search by binding type does not work at all, seemingly because it assumes composite bindings only?

When changing to Binding Index, it also fails to resolve for the Gamepad.
The action in question, is a shared binding across all devices:
![]()
So there is only one index, and InputIconsUtility.GetSpriteByBindingIndex always evaluates keyboards first, so it will always find a match, and always return the Keyboard icon.
It basically throws away the knowledge it has about the device when calling this method, as this is called from GetSpriteByBindingIndexGamepad.
And as a small aside, InputIconsUtility seemingly has no reason to be a MonoBehaviour.
And then I have a small suggestion to improve the Image Prompt.
Currently, the visual element you target, must be unique, or rather it will look for the element from the document root and resolve the first match found.
This mean composite controls are not supported, e.g. a control that has a generically named child e.g. cueIcon. If you have multiple such on a page, there is no way to pick the right one to target.
To remedy this, there could be an optional Root Element Name property, which if set, is used to resolve the target visual element, instead of resolving it from the document root.
@ts_headfirst
Thank you for pointing out the issue about the UITK Image Prompt.
After checking on the Sprite Prompt and Image Prompt behaviors of the standard Input Icons package, I saw that such an action gets displayed correctly there. The issue is related to the custom editor of the UITK Image Prompt. Here the composite type is hidden in the inspector and not correctly updated when assigning a new action. This means this component does not search for the correct binding anymore. You can manually fix the issue by enabling debug mode in the inspector and selecting “Non Composite” as the composite type. This will then fix that binding display.
I have a fix for that on the way which will also bring the UITK Image Prompt more in line with the Image Prompt, adding more options and some preview images to the inspector. Here is how it looks like at the moment:
Thank you. That’s correct and was an oversight. The MonoBehaviour will be removed with the next update from the class.
I see this is an issue. I’m not too familiar with UI Toolkit but changing the InitializeUIDocumentData method to this should allow me to additionally select a parent root visual element and only search for elements under this element. Will add this to the upcoming update.
private void InitializeUIDocumentData()
{
for (int i = 0; i < spritePromptDatas.Count; i++)
{
if (rootDocument == null || rootDocument.rootVisualElement == null) continue;
// If no root element specified, search from document root
if (string.IsNullOrEmpty(spritePromptDatas[i].rootElementID))
{
spritePromptDatas[i].image = rootDocument.rootVisualElement.Q(spritePromptDatas[i].imageID);
}
// If root element specified, first find that element, then search for imageID within it
else
{
VisualElement rootElement = rootDocument.rootVisualElement.Q(spritePromptDatas[i].rootElementID);
if (rootElement != null)
{
spritePromptDatas[i].image = rootElement.Q(spritePromptDatas[i].imageID);
}
}
}
}
Sounds good :).
Do note the point about single binding actions, i.e. where the same binding is used for both keyboard and gamepad.
The section in my post starting with:
When changing to Binding Index, it also fails to resolve for the Gamepad.
Ah, yes you are right. I will have a look at that in the future. For now please use “Search Binding By Binding Type” instead for bindings like Cancel [Any] or Submit [Any]
Hello, been a long time user of this asset and it’s been great to me so far!
However, recently I’ve run into an issue regarding the icons not appearing correctly or at all, in any build I make. In editor, it works perfectly fine, there are no issues whatsoever, but whenever I build the game, all icons that use the style tag don’t seem to work at all.
I’ve tried every method of troubleshooting found in the documentation and nothing has resolved this issue. I’ve checked all style sheets, icon sets, my input actions and so on and nothing has changed.
Incidentally, it seems every other aspect of the asset works fine as the icons do switch between gamepad and keyboard correctly, however, neither device shows the correct images for icons and in some cases they show up completely blank. I can also change and rebind inputs which also reflect correctly in any non style tag display.
That said, any other form of displaying icons seems to work without issue, for example, the rebinding script seems to work fine:
I’m not sure if there’s just something extremely obvious that I’ve missed or if there’s some strange bug, but I would appreciate any help if possible!
Thank you for any response!
Thank you for reporting this issue.
Which version of Input Icons are you using?
Here are some things that come to my mind which might be related to this:
- Do you have multiple InputIconsManager scriptable objects in your project? If so, please try deleting all but one as they might be fighting over the style sheet entries.
- Make sure the remaining InputIconsManager is placed within a Resources/InputIcons/ folder
- Double check that all your used Input Action Assets are assigned to the InputIconsManager and that the control scheme names on the manager match the control scheme names within the Input Action Assets
Hello, I am using v3.2.03! Thank you for the response!
- I only have one Manager object in my project.
- The Manager is indeed placed in Resources/InputIcons.
- I’ve checked this as well multiple times, everything seems to be in order for the manager, action assets and the control schemes. Perhaps I did something incorrectly here?
)
Perhaps updating to a newer version would help? I initially refrained from doing this because I didn’t want there to be any conflicts in the project, but it may be better to do so just in case.
I don’t think updating to the latest version should be necessary, but I also think it wouldn’t break anything. If you decide to do so, make a backup first just to be safe.
After giving the displayed icons a second look I guess that the TMP_Sprite Assets in the TextMeshPro/Resources/Sprite Assets folder could be broken. They should look like this:
If there is something wrong with them and you haven’t referenced them anywhere, try deleting the Textures and recreate them through the setup window. My guess is that the individual sprite sizes in the Textures somehow got messed up.
Oh! Thank you for this, although it wasn’t the exact issue I actually found the root cause as a result of this suggestion! It seems that I had the max texture size in my build settings set to 2048, which affected the sprite atlas sizes, thus causing the sprite cells to encompass multiple sprites/empty space, which led to this issue!
Silly me! It was such a simple thing, lol. I appreciate the help, however, thank you!











