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;
                    };
                }
            }
        }
Ejemplo n.º 2
0
        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);
                    };
                }
            }
        }
Ejemplo n.º 3
0
        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);
                    };
                }
            }
        }