Disclaimer. The asset is NOT broken, it was my inattentiveness that led to a waste of time. But still there is something to learn out of this, so I will keep the post, at least for now, and complement it with a bit of negative points and positive ones.
ReIconed for ReWired as the name hints is an addon for Rewired, a must-have asset for handling input (there are alternatives, but…).
The TMP Sprite Asset (my version of TextMesh Pro is 3.0.1) has a different format with separate Sprite Character Table and Sprite Glyph Table.
And the version of ReIconed does NOT take it into account, all Glyph ID are set to 0, and pointing to “Esc” glyph.
It took awfully a lot of time to investigate, particularly because it is impossible to find the discord mentioned by the author of ReIconed in another review, and the support site does NOT have anything related to ReIconed.
The asset is described as a time saver when in reality it can waste a lot of time just to find out how to make it work.
The fix is actually an easy one:
1a. Select NullSave/ReIconed for Rewired/TextMesh Pro/Sprites/desktop
2a. In Sprite Character Table for every required character set “Glyph ID” equal to “Index”.
1b. Repeat the same changes for NullSave/ReIconed for Rewired/TextMesh Pro/Sprites/controllers
2b. See 2a.
Maybe later I will automate the fix, but for now it is enough just to know that the fix exists.
// ps. The fast and dirty script to fix looks like this:publicstaticvoidMain(string[]args){inti=0;// var fileName = "../../controllers.asset";varfileName="../../desktop.asset";using(varinput=File.OpenText(fileName))using(varoutput=newStreamWriter(fileName+".new")){stringline;while(null!=(line=input.ReadLine())){if(line.Contains("m_GlyphIndex: 0")){line=line.Replace("m_GlyphIndex: 0","m_GlyphIndex: "+i);i++;}output.WriteLine(line);}}}
The proper solution is:
Install reiconed_2019plus_support.unitypackage from the asset’s folder
or
Follow the Troubleshooting section in reiconed.pdf
This behavior is intended for whatever reasons. The default version of ReIconed supports pre-2019 versions of Unity (and now it’s May of 2021).
How should we learn about the needed upgrade?
2a. There is an overview page on Unity Asset Store. But there is no information about the needed upgrade.
2b. The author have a site, which is linked from the store. Again, no information and the asset itself is not mentioned anywhere on the site.
2c. Some assets after installation show a welcome screen, but… not in this case, there is no welcome screen and thus no information about the essential upgrade.
The correct answer is “Look in the asset’s folder, there is a pdf file with instructions. And also an upgrade package.”
I’ve checked all other assets that I use in the current project, and most of them have documentation in their folders. But none of them have it just there: there is always online documentation, forums, discord, youtube, etc.
No link for discord, despite it is mentioned by the author when replying to a different review.
It seems the email is the only obvious way to ask for support, but the site is not obviously connected to the asset (and btw my browsers have consistent problems with the first loading of the site).
After all of these things the author’s phrase about “sharing the uncovered issue” sounds a bit like mockery. Where is your “sharing”?
ppps. Anyway there are some important lessons to take out of this experience, at least for me and for any of my future projects that will be publicly available:
Deliver offline documentation. It looks like it is still important for many people. Also keep it relevant (that’s another story about another asset).
Publish documentation online, because other people (like me) search online first, and offline later/never.
Make it obvious for new users where to look for information regarding initial setup and more advanced topics. The store page and dedicated page on the site both are a good place to start.
Supply multiple ways to look for support. Any independent forum is a good storage of questions and answers, and it will keep helping people even after the author switches to other projects.
pppps. One more thing
There is a good opportunity for optimization in the asset’s scripts, i.e. replace Update methods in ReIconed components with event based system. But I’ll leave that for now (maybe until a mobile game).