コガネブログ

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

【Unity】TextMesh Pro の Font Asset の更新を自動化できる「Unity TextMeshPro Font Customized Creater」紹介

はじめに

Text Mesh Pro では Font Asset に含めたい文字が増えて更新したい場合、
毎回 Font Asset Creator ウィンドウを開いて作成し直す必要がありますが、

「Unity TextMeshPro Font Customized Creater」を Unity プロジェクトに導入することで
TextMesh Pro の Font Asset の更新を自動化できるようになります

使い方

f:id:baba_s:20181224140319p:plain

例えば Unity プロジェクトにこのようにフォントデータや
TextMesh Pro の Font Asset が存在する場合、
「TMProFontCustomizedCreater.cs」を開いて

public static CustomizedCreaterSettings GetCustomizedCreaterSettings()
{
    var settings = new CustomizedCreaterSettings
    {
        // フォントデータのフォルダ
        fontFolderPath = "Assets/@Project/Fonts", 
        
        // TextMesh Pro の Font Asset のフォルダ
        fontMaterialsFolderPath = "Assets/@Project/Font Assets",
        
        // フォントデータのパス
        fontBackupPaths = new[] { "Assets/@Project/Fonts/my font.ttf" },
        
        // フォントサイズのモード ( 0:Auto Sizing  1:Custom Size )
        pointSizeSamplingMode = 0,
        
        // Font Size
        pointSize = 0,
        
        // Font Padding
        padding = 5,
        
        // Packing Method ( 0:Fast  1:Optimum )
        packingMode = 0,    // Fast
        
        // Atlas Resolution
        atlasWidth = 512,
        atlasHeight = 512,
        
        // Character Set
        characterSetSelectionMode = 8,  // Character List from File
        
        // Font Asset に含める文字を記載したテキストファイル
        characterSequenceFile = "Assets/@Project/chars.txt",
        
        // Font Style
        fontStyle = (int)FaceStyles.Normal,
        fontStyleModifier = 2,
        
        // Font Render Mode
        renderMode = (int)RenderModes.DistanceField16,
        
        // etc.
        includeFontFeatures = false,
        characterUseFontBackup = new []{new []{""}, new []{"+-"}}
    };
    return settings;
}

GetCustomizedCreaterSettings 関数の中に Font Asset の作成方法を記載します

f:id:baba_s:20181224140452p:plain

また、テキストファイル(.txt)を Unity プロジェクトに追加して
その中に Font Asset に含めたい文字を列挙します

f:id:baba_s:20181224140528p:plain

そして、Unity メニューの上記の項目を選択して

f:id:baba_s:20181224140545p:plain

表示されたウィンドウのボタンを押すことで Font Asset の更新ができます

f:id:baba_s:20181224140848p:plain

更新が完了したら上記のようにログ出力されます