リポジトリ
開発環境
- Windows 10
- Unity 2021.2.7f1
- TextMeshPro 3.0.6
基本的な使い方
using Kogane.TMP_FontAssetUpdater; using TMPro; using UnityEditor; using UnityEngine; using UnityEngine.TextCore.LowLevel; public static class Example { [MenuItem( "Tools/Generate" )] public static async void Generate() { var fontAsset = AssetDatabase.LoadAssetAtPath<TMP_FontAsset>( "Assets/font.asset" ); var sourceFontFile = AssetDatabase.LoadAssetAtPath<Font>( "Assets/font.otf" ); var settings = new TMP_FontAssetUpdaterSettings ( fontAsset: fontAsset, sourceFontFile: sourceFontFile, samplingPointSize: SamplingPointSizeType.CUSTOM_SIZE, customSize: 24, padding: 5, packingMode: PackingMethod.OPTIMUM, atlasWidth: AtlasResolution.D_1024, atlasHeight: AtlasResolution.D_1024, customCharacterList: "abcde", renderMode: GlyphRenderMode.SDFAA ); await TMP_FontAssetUpdater.GenerateAsync( settings ); Debug.Log( "Complete" ); } }
プログレスバーを表示するサンプル
using Kogane.TMP_FontAssetUpdater; using TMPro; using UnityEditor; using UnityEngine; using UnityEngine.TextCore.LowLevel; public static class Example { [MenuItem( "Tools/Generate" )] public static async void Generate() { var fontAsset = AssetDatabase.LoadAssetAtPath<TMP_FontAsset>( "Assets/font.asset" ); var sourceFontFile = AssetDatabase.LoadAssetAtPath<Font>( "Assets/font.otf" ); var settings = new TMP_FontAssetUpdaterSettings ( fontAsset: fontAsset, sourceFontFile: sourceFontFile, samplingPointSize: SamplingPointSizeType.CUSTOM_SIZE, customSize: 24, padding: 5, packingMode: PackingMethod.OPTIMUM, atlasWidth: AtlasResolution.D_1024, atlasHeight: AtlasResolution.D_1024, customCharacterList: "abcde", renderMode: GlyphRenderMode.SDFAA ); static void OnUpdate() { EditorUtility.DisplayProgressBar ( title: "Update Font Asset", info: TMP_FontAssetUpdater.AtlasGenerationProgressLabel, progress: TMP_FontAssetUpdater.AtlasGenerationProgress ); } try { EditorApplication.update -= OnUpdate; EditorApplication.update += OnUpdate; await TMP_FontAssetUpdater.GenerateAsync( settings ); Debug.Log( "Complete" ); } finally { EditorApplication.update -= OnUpdate; EditorUtility.ClearProgressBar(); } } }