Awesome
MeshEffectForTextMeshPro
NOTE: This project is experimental.
NOTE: This project will be integrated to UIEffect.
MeshEffectForTextMeshPro provide visual effect components for TextMeshPro in Unity.
<< Description | WebGL Demo | Download | Usage | Example of using | Development Note | Change log >>
What's new? See changelog
Do you want to receive notifications for new releases? Watch this repo
<br><br><br><br>
Description
Do you like TextMeshPro? I’m lovin’ it:)
As you know, TextMeshPro, the ultimate text solution, is one of the greatest assets in Unity.
It is more beautiful than the standard TextMesh and Text, it is highly functional and free.
One of the big mystery of TextMeshPro is that "typical mesh effects (vertex effects) for uGUI can not be used for TextMeshPro".
Since TextMeshPro does not call IMeshModifier
interface, TextMeshPro ignores the typical mesh effects.
The mesh effects of TextMeshPro (eg VertexJitter, VertexColorCycler etc) are very unique in their implementation and can only be used for TextMeshPro...
I think that an easy way to implement a common mesh effect is necessary.
This project provides a base class for mesh effect.
It works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI.
Just change your mesh effect a few places, it will support TextMeshPro!
Let's decorate your TextMeshPro with effects!
Features
- Works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI.
- Support multiple fonts.
- There is no useless allocation.
- Good performance.
- You can implement MeshEffect with VertexHelper or Mesh.
- Easily make your mesh effect support TextMeshPro. See detail
- If your project does not use TMPro, add "NOT_USE_TMPRO" symbol. Or uncomment the first line of BaseMeshEffect.cs.
//#define NOT_USE_TMPRO // If your project does not use TMPro, uncomment this line.
<br><br><br><br>
Demo
<br><br><br><br>
Usage
- Download MeshEffectForTextMeshPro.unitypackage from Releases.
- Import the package into your Unity project. Select
Import Package > Custom Package
from theAssets
menu.
- Add any effect component to TextMeshPro from
Add Component
in inspector orComponent > MeshEffectForTextMeshPro > ...
menu. - Adjust the parameters of the effect as you like, in inspector.
- If your project does not use TMPro, add "NOT_USE_TMPRO" symbol. Or uncomment the first line of BaseMeshEffect.cs.
//#define NOT_USE_TMPRO // If your project does not use TMPro, uncomment this line.
- Enjoy!
Requirement
- Unity 5.5+ (including Unity 2019.x)
- TextMeshPro v1.0.0+
<br><br><br><br>
Development Note
Make your mesh effect supports TextMeshPro
- Change the base class from
BaseMeshEffect
toCoffee.UIExtensions.BaseMeshEffect
.
// Before
public class YourMeshEffect : BaseMeshEffect
or
public class YourMeshEffect : MonoBehavior, IMeshModifier
// After
public class YourMeshEffect : Coffee.UIExtensions.BaseMeshEffect
- If you are using specific methods, override it properly.
- OnEnable, OnDisable, LateUpdate, OnDidApplyAnimationProperties, OnValidate, ModifyMesh.
- Call
base.xxx
except ModifyMesh.
// Before
void OnEnable ()
{
...
}
void OnDisable ()
{
...
}
...
void ModifyMesh (VertexHelper vh)
{
...
}
// After
protected override void OnEnable ()
{
base.OnEnable();
...
}
void OnDisable ()
{
base.OnDisable();
...
}
...
public override void ModifyMesh (VertexHelper vh)
{
//base.ModifyMesh(vh); <- ModifyMesh's base method is unnecessary.
...
}
- Change
graphic.SetVerticesDirty
toSetVerticesDirty
// Before
public bool horizontal { get { return this.m_Horizontal; } set { this.m_Horizontal = value; graphic.SetVerticesDirty(); } }
// After
public bool horizontal { get { return this.m_Horizontal; } set { this.m_Horizontal = value; SetVerticesDirty(); } }
- If there are compile errors, remove them.
<br><br><br><br>
License
- MIT
- © UTJ/UCL
Author
See Also
- GitHub page : https://github.com/mob-sakai/MeshEffectForTextMeshPro
- Releases : https://github.com/mob-sakai/MeshEffectForTextMeshPro/releases
- Issue tracker : https://github.com/mob-sakai/MeshEffectForTextMeshPro/issues
- Current project : https://github.com/mob-sakai/MeshEffectForTextMeshPro/projects/1
- Change log : https://github.com/mob-sakai/MeshEffectForTextMeshPro/blob/master/CHANGELOG.md