public void OnPreprocessBuild(BuildReport report) { // Find all font assets in the project string searchPattern = "t:FontAsset"; string[] fontAssetGUIDs = AssetDatabase.FindAssets(searchPattern); for (int i = 0; i < fontAssetGUIDs.Length; i++) { string assetPath = AssetDatabase.GUIDToAssetPath(fontAssetGUIDs[i]); // Exclude assets not located in the project. if (!assetPath.StartsWith("Assets/", System.StringComparison.OrdinalIgnoreCase)) { continue; } FontAsset fontAsset = AssetDatabase.LoadAssetAtPath <FontAsset>(assetPath); if (fontAsset != null && (fontAsset.atlasPopulationMode == AtlasPopulationMode.Dynamic || fontAsset.atlasPopulationMode == AtlasPopulationMode.DynamicOS) && fontAsset.clearDynamicDataOnBuild && fontAsset.atlasTexture.width != 0) { fontAsset.ClearFontAssetDataInternal(); } } }
internal static void InitializeFontAssetResourceChangeCallBacks() { FontAsset.RegisterResourceForUpdate += TextEditorResourceManager.RegisterResourceForUpdate; FontAsset.RegisterResourceForReimport += TextEditorResourceManager.RegisterResourceForReimport; FontAsset.OnFontAssetTextureChanged += TextEditorResourceManager.AddTextureToAsset; FontAsset.SetAtlasTextureIsReadable += FontEngineEditorUtilities.SetAtlasTextureIsReadable; FontAsset.GetSourceFontRef += TextEditorResourceManager.GetSourceFontRef; FontAsset.SetSourceFontGUID += TextEditorResourceManager.SetSourceFontGUID; // Callback to handle clearing dynamic font asset data when closing the Editor EditorApplication.quitting += () => { // Find all font assets in the project string searchPattern = "t:FontAsset"; string[] fontAssetGUIDs = AssetDatabase.FindAssets(searchPattern); for (int i = 0; i < fontAssetGUIDs.Length; i++) { string fontAssetPath = AssetDatabase.GUIDToAssetPath(fontAssetGUIDs[i]); FontAsset fontAsset = AssetDatabase.LoadAssetAtPath <FontAsset>(fontAssetPath); if (fontAsset != null && (fontAsset.atlasPopulationMode == AtlasPopulationMode.Dynamic || fontAsset.atlasPopulationMode == AtlasPopulationMode.DynamicOS) && fontAsset.clearDynamicDataOnBuild && fontAsset.atlasTexture.width != 0) { fontAsset.ClearFontAssetDataInternal(); } } }; }