using UnityEngine;
using TMPro;
public class DynamicTMP : MonoBehaviour
{
public TMP_Text tmp;
public float Strength = 3.6f;
public float Space = 0.03f;
public float Frequently = 2f;
void Update()
{
tmp.ForceMeshUpdate();
var textInfo = tmp.textInfo;
for (int i = 0; i < textInfo.characterCount; i++)
{
var charInfo = textInfo.characterInfo[i];
if(!charInfo.isVisible) continue;
var verts = textInfo.meshInfo[charInfo.materialReferenceIndex].vertices;
for (int j = 0; j < 4; j++)
{
var orig = verts[charInfo.vertexIndex + j];
verts[charInfo.vertexIndex + j] = orig + new Vector3(0, Mathf.Sin(Time.time * Frequently + orig.x * Space) * Strength, 0);
}
}
for (int i = 0; i < textInfo.meshInfo.Length; i++)
{
var meshInfo = textInfo.meshInfo[i];
meshInfo.mesh.vertices = meshInfo.vertices;
tmp.UpdateGeometry(meshInfo.mesh, i);
}
}
}