Upgrading to TextMesh Pro v. 1.0.56.0b2 seems to have broken project

I just updated to the latest build of TMP (free version) from the Asset Store. Upon doing so, all my TMP - Text scripts attached to objects are broken. Clicking on a GameObject that has the TMP script attached, I see what’s in the attached image called ‘nothing_selected’.

When trying to add in a new TMP - Text UI element, I get the following warnings and errors (see attached images errors_1, errors_2 and errors_3).

I am running Unity 2017.2.0f3 on Windows 10.

EDIT: In a fresh project the TMP library breaks as well, although with a different error: “Instance of TMP_UiEditorPanel couldn’t be created. The script class needs to derive from ScriptableObject and be placed in the Assets/Editor folder.”

3325761--259078--nothing_selected.PNG



Are you upgrading from a previous Free version of TextMesh Pro?

Make sure that you ended up with the correct version of TextMesh Pro for the Unity 2017.2. You can verify this by checking the name of the DLL contained in the “TextMesh Pro/Plugins/Editor DLL/…” folder.

The DLL should be named “TextMeshPro-2017.2-1.0.56-Editor.dll”. If that is not the case, then you ran into an Asset Store issue where it gave you the wrong version of the asset.

To get around this issue, simply download the correct version of TextMesh Pro via the direct link available in the top sticky post in this forum.

Couple things:

I don’t have an ‘/Editor DDL’ folder. I only have an ‘/Editor’ folder. Secondly, my file name is ‘TextMeshPro-1.0.55.2017.2.0b12-Editor.dll’. Weirdly, this same file appears in the director above this folder (Assets\TextMesh Pro\Plugins). With these discrepancies in mind, do you still think this is my issue and I should download the file directly from the link you provided? The version listed in the Asset store does seem to be different than the version it installed into my project (1.0.55 vs 1.0.56).

Looks like the Asset Store got confused again.

I would suggest you download from the direct link I provided. Make sure you pick the version for Unity 2017.2. Import this new version in an empty project just to make sure all is well.

If the step above worked as expected, proceed to upgrading TMP in your main project. Be sure to read the Important Reminder and follow those instructions.

Please let me know if that all works as expected?

Importing into the fresh project worked. Importing it into my existing project now shows the error “Instance of TMP_UiEditorPanel couldn’t be created. The script class needs to derive from ScriptableObject and be placed in the Assets/Editor folder.” whenever I click on an TMP - Text object

EDIT: Ignore this, Unity just needed an old fashion restart after the import to fix this new issue. Seems to be working now, will test more. Do I need to delete the entire TMP folder before every future update - even ones directly from the Asset Store?

Also, I had my manually created Open Sans font asset set as the default font for all new TMP objects before. Now it’s defaulting back to Liberation Sans, and I don’t remember how to set Open Sans as default again.

Also, seems like I have to now manually go back and change EVERY TMP object back to Open Sans as all previously created Text objects are showing Liberation Sans now. Is there any quicker way to do this? It’s ridiculous to have to update every single text object manually after every update.

Yes. This is required because the Asset Importer is not an installer so it has no idea how to deal with files that may have been renamed or removed from an asset.

The reason why you had to restart Unity is most likely because you had a scene open that was using TextMesh Pro which in turn had the DLL’s loaded into memory.

I guess in order to avoid this behavior, you would have to close any open scenes. Then close Unity. Then restart Unity where this time none of the DLL’s would get loaded since we have an empty scene and then proceed to deleting / importing the new asset. But sometimes, I just go for “whatever” and close my scene, delete the old version of TMP. Import the new one which gets Unity unhappy and then restart :slight_smile:

In the TMP Settings file, you can assign what font asset will be used by default. When deleting the “TextMesh Pro” folder the TMP Settings will get reset (which I need to handle better on my hand so my apologies for that) but has per the Important Reminder, users have to be mindful of changes they may have made in their TMP Settings.

Assuming you didn’t save you Open Sans font asset inside the TextMesh Pro folder hierarchy. Something that all users should avoid, you should be able to simply change the Default Font Asset in the TMP Settings back to OpenSans and it should all work fine.

EDIT
Assuming you did delete this Open Sans font asset and reset your TMP Settings file, you can always go back to the backup of the project. (1) Make sure you move your font asset into some other folder location which if you want to be able to access font assets via the tag or load them at runtime should be in a Resources folder where you can also specify in the TMP Settings file a specific location for Font Assets and Materials Presets which by default is “Resources/Fonts & Materials/”.

3325822--259090--upload_2017-12-17_16-10-20.png

Then when importing the new TextMesh Pro package, un-select the TMP Settings file as to not import the new one.

I saved the main tff font file in TMP’s Font folder and the generated asset of that font in TMP’s Fonts & Materials folder as I figured if the asset I’m using for text already contains folders containing fonts and their assets, why duplicate them? I did not assume we’d have to be deleting these folders every single time we update.

I’m now saving my fonts in a separate Resources folder.

I recommend never saving anything inside the TextMesh Pro folder and this goes as well for any assets from the Asset Store. I always leave these unaltered.

Personally, I place project specific resources in folders like “Assets/Audio/…”, “Assets/Fonts/…”, “Assets/Resources/Sprite Assets/…”, “Assets/Resources/Fonts & Materials/…”, “Assets/Scripts/Editor/…”, “Assets/Scripts/Runtime/…”, etc. but this is a personal choice.

I keep my Source Font files (.ttf, .ttc and .otf) in “Assets/Fonts/…” since once a font asset has been generated, it no longer needs access to this source font file and as such I also do not want it included in my Unity builds.

I keep my project font assets (at least the ones that I am planning on using) in “Resources/Fonts & Materials/…” which is the location specified in my TMP Settings file. Again this project specific font assets are always outside the TextMesh Pro folder hierarchy. I have several folders of these like “GDC Examples/Resources/Fonts & Materials/…” and etc.

Upgrading to the latest text mesh pro destroyed all the fonts in my project too. (2017.1.1p2)

In the editor it just says “the associated script can not be loaded”

Just like the original poster noted, the file it actually put in my project was still the 1.0.55 instead of the 1.0.56 that it seems like it should have been.

Oddly downloading and installing the latest version from the link given above still had 1.0.55 and everything was still broken.

I give up though, I’ll just revert to a backup and try again later.

As per the Important Reminder / information, did you remove the previous version of TextMesh Pro before importing the new version you downloaded from that link?

I just checked the link for 2017.1 and it is the correct version. Here is an image showing the Asset Importer window and the version of the DLL in that download.

3326782--259190--upload_2017-12-18_11-49-33.png

Hi @Stephan-B ,
How are you?
So I have the same issue here. I have followed the sticky post, to the version .03b.
Unity 2017.3.0f3 and TMPro 1.0.56.2017.3.0b3 (dll only).

And I am getting the error:
Instance of TMP_EditorPanel couldn’t be created. The script class needs to derive from ScriptableObject and be placed in the Assets/Editor folder.

Thanks

Make sure you removed the previous version of TMP by deleting the “TextMesh Pro” folder before importing the new version. If you are trying this process when a scene using TMP is loaded, this will result in the old DLLs getting loaded into memory which can result in Unity throwing several errors. It is best to close any open scene first as well as Unity and open it without any scene that would result in loading the TMP dlls.

These are about the same instructions as per the sticky post instructions here . Again make sure you backup the project first. This process should work so maybe you ran into some strange import issue or something.

Keep me posted please.

1 Like

Thank you, I will do tomorrow.
Cheers

Hi, everything seems to be working. I deleted everything. Any custom script that referenced TMPro was //commented out. I actually left this alone for a week I think. Anyhow, with a fresh import, it is working.
Cheers

1 Like