TextMeshPro Converter

../_images/tmpro-converter.png

This is a tool to convert existing UI at the scene from default Text and InputField to the TextMeshPro equivalent components.

Converter available with the context menu UI/New UI Widgets/Replace Unity Text with TextMeshPro or with Window/New UI Widgets/Replace Unity Text with TextMeshPro.

Scripts references to Text and InputField components will be automatically replaced if type of reference is common base type like Graphic or MonoBehaviour; otherwise those components will not be converted.

Limitations:

  • If you have any scripts with the serialized fields of type Text or InputField with specified components, then those components will not be converted.

    [SerializeField]
    Text Name; // cannot be converted
    
    [SerializeField]
    Graphic SecondName; // can be converted
    
    [SerializeField]
    TextAdapter ThirdName; // can be converted
    

Solutions:

  • manually change type to the TextAdapter or InputFieldAdapter and add the corresponding component to the referenced GameObject

  • modify code to automatically replace components with adapters

Modify Code to Adapters

Original script:

class SomeComponent : MonoBehaviour
{
        [SerializeField]
        Text Name;

        public void SomeMethod()
        {
                Name.text = "value";
        }
}

Modification:

class SomeComponent : MonoBehaviour, IUpgradeable
{
        [SerializeField]
        [System.Obsolete("Replaced with NameAdapter.")]
        Text Name;

        [SerializeField]
        TextAdapter NameAdapter;

        public void SomeMethod()
        {
                NameAdapter.text = "value";
        }

        public virtual void Upgrade()
        {
                Utilities.GetOrAddComponent(Name, ref NameAdapter);
        }

        #if UNITY_EDITOR
        protected virtual void OnValidate()
        {
                Upgrade();
        }
        #endif
}

Note

If you undo convertion you can see warnings like Not found any Text/InputField/InputFieldExtended component. This is happening because the newly added TMPro components was deleted and the old default components are not yet restored. In such cases, those warnings should be ignored.