A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
Discussion in 'Assets and Asset Store' started by Stephan-B, May 29, 2014.
@Stephan B - Will you give us a heads-up a few days before any price increase?
I will. Right now I am thinking August 1st might be when the pricing will change.
I hope there would be a discount before then!
I've been eyeing this asset for long, waiting for discount
TextMesh Pro was released about 18 month ago as beta and as such, I decided to offer the product at a 30% discount.
TextMesh Pro will never be available for less than $65.00 (for individual licenses) because those who purchased it while in beta when it was unknown and had no reviews took the greatest risk and deserve my gratitude and to have paid the lowest price.
Although I could have taken the product out of beta months ago, I decided to keep it as beta until all the features that I had on my 1.0 list were available. These features are now all available in TextMesh Pro and as such I am now ready to finally release version 1.0 and take the product out of beta. When this occurs (around August 1st), I will no longer be offering this 30% discount and as such the price of TextMesh Pro will be adjusted accordingly.
After version 1.0 is released and from time to time, I will certainly be participating in sales. However, I will never offer the product for less than this $65.00 again as I strongly believe those who took a chance on me and purchased my product while in beta deserve to have paid the lowest price and my sincere gratitude.
My plans are to make an official announcement on July 1st to announce that version 1.0 will be release on August 1st to give everyone interested in TextMesh Pro 30 days to take advantage of the 30% beta discount.
I forgot to thank you for the quick and thorough answer. I haven't yet bought TMP (kind of hoping it is on sale) but it will do so this week or next.
I have another question if you don't mind: Can I apply a substance to a TMP object?
The current price does reflect a 30% discount since the product is still considered in beta. This will be changing on August 1st as I will be releasing version 1.0 at which point the price will be increased by 30%.
I have not played nor done any testing with Substance. You can assign textures to the face and outline of the text when using the normal TMP Distance Field shader but I don't know if substance textures can be assigned there.
Editing to remove my incorrect response nobody gets confused.
@Stephan B, Thank you your help. Just purchased TMP. It looks like my app will look super awesome with your asset.
substance is code that generate texture(s)
You can use the unity API to assign the texture generated by a substance to a material (shader).
TMPro support a few texture channels you can assign (on the TMPro materials)
- Base color texture for the face
- Base color texture for the outline
- Bump map
- Env map
This is available for both the Surface & Self lighted materials.
note: More texture channel could be supported to control per pixel gloss for example.
Added some utility functions to control the sorting and rendering order of individual characters and underlying geometry.
In this example, the characters are scaled randomly. The geometry is sorted to ensure the larger characters are rendered in front of the smaller ones.
The script used here is a modified version of the VertexJitter.cs included with the latest release of TMP.
I've several ttf fonts and using Unity UI text happilly supporting English, German, French and CJK. One only of them supports CJK which becomes the default font for CJK.
I am converting each ttf fonts to TMPro. For non-CJK font, I can convert to Extended ASCII and that is probably working fine.
But how do I convert my TTF (Arial/Tahoma) for CJK. I tried giving huge Unicode Hex Range(0000-FFFF), it crashes the Unity. Tried copying text in file and using file as text asset. It still doesn't do anything.
I could not find a way to generate TMPro from Arial/Tahoma for Chinese,Japanese and Korean languages. What is the recommended way to support these language?
PS: Localized text in hardcoded in C# files autogenerated from CSV.
How do I group several text elements together in a UI. I've created several UI TMP text elements . They have all same transform size with auto-size enable.
First element is "a"
and Second element is "aaaaa"
It show "a" has higher font size and "aaaaa" at lower font size. I font both of them to be shown at same font size (lower). How do I group them together?
See my reply to the same question in the other TMP forum thread here.
By design, the auto-size option will increase or decrease the point size in order to fit the text inside the given RectTransform dimensions. So if the RectTransform of different text objects is the same size but the text varies in length, you will end up with different point sizes.
Since having several text objects end up with different point sizes is bad (from a visual / design standpoint), you would want to find the point size that the largest text object will need to fit inside the RectTransform. Once you have found that optimum point size, you will disable auto-size on all objects and set their point size manually. This is the most efficient way to achieve this.
I'm not understanding how to find, manipulate and apply new materials created by choosing Duplicate from the SDF in the Inspector beyond the simplistic one-shot shown in the video made in 2014 (the latest I found in your forum). I see that ARIAL.SDF results in ARIAL.MAT and for that specific text object I then have both in the drop-down but I don't always see them for other text objects.
How is this drop-down populated? If I rename the file in-place (in the TMP Resources / Fonts & Materials folder) it isn't picked up. I was doing some material assignments from code so I have a Text Materials folder and I can use those fine, but now I'm doing static UI stuff and I don't see a typical drag-drop material slot.
It isn't making much sense to me... is there a reason for not just using a simple material slot in Inspector?
See the following updated video which covers how to Create and Work with Material Presets. The video also covers Drag-n-Drop of Material Presets. This updated video is also available here and sticky in the Tutorial, Tips & Tricks section of the user forum.
Material Presets are normal material with the exception that their internal texture references the Font Atlas texture of the Font Asset from which they were derived. These material also includes some other data related to the Font Asset from which they were created from.
The Material Presets in the Inspector panel is populated by looking for Material which (1) match the same font name (ie. Arial) and (2) also use the same Font Atlas texture. Since Unity does not include an API to find object references (ie. Find all materials that reference this texture), in order to to be efficient and not end up loading all materials, I am narrowing / limiting the search to partial name matching.
Thanks, that makes it all much more clear. I appreciate it. Really a great asset.
One minor question: at 7:31 you say the duplicated material is automatically assigned, and I see that is the case down in the shader section, but up in the Material Preset it still shows the default name (FuturaStd-Bold SDF Material). Is that a bug or am I missing something? Shouldn't they match? Ah, later in the video they do match. Anyway, thanks for clearing that up.
When I create Material Presets, I usually rename them but I keep the prefix. So if the Font Asset was ARIAL SDF, I would renamed my Material Preset to something like "ARIAL SDF - Drop Shadow". Since the Material Preset still contains "ARIAL", it will be pickup by the search done by the Material Preset pulldown and the new name makes it easier for me to know what it is.
I really wish Unity would add an API function like Object AssetDatabase.FindObjectsReferencing(Object obj); Until then, I am stuck using naming convention to reduce the scope of the search and materials it eventually has to load to check what font atlas texture they are using.
Here is another example of changing vertex attributes via script to create some type of Text Highlighting FX. In this example, the scale and vertex color of individual characters is changed as the cursor interests them. The geometry of the character is also moved around in the vertex attribute arrays to make sure it is rendered last and over the other characters.
This example script will be included in the next release of TextMesh Pro.
What you suggested will work first time with a glitch. But if text changes, I'll again need to enable "auto-size", then disable "auto-size", this will add hiccups.
Is there a way I can get the expected best-fit size of TextMeshProUGUI for specified text without actually rendering it?
TextMeshProUGUI as auto-size set to false, but I need to know the font size (float) if that is enabled without actually enabling and rendering it?
Like to unity ui text: I am using:
shortestTextFontSize = text.cachedTextGenerator.fontSizeUsedForBestFit;
You can use something like this
public class ExampleScript : MonoBehaviour
private TMP_Text m_TextComponent;
// Get a reference to the text component.
m_TextComponent = GetComponent<TMP_Text>();
// Enable auto-sizing
m_TextComponent.enableAutoSizing = true;
// Set the text
m_TextComponent.text = "Just a simple line of text.";
// For the text to be generated so we have valid data to work with.
Debug.Log("Optimum Point Size is: " + m_TextComponent.fontSize);
// Disable auto-sizing since we already know the optimum point size for the given text.
m_TextComponent.enableAutoSizing = false;
P.S. If you need more information, make sure you register to the TextMesh Pro User Forum and create a thread there about this topic. That way the information provided will be easier to find for any other user looking for similar information.
Doing some testing of the TMP text input field with Rich Text support. I still have to work out some issues but it is taking shape.
Support for rich text makes it possible to use the Multi Font & Sprites
That's pretty crazy. Any way to edit the tags once they're parsed and applied?
Yes. As you use the left or right arrow key to move through the text, when you encounter a tag, the caret won't move to the next character until you have pressed the arrow keys enough times to traverse the tag. If you type a new character or delete one anywhere when inside the tag, it will be revealed.
I am still experimenting with this and it works well. I am planning on adding an option where you will be able to enter tags but not edit them. In the non edit mode, the cursor will always move to the next character, ignoring the underlying tag.
Hmm, from a UX standpoint that's a lot of flying-blind. Using this will require the user to understand the tagging options and (probably) having quite a bit of help available. Just off the top of my head, some kind of tag-visibility toggle would probably make more sense in my opinion.
Cool feature either way, though.
If you are the user who typed the text, it isn't bad since when the cursor doesn't move left or right, you know that you are against a tag. However, if the Rich Tag edit mode was on and you were not familiar with this process and didn't type the text, it would certainly be confusing at first.
I did think of revealing individual tags as you enter them but given those are properly formatted tags, they are getting parsed. So <b> would never be revealed in the text normally. So I would have to implement so other mechanism to force revealing of valid tags.
I could add something like "Tag Hinting" where an extra text object would pop up over the area of a tag when the caret is inside of the tag.
Here is an example showing how this new Capline Vertical Alignment option in TextMesh Pro compares with the Center Vertical and Geometry base vertical alignment options.
This option is useful when trying to center text vertically inside a button or shape.
As you can see above, the normal Vertical Alignment uses the Ascender & Descender of the font which keeps the baseline consistent between object but gives the appeance of the text not being vertically centered since the text might not contain descenders.
The middle (geometry base) option centers the text vertically based on the text geometry. This results in perfect vertical alignment but can result in inconsitent baseline between objects as seen above.
The bottom and new option is the Capline option which has the benefit of keeping the baseline consistent and eventhough it ignores descenders it still results in the text appearing nicely aligned vertically.
TextMesh Pro Beta Ending Soon!
On August 1st or thereabouts, I am planning on finally releasing version 1.0 of TextMesh Pro. As such the 30% pre-release beta discount will be ending on August 1st and the new price will be $95 USD. If you were planning on picking up TextMesh Pro, it might be a good time to do so before the pre-release discount ends.
It has now been over 18 months since the first release of TextMesh Pro which now includes thousands of users including small indie developers like myself to some of the largest studios in the industry. I am immensely grateful for all of my users and want to thank all of you for the amazing support and feedback you have given me.
Many of the features included in TextMesh Pro were the direct results of your suggestions and input. As I have discovered since starting to work on TextMesh Pro, Text is a lot more sophisticated then I could have ever imagined. Please keep providing feedback as the release of version 1.0 only marks the beginning of our journey as there are still lots of new features and improvements that I want to make over the coming weeks, months and hopefully years.
Once again, thank you so much for your support
We are having some trouble on Retina macs. The text renders wonderfully when running at native resolution (that is, forcing the mac to render 2880x1800, which they DO NOT do out of the box), but renders poorly when rendering at its natural max resolution (1400x900).
Here is an example:
Is there a way to make text in the build render sharp for retina displays?
Hi I just purchased this plugin and I am facing issues where certain settings are saved when they shouldn't be from scene to scene. For example during the demo scene 09-TextMeshPro Title I modify the dilate settings in the Face area.
Now switching scenes to another scene and coming back I see the changes are saved despite and choosing don't save scene changes still saves them. What's going on? Is this intended behavior?
Also am I really expected to type like this, it's very unintuitive and just messy?
This is standard behavior in Unity as your are changing properties of the material (Material Preset) which is assigned to the text object. Since this material is a permanent asset, the changes you make are preserved.
Please see the following video which covers how to Create and Working with Material Presets which is a very important concept.
Also see Question 1 of the FAQ on the TextMesh Pro user forum as this is also kind of relevant to this as well.
If you want individual control over each character or sets of characters, you have to control them somehow. Rich Text Tags are meta data to allow you to control the text. The Text Input Box can certainly become more difficult to read when using lots of tags but it does show you everything that is affecting the text.
You can also learn about the <style> tag which allows you to define styles to combine tags.
@Mello42 Unity apps run at a fixed resolution. No sort-of resolution-mixing trickery. Retina support would really just come down to running the whole app at double resolution. Unfortunately, Unity doesn't provide official support to run at native Retina resolutions yet. There's nothing we can do about that, but wait.
There's also a topic on our forum about this.
As an aside, "hot to play" should probably read "how to play".
1.Thanks that makes more sense, also how can I locate the Spline Bezier curves to modify the shape of individual text for example this text:
I want to make the G and the N look really fancy by controlling the shape of the letters like you would using the Photoshop pen tool.
I have made that text in TM Pro but don't know how to modify them like that.
2.How can I achieve 3d text with Textmesh Pro as I can't really make complex animations with the camera orbiting it or anything fancy using 2D Text. In other words actual thickness:
The shape of the individual characters (glyphs) is defined in the font file that it used to create your font assets. The font assets contains a font atlas texture which contains each of the characters that you selected to include in your font assets. These shapes are stored as bitmap or Signed Distance Field data and not bezier curves. As such, you can only change the shape of characters by editing the font file and generating a new font asset that would include the modified glyphs.
For performance reasons, each character is made up of 4 vertices / 1 Quad.
Having said all of that, TextMesh Pro does include Multi Font & Sprite support where you can use multiple fonts per text object. So it is pretty simple to use (2) different font assets to get that fancier G and N.
In this example, I used two different SDF Font Assets. IMPACT SDF for the letters G and N and ARIAL SDF for the other characters. I could have selected a fancier font instead of Impact but this is just an example.
Here is the raw text used in the Text Input Box.
<font="IMPACT SDF" material="IMPACT SDF - Drop Shadow"><#ffff40>G</color></font>ame <font="IMPACT SDF" material="IMPACT SDF - Drop Shadow"><#ffff40>N</color></font>ame
See the following video which covers the Multi Font & Sprites. There are also additional and updated videos available on the TMP User Forum and on my YouTube Channel such as this updated one which covers the Sprite Asset Creation process and Sprite tag.
I could have also replaced the letters G and N by a Sprite as shown in this example where I used sprites for the numbered bullets.
So I see it's only meant for 2D Text then, not true 3d Meshes. That makes the title a bit misleading as it seems more like Text Plane Pro rather than being based on Meshes Pro. I got to GameObject > 3d Object > TextMeshPro Text and while it can support bump maps it's still not truly 3D. This makes rotating the text in 3d space impossible for a nice intro because doing so will make the text disappear on the sides since it has no thickness....
Also I created the TextMeshPro text but it appears in the corner of the giant UI in the scene view but in the game view it appears in the center of the screen. How can I make it stop doing that?
Sorry to ask so many questions, I spent a lot of money on this asset and I want to make sure I get it all right before proceeding forth.
Two triangles is a mesh. There's nothing deceptive in any of Stephan's pictures, descriptions or name of the product. Any 3D program can generate fonts out of 3D and then you can warp and bounce and make them do whatever animations you want. There aren't many reasons why you'd need real time, updatable true 3D text. This asset makes no claim that it does that.
TextMesh Pro is designed to replace Unity's Text Components which are "Text Mesh" and the new UI Text. The name was based on the only text component available in Unity at the time which was "Text Mesh". The product description and videos do explain the text / characters are rendered into (1) Quad / (2) Triangles.
The "GameObject - 3D Objects - ..." does not imply those are 3D object since you can find a Quad, Plane, etc. in there but indicate these are Worldspace type objects and more specifically not UI / Canvas objects.
There are (2) two TextMesh Pro components available. One designed to replace the old Text Mesh which works in worldspace and located in the "Create - 3D Objects - TextMeshPro - Text" menu. The other component designed to work with the Canvas system and replacement for UI.Text is located in the "Create - UI - TextMeshPro - Text" menu.
In terms of in the corner, just make sure you are using the correct component.
No need to apologize for asking questions. Just be sure to review the many videos available covering all these topics as well as checking the FAQ and numerous posts available on the TextMesh Pro user forum as you are likely to find answers to most questions there instead of having to wait for my replies.
Most importantly, ALWAYS feel free to reach out to me in the event you can't find the information you seek or answers to your questions. I am here to help.
Color Gradient Presets
I just added the ability to create a new type of asset in TextMesh Pro which are Color Gradient Presets. In addition to having the ability to define and use Color Gradients on text objects, you will now be able to assign a Color Gradient Preset which can be assigned and shared by multiple text objects thus making is much easier to manage these on all those text objects.
For example, if you currently had a project with 50 text objects using a few variations of color gradients, you would have to manually edit these gradients on all 50 text objects in order to tweak those. Once this new feature is released, you will be able to assign presets to these objects which will then make it easy to tweak these by editing the preset it self instead of having to find and mess with all the text objects individually.
Here is an image of the simple Color Gradient Preset Editor Panel
Here is an image showing the updated Inspector panel of the text object with new material preset property.
Here is a video explaining how the new Color Gradient Presets will work and improve workflow when using color gradients in TextMesh Pro.
The company where I work at has this plugin for some time... and we never used it. It just occurred to me that in this current project... I need to have some Worlds Space UI (VR ofc) ... and Unity World Space Stuff it's a bit messy and I was thinking... can I use TextMesh Pro to display some Worlds Space Text?
Thank You Stephan.
Absolutely. You can use either TextMesh Pro components depending on whether or not you are using the Canvas System.
For worldspace use and VR, I would favor the normal TextMesh Pro component which is located in the GameObject - 3D Object - TextMeshPro - Text menu.
For VR applications, Bitmap text is horrible whereby using SDF Font Asset in TextMesh Pro will get you great looking text at any resolution and distance from the text.
Be sure to update to the latest release which is Release 0.1.54 Beta 4 which is only available on the TextMesh Pro User Forum. The release on the Asset Store is 0.1.54 Beta 3b (not too far behind but still not the latest).
P.S. Send me a PM. I have a few questions for you.
Our team is considering using TextMesh Pro, but before we choose to go that direction, we need to know if it works for a specific purpose, namely to wrap text around an image. In other words, on an article-type page with some illustrations scattered around the text, we'd need something that properly offsets the text in order to go around images. The text would be dynamic, so we can't easily use multiple containers with different widths. Is this something TextMesh Pro could do, with or without some sort of workaround?
is this asset NGUI compatible?
I do have several customers using it with NGUI. The are several posts / threads on the TMP User Forum related to using TMP with NGUI as well.
The ability to have text flow around a shape / image is something that I would like to add but it is not in there yet. Having said that, Jasper Flick did post one way of doing it in TextMesh Pro. Here is a link to the thread where this is shown. The code might need updating and if so, I am sure Jasper will be more than happy to provide some assistance there.
Hi, at first thank's a lot for this amazing plugin, it's really usefull.
I wrote you, to report a bug on TMP_InputField class, at line 2300 ( caretRectTrans.localPosition = Vector3.zero; ), the carteRectTrans seems to be null, happen when we've click on input field and then click out to close it.
Thank you. I had a few reports on that one which I already fixed.
if (caretRectTrans != null)
caretRectTrans.localPosition = Vector3.zero;
I have a new release almost ready. I am hoping to have it available on the user forum within the next 7 days or so. It will include a bunch of minor fixes along with further improvements to the input field and some new features like the Color Gradient Presets and other stuff.
I've used TMP for the first time and it looks great.
I do have an issue but it may be just me. I worked on my TMP_Text prefab and when I instantiate it it looks blurry and much more different. The TMP_Text quiet text Qq is the prefab one and the Aa one is the instantiated one.
Looks like the AA text object might be using one of the Distance Field (Surface) shaders which require scene lighting. Next for the text objects to render correctly, they have to use uniform scale.
It is always helpful if you can post images of the text object inspector panel as well as material inspector with the debug panel section expanded. That way I can see the settings on the object, the shader used and material properties.
It is indeed using scene lighting and Distance Field (Surface) but I can't find uniform scale.
Thanks for incredible ultra lighting fast response.