public void ChangeFont(object graphic) { if (graphic == null) { return; } if (graphic is Text) { var ui = graphic as Text; var previousFont = ui.font; var newFont = FontCache.GetOrCreate(previousFont?.fontSize ?? ui.fontSize); if (!ReferenceEquals(newFont, previousFont)) { ui.font = newFont; _unfont = obj => { ((Text)obj).font = previousFont; }; } } }
public void ChangeFont(object ui) { if (ui == null) { return; } var type = ui.GetUnityType(); if (UnityTypes.Text != null && UnityTypes.Text.IsAssignableFrom(type)) { if (string.IsNullOrEmpty(Settings.OverrideFont)) { return; } var Text_fontProperty = UnityTypes.Text_Properties.Font; var Text_fontSizeProperty = UnityTypes.Text_Properties.FontSize; var previousFont = (Font)Text_fontProperty.Get(ui); var Font_fontSizeProperty = UnityTypes.Font_Properties.FontSize; var newFont = FontCache.GetOrCreate((int?)Font_fontSizeProperty?.Get(previousFont) ?? (int)Text_fontSizeProperty.Get(ui)); if (newFont == null || previousFont == null) { return; } if (!UnityObjectReferenceComparer.Default.Equals(newFont, previousFont)) { Text_fontProperty.Set(ui, newFont); _unfont = obj => { Text_fontProperty.Set(obj, previousFont); }; } } else if ((UnityTypes.TextMeshPro != null && UnityTypes.TextMeshPro.IsAssignableFrom(type)) || (UnityTypes.TextMeshProUGUI != null && UnityTypes.TextMeshProUGUI.IsAssignableFrom(type))) { if (string.IsNullOrEmpty(Settings.OverrideFontTextMeshPro)) { return; } var clrType = ui.GetType(); var fontProperty = clrType.CachedProperty("font"); var previousFont = fontProperty.Get(ui); var newFont = FontCache.GetOrCreateOverrideFontTextMeshPro(); if (newFont == null || previousFont == null) { return; } if (!UnityObjectReferenceComparer.Default.Equals(newFont, previousFont)) { fontProperty.Set(ui, newFont); _unfont = obj => { fontProperty.Set(obj, previousFont); }; } } }
public void ChangeFont(object ui) { if (ui == null) { return; } var type = ui.GetType(); if (ClrTypes.Text != null && ClrTypes.Text.IsAssignableFrom(type) && (ClrTypes.Font_Properties.FontSize != null || Settings.OverrideFontSize.HasValue)) { if (string.IsNullOrEmpty(Settings.OverrideFont)) { return; } var Text_fontProperty = ClrTypes.Text_Properties.Font; var previousFont = (Font)Text_fontProperty.Get(ui); var newFont = FontCache.GetOrCreate(Settings.OverrideFontSize ?? (int)ClrTypes.Font_Properties.FontSize.Get(previousFont)); if (newFont == null || previousFont == null) { return; } if (!ReferenceEquals(newFont, previousFont)) { Text_fontProperty.Set(ui, newFont); _unfont = obj => { Text_fontProperty.Set(obj, previousFont); }; } } else if ((ClrTypes.TextMeshPro != null && ClrTypes.TextMeshPro.IsAssignableFrom(type)) || (ClrTypes.TextMeshProUGUI != null && ClrTypes.TextMeshProUGUI.IsAssignableFrom(type))) { if (string.IsNullOrEmpty(Settings.OverrideFontTextMeshPro)) { return; } var fontProperty = type.CachedProperty("font"); var previousFont = fontProperty.Get(ui); var newFont = FontCache.GetOrCreateTextMeshProFont(); if (newFont == null || previousFont == null) { return; } if (!ReferenceEquals(newFont, previousFont)) { fontProperty.Set(ui, newFont); _unfont = obj => { fontProperty.Set(obj, previousFont); }; } } }