▩ Create amazing 3D texts and UIs with a simple and versatile tool. Add some 3D flair to your dull 2D UI and create immersive in-game UI that can interact with your game world. Just right-click in the scene hierarchy and create 3d UI just like creating a cube.
▩ Compatibility Supports all render pipelines. Just select ANY material and it would work. Unity version: 2020.3+
▩ Type in 3D Real-time
▩ Easy Effects with Modules
Modules Provide an easy way to add effects for individual characters on the creation and deletion && UI events. Just drag and drop pre-made modules or create your own. The documentation includes an example of how to create modules easily even for beginners.
▩ Powerful & Flexible 3D UI elements
All the UI elements of Unity in 3D with a lot more style. ⛶ Lists ⛶ Buttons ⛶ Toggle ⛶ Slider ⛶ Input field ⛶ Slider + Progress Bar ⛶ Horizontal Selector
⛶ Includes 50+ ready-made 3D fonts. ⛶ A tool to create 3D Fonts from a TTF file. It was built with the sole purpose of being easy to use for anybody. Takes less than 30 seconds.
▩ Sample Scenes
Status Tooltip example
tallgrippingfossa 16 simple sample scenes to get acquainted with the asset and example use cases to get inspired.
Additional features ⟶ Custom editor window to set default properties for newly created elements or make mass changes to every 3D UI in the scene ⟶ A powerful Typewriter script with appropriate functionalities to suit your needs. ⟶ A simple Countdown system.
I am curious to see what games/products people are using my asset for. If anyone is comfortable sharing, I would love to see your work. Please post them here or email me at ferdowsurasif@gmail.com
Missing graphic in toggle list now instead of null pointer error, gives a debug message with the toggle, toggle name, graphic list name and item number.
Added a toggle for the behavior where clicking on a input-field enables it and clicking somewhere else disables it. It’s in the ray-caster.
UV mapping issue fixed.
Version 1.2.4
Added a modules tutorial scene
Version 1.3.0
Added non-English language support
Code comments cleanup
On-input and On-Backspace events added for input-field
Added a warning check when font-asset is not assigned while building a font
Fixed a bug where font creation caused a single Debug.Log error once that had no impact on anything except look ugly
Version 1.3.1
Added 25+ new fonts (Total 50+)
Progress bar has been added
Fixed a bug with floating points
Sample scene update
New button style models added
Button mouse click behavior updated
Version 1.3.2
Removed the “You can’t have any other child object of the object with Modular3DText attached” limitations.
Massive Inspector UI improvements. Such as options to enable disable specific styles from applying.
Modules now work with List & Buttons.
Large Text combine bug fixed.
Fixed a bug where unselect event was being called twice
Custom delete after duration option added
Version 1.3.21
Fixes a bug with “.”, the dot . Looks like it was introducing some other small annoyances.
Circular text early version added.
Version 1.3.22
Bug-Fixes:
Fixed a bug where text alignment was one character off when centered and two off when aligned right.
Circular Layout Text works a bit better now
New:
Loop animations
Sample Scene: Shop Sign (Loop animation)
Sample Scene: Damage Effects
Slider has a new method UpdateValue(int/float)
Changes:
Slight improvement to VR Sample scene
Add Rigidbody module has more options now and has a bouncy physics material assigned by default
Some built-in fonts improvement
Version 1.3.23
New:
To Upper Case, To Lower Case Toggle
Particle system module
Sample scene for particle module
New utility panel customization tab to set up default font/material etc. Or just update every item in the scene. It’s still in active development and will have more features added on later. Found in Tools>Modular Text
Changes:
Slider & Input string visual update methods now take style options from List just like buttons
In-editor font creator can export font as mesh instead of OBJ too
Few more scripts are out of DLL(Mesh/Obj exporter & some helper class
Version 1.5.02
New:
Sample scene: Damage effect example usage script have been removed and replaced with StatusToolTip script with more functionality and for ingame usage, not just example usage.
Changes:
In-Editor font creator now adjusts vertex density automatically. Before some characters were too complicated to create with low vertex density.
tldr: all characters should be included in the font created inside editor without user needing to do anything manually.
Version 1.6.0
Introducing different more standard ways include character range when creating fonts.
Along with previous character range,
Unicode range
Custom characters
Unicode sequence (Similar to TMPro)
Version 1.6.11
Option to hide letters in hierarchy.
Inspectors now remember their layout. Improves ease of use greatly.
Import settings for included fonts updated to remove unnecessary materials
Slider value range events now check value range events first to avoid error
Slider handle gives a warning when a slider isn’t assigned
Slider right to left bug-fix
Check added to remove duplicates from character range of font creation
Fixed a bug where free layout items were moving when selected
Fixed a bug where first item selected event was called even if a list wasn’t active
Version 1.6.11
Better spacing
Tool-tip improvements
Version 1.6.2
Better spacing
Tool-tip improvement
Version 1.6.4
Font creator naming convention changed. Will avoid the rare occasions where illegal character names could cause errors
Fallback fonts added.
Local scale is applied properly now
Undo properly updates texts now
Fixed a bug with font creation failing for certain countries that use comma instead of dot for decimal separator. Fixed thanks to Alexander Shimanov!
Version 1.6.5
Auto-create in play-mode is on by default now.
Modular 3D Text now has an extra component that manages updating the text in
Editor Code cleanup in letter and text
More options in Preference
Editor UI improvemenst. Thanks Daniel Rainville for the advice
Version 1.6.6
Fixed a bug where a chance to have unnecessary error log popping up when editing prefab in prefab asset window.
Combined meshes are no longer needed to be saved to persist between scenes. They are automatically created if missing.
Version 1.6.7
Font changes are instantly applied in current scene
Disallow multiple elements added
Option in Raycast selector to unselect button from list when not hovering
Fixed a bug where animation was not trigerring if AutoSelect first item wasn’t selected
Version 1.6.8
New UI element: Horizontal Selector
Code cleanup
Version 1.6.9
Input String has been renamed to input field to match with Unity’s UI.
Toggle’s “active” variable has been renamed to “isOn” to match with Unity’s UI.
Toggle’s active & inactive item is game-object now, instead of a list.
Fixed a bug where in Editor mode, texts might not update properly via input field.
Added an option in Text to enable editor only console logs for debugging.
Directly setting the text of Input field will automatically update it.
All codes from slider handle has been moved to slider. Handle is no longer required to update slider.
Input field will automatically update if you set the text.
Toggle will automatically update if you set the IsOn property.
Code refactoring and added more comments.
Modular 3D Text now has a text-anchor variable that behaves exactly same as unity text’s text anchor. The previous variables have been marked obsolete.
Version 2.0.0
Major refactoring done to text component to simplify it. Most variables have been turned into properties to automate text updates. So, it is no longer needed to call UpdateText(). But the public methods are still kept to not break existing codes.
Version 2.0.1
Editor performance improvement
Fixed a bug where there was a single frame delay in updating texts in-editor Play mode.
Added a check to make sure text can’t be updated multiple times before getting rendered once to avoid performance hog because of random scripts controlling the text abnormally. This can be turned off from advanced settings.
Version 2.0.2
Editor performance improvement
Fixed a bug that was causing issue creating new lines in text in Editor
Version 2.1.0
Updated asset to 2019 Unity version to comply with up-coming Asset store requirement.
Bugfix: List/Button visual updates now sets text dirty to mark/save changes.
Bugfix: In-editor, List/Button no longer updates text unnecessarily.
Bugfix: Fixed a bug where controlling list with keyboard when list had 0 elements caused a error.
In editor darkmode, modules have better coloring.
Updated almost all inspectors.
Version 2.1.1
Bugfix: Toggle sample scene references the new asset properly now.
Input field performance improvement.
Version 2.1.2
Module tutorial update.
Version 2.1.3
Bugfix: Parent scale not properly being applied to text
Version 2.2.0
Bugfix: Fixed text updater empty mesh check.
Bugfix: Scripting define fix that was causing build error.
Version 2.2.1
Bugfix: Fixed a bug where old texts weren’t cleaned up properly if updated when text was inactive.
Version 2.2.2
Bugfix: Some sample scenes weren’t working as intended. Fixed.
Version 3.0.0 Please completely remove the old asset from your project before updating it.
I suggest updating only if you have some time or are on a new project.
Better Single Mesh workflow: The new workflow massively improves the in-editor experience and prefab interaction.
Layout systems overhaul: The layout system is separate from the rest now. So, it is easier to reuse it and create custom layout systems to fit your need. They can be used for any usage, even outside the UI/text system like creating a row of tiles, fences, and buildings.
Better language support: 3D Fonts now keep the data from the original TTF file. So, missing characters can be created at runtime. This means improper character range input is less punishing. In the previous version of the asset, it couldn’t handle languages like Korean/Chinese because combined letters weren’t included in the 3d font because there are too many of them to hold individually. But, now it can generate them when needed as long as the original file data is kept.
Better spacing: In previous versions, the asset would use character bounds to set the position of each character. This would often create a different look than its 2d counterpart. Now, this is moved to a setting that can be turned on/off and by default, the font will use the original “advance”/spacing specified in the TTF file for positioning.
New input System Support Added
Module systems overhaul: Modules are easier to modify for each instance. It also improves the inspector for custom modules.
Individual character control: There are more options to modify how each character looks by selecting the 3D font file.
Removed built-in pooling.
A lot of new pre-built fonts were added.
UI improvements.
Unimportant stuff is hidden from sample scenes now.
Bugfix: Fixed an instance where texts were setting the scene dirty for no reason.
Version 3.1.0
Default settings window
List, Button code variable renaming for better consistency among the codebase according to a suggestion by a user.
Included material names have been appended with “MText_” according to suggestions.
Bugfix: The default input action asset is now correctly assigned.
Version 3.1.1
Bugfix: “Gridlayout” delayed character deletion position bugfix.
Version 3.1.2
Bugfix: Word spacing setting on the text is working now.
Version 3.1.3
Minor change - Settings file load system changed for slightly better in-editor performance.
Version 3.1.4
Bugfix: Fixed an error that appeared, if both input systems were enabled.
Version 3.1.5
Bugfix: Fixed a bug with the legacy input system where the wrong submit event was getting called if “tickrate” was set to 0.
Updates to sample scene
Bugfix: DLL target fix for different platform build targets.
Version 3.1.6
Bugfix: Modified import settings on icon texture to avoid a bug
Added an advanced setting in the text to run module coroutine from character object to avoid coroutine interruption in case text is disabled/destroyed while a deleted character was running in a module.
Version 3.1.7
For non-text Grid Layout Groups, added Line spacing style options: Maximum (Previously default), minimum and individual spacing settings.
Modules only apply to new characters added now regardless of the combined text setting.
Layout element gizmos now rotate properly.
I have marked all sample scene items visible in the hierarchy.
Version 3.1.8
Bugfix: Touchscreen input fixed for raycaster input for the new input system.
Version 3.1.9
Bugfix: Linear and circular layout auto-update for combined texts, fixed.
Version 3.1.10
Added option to apply module on pre-existing texts on instantiated or on enable.
Updated the tooltip for clarity.
Version 3.1.11
Bugfix: The first space in the first line before the first word was getting ignored.
Version 3.2.0
Added ability to create fonts runtime.
Version 3.3.0
Password mode for input field
Version 4.0.0
A significant overhaul of the asset. Please remove the old version of the asset if you are updating it and do it when you have time.
Inspector updates of all the UI elements that improved readability and efficiency.
Avoid pink materials by automatically importing the right materials for your pipeline using an in-house importer tool.
Better undo/redo support.
Namespace modification for clarity and extendability. (Link)
More detailed documentation to modify or add functions to the asset.
Vertical wrap/overflow modes for Grid Layout and more spacing styles.
Better controls for Circular layouts.
Optional setting to always update layouts in play mode.
Separate input processors for default and new input systems making it easier to debug/modify/build new systems.
More background types for the slider.
Input field content types support.
Ability to set up ‘Assembly Definition’ files with a click of a button.
Major refactoring to the naming schema of scripts to match other standard assets.
Reorganize folder structures as a method to future-proof.
Layouts now work in Canvas
UV remapping option added.
It is easier now to find the right section of documentation using help URLs and custom buttons right in the inspector.
and much more minor improvements.
Version 4.0.1
Minor inspector improvement and small editor-only inspector bug fix.
If you run into any error while updating from 4.0.0, please remove the scripts folder from Plugins/Tiny Giant Studio/Modular 3D Text/Scripts and re-import. There won’t be any more errors.
Custom inspector for layout elements added.
Fixed a bug where user-created modules weren’t loading default values when getting added for the first time.
Modular 3D Text - Version 4.0.1a
Fixed a bug where the ‘repositioning old characters’ setting was not being applied.
Modular 3D Text - Version 4.0.2
Removed max vertices limit on combined text. So, large texts are not split into smaller ones. It can be turned on/off via the inspector.
Undo fixed for Grid Layout’s Justice alignment setting.
Undo fix for creating a list.
Text inspector performance slightly improved.
Please check the version list here for change history with dates and full details. No updates after June 2023 will be added here to reduce clutter.
I have bought this and think is really excelent, awesome and amazing, and really is the best font and text asset I have found in the asset store, I have been waiting very long time for something like this to appear and be available for Unity and now is a reality
This is really very useful and great that apart from having such huge amount of already made 25 high quality fonts for this very small price, is also included the blender file to make your own too.
I have seen that in the package there is only just only 1 sample scene that is about the awesome typewriter text, but please, where are the other 9 sample scenes?
BE ABLE TO USE CUSTOM MATERIAL TEXTURES OR SHADERS FOR THE FONT MESH?
I have seen that is not possible to use any kind of material that includes a texture
Please, I am missing something and making something wrong, or the fonts may have some problem with the UV?
When I solve this I will then make a very good positive review in the asset store
Thanks very much for making this amazing asset and wish you all the best and that lots of people can find this and buy it to use it.
Could you check if the download was maybe incomplete or it’s not the latest version? My guess is you probably need to update it since the scenes were added in a version after your purchase.
Found the issue with UV mapping. Pushing an update within a few hours. Unity usually approves my updates in less than 24hours.
Edit: It has been approved already. Unity asset store team is as awesome as ever. The latest version is 1.2.3. Hopefully this version helps you achieve what you are hoping for. Feel free to let me know of any concerns or suggestions. Always happy to help.
WOW!!! This is really an awesome support, Yesterday I asked for help and you answered fast here on the forum, and in less than 12 hours, today there is already available the fixed version to be downloaded from asset store. Thanks really very much for the great help
I can confirm that now the new package includes all the 10 scenes and that all the fonts are now compatible with any material with textures or shader
Also think that the 10 scenes included are really great, useful and very helpful to know much more how to use the asset in a good way and it has really much to offer, and this rises even more the already great and huge worth of this awesome asset
This asset is really gold, or better, diamond value, for all the things that includes and for how easy and fast is to use it
I like much the scene that includes all the fonts on the floor as this is really very useful and helpful to have to be able to choose and see the fonts that you may want to use.
I have just added the names of the fonts to the modular text so I can know which one is it by name, and it it very easy to do it as you have just only to write it on the modular 3D text in Inspector.
How have you been able to put two different colors in the same font letter as shown here below?
White on top and Red on sides
Is this a special material or shader?
Because as far as I know for one mesh you can only add one material, and the material covers the whole of the mesh and so you can not put one color for the top and another for the sides.
BE ABLE TO HAVE AN EXAMPLE OF MODULES ?
I have seen the documentation, but I am sorry that I do not understand correctly how to use the modules you have included.
Please, would be possible if you want and can to include this other demo scene shown here that is about modules?
Thanks very much and wish that many more people can find this treasure and gem of asset as you deserve all for a great work you have done
Two colors:
You can use Shader to achieve that. But in the screenshot, I just put one text with low Z scale on top of another text.
I had a plan to add some shader effects originally but due to Unity’s three render pipelines and asset store rule to support standard render pipeline by default, its hard to manage shaders. Unity said they will make URP default in the near future, I will add shaders after that,
Modules:
The scene in the screenshot was originally in the asset & I removed it to clear clutter since some other scenes were using modules. Looks like it was a mistake on my part. Apologies. I will re-add it with a tutorial on modules in the scene and upload a new version to the asset store. Hopefully it will be live on the asset store by tomorrow.
In the documentation(not the online one, the one in the downloaded folder, 2nd page I think), there is a link to the entire project I made for creating the marketing materials. It’s the whole project, not to be imported into another one, not optimized, not organized & occasionally older scenes break after I am done with taking screenshot. Read the readme file in Github. But it contains every tree, texture, scene I make for the asset. Feel free to check them out. Or, just ask any questions. Always happy to help.
Edit: Submitted the new update with modules tutorial (will be available to download as soon as it gets approved. Usually takes less than 24hours in my personal experience. New version is 1.2.4) & the countdown example scene has been modified to similar as the screenshot.
Edit: The new version is live in the asset store & ready to be downloaded.
I think is good to keep the compatibility with Unity 2018 and 2019.2 (not force to use Unity 2019.3 as it is changed much) as then more people will be able to buy it and use it, and if you may want to add a URP version, you can include it as a Unity package inside that you can open only if you are going to use URP
I like very much and is great and easy that you can change the materials of all the 3D text used on the Module Text script just by selecting one material and WITHOUT having to choose all the letters objects so this is very helpful and useful
Oh, YES, you are right, if you just duplicate the text object, and then put the Z scale to 0 of the copied one, you can then flatten the 3D and put it on top of the 3D version and it works correctly, sorry I did not think about it.
And you can optionally also have a 3 Color version, if you duplicate the 3D version and then lower it below and change the color
And could be also more possible combinations that could be done
MODULES SCENE
Thanks very much also for adding the modules scene, Is good to learn more how it works correctly.
POSSIBLE ERROR ON MODULE TEXT SCRIPT MATERIAL
Although I have seen that it seems that it does not work with ALL the materials, with some it works but not with others,
Since there are some awesome shaders already available in the asset store & currently lacking the idea (& knowledge) about some special shader specially for texts, including shaders in the asset is currently in low priority, but still in to do list.
Yap, the only limit is imagination. I suggest looking into VFX graph & feeding it the mesh built by the asset. VFX graph has some awesome stuff you can do with meshes. I can’t share but the first buyer of the asset made an awesome dialogue system with it.
Always happy to help
Is it not working depending on different materials or in certain conditions.
For editor, is the “Auto update in Editor” setting turned on? This should be turned on by default.The text only updates to reflect changes only if the “Auto update in Editor” and you have the text selected. This behavior is for performance, not to unnecessarily run a code.
In playmode, “Auto update in playmode” needs to be turned on to automatically update the text. This is turned off by default. For performance, you should call “UpdateText()” method after making a change instead of autoupdate in playmode which runs in Update().
I have tested with different materials, with different textures&shaders. Everything seem to work.
I am currently using it in my project. Here it is using a hologram shader:
Thanks very much for your long and detailed answer
I agree that there are lots of materials already available, and many of them are free (just put “material” on the asset store and put price low to high) and is not needed at all to include any textures or materials in your package
Yes You are right, I have made a new project with Modular Text and loaded many different materials and shaders, and have to say that ALL of them did work correctly and there has not been any problem. So I was wrong telling you that it was not working and should have tested it more with a clean project.
Sorry very much that I have done it wrong and did not offer you a way to make you be able to test it yourself on your side and that I myself did not check what was really happening and have a proof of it.
This looks very good, elegant and well done, great design, what kind of game is it? Is this is for computer or mobile?
Wish you all there best for you, for your text asset and for your game
Thank you. It’s a computer game named “Severed Moon” designed after a very old game I used to play called “Future Cop LAPD”. I originally made the Modular Text asset for this. And later released it in the asset store to fund the game.
I’m considering getting this asset, as it looks very promising. My one question is the support for other languages: I know the page said it supports English only, but if I convert my own font in Blender, couldn’t I export the characters/glyphs necessary to support other languages? I have experience supporting other languages with a custom UI system, so I was just wondering if there was the limitation is just what the built-in fonts support, or if there’s some other issue?
Seems unlikely that it couldn’t be customized to support other languages, but just wanted to check. (Doesn’t bother me to have to customize it)
Hi,
Thank you for your interest.
Yes, it can be improved to support different languages. I am currently working on it.
for i in range(ord(u'\u0021'), ord(u'\u007E') + 1)
This is the code that dictates which characters. Around line 140ish in the asset store version. https://unicode-table.com/en/#control-character .
From this table, first row, just getting the range which desired language characters belongs and replacing u__0021__ & u__007E__ gives a list of all characters in the new language.(Currently working on doing it via UI). The language in the image is Bangla.
If you do that, you technically can use it with other languages. But it has some limitations(written below)
Great, thanks for the response. Not totally sure I’ll use in this project, but I’ll pick it up anyway since I want to try more in-world UI, and it’s very likely I’ll use it in a future project.
Hi, may I have an example of how it can change the text at runtime? My plan was a countdown number at high speed, example $100,000 countdown to $0 in 3 seconds, is it possible?. Thanks a lot…
Hi,
You can turn on “auto update in runtime” option and it will check for changes in Update. It is turned off by default to not unnecessarily check for changes on texts you don’t need to change.
Alternatively, you can call the UpdateText() or UpdateText(string newText) method to update it manually.
Thanks for quick reply. May I know how heavy it will take to do the live update? I worry that it will be lagging and won’t give good experience to players.
I don’t remember the exact number but it checks about 10 bools & string change in Update when autoupdate is turned on(I will update the exact number in a few hours when I return to computer).
It’s as heavy as the bool comparisons.
But if you are updating something volatile like Score or that $100,000 countdown to $0 in 3 seconds where value changes are often done multiple times a single frame, Auto-update is better for performance since it won’t update the text unnecessarily. Also, turning on pooling helps greatly for performance.