コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】TextMesh Pro 3.2.0-pre.3 以降でダイナミックフォントをリセットする方法

概要

TextMesh Pro 3.2.0-pre.3 以降で Font Asset の Inspector で右クリックして
「Clear Dynamic Data」を押すと

ダイナミックフォントをリセットできます

using System.Reflection;
using TMPro;
using UnityEditor;

public static class Example
{
    [MenuItem( "Tools/Hoge" )]
    private static void Hoge()
    {
        var fontAsset = ( TMP_FontAsset ) Selection.activeObject;
        var type      = typeof( TMP_FontAsset );

        var methodInfo = type.GetMethod
        (
            name: "ClearCharacterAndGlyphTablesInternal",
            bindingAttr: BindingFlags.Instance | BindingFlags.NonPublic
        );

        methodInfo.Invoke( fontAsset, new object[0] );

        TMPro_EventManager.ON_FONT_PROPERTY_CHANGED( true, fontAsset );
    }
}

独自のエディタ拡張から実行したい場合は上記のようなコードを記述します