docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class FormatterBase

    Base class that implements common IFormatter functionality.

    Inheritance
    object
    FormatterBase
    ChooseFormatter
    ConditionalFormatter
    DefaultFormatter
    IsMatchFormatter
    ListFormatter
    PluralLocalizationFormatter
    SubStringFormatter
    TemplateFormatter
    TimeFormatter
    XElementFormatter
    Implements
    IFormatter
    ISerializationCallbackReceiver
    Namespace: UnityEngine.Localization.SmartFormat.Core.Extensions
    Assembly: Unity.Localization.dll
    Syntax
    public abstract class FormatterBase : IFormatter, ISerializationCallbackReceiver
    Examples

    This example shows how to create a formatter to format an integer that represents bytes.

    using UnityEngine.Localization;
    using UnityEngine.Localization.SmartFormat.Core.Extensions;
    
    [DisplayName("Base 2 Byte Formatter")]
    public class ByteFormatter : FormatterBase
    {
        public override string[] DefaultNames => new string[] { "byte" };
    
        public override bool TryEvaluateFormat(IFormattingInfo formattingInfo)
        {
            if (formattingInfo.CurrentValue is long bytes)
            {
                // We are performing a Base 2 conversion here. 1024 bytes = 1 KB
                if (bytes < 512)
                {
                    formattingInfo.Write($"{bytes} B");
                    return true;
                }
    
                if (bytes < 512 * 1024)
                {
                    var kb = bytes / 1024.0f;
                    formattingInfo.Write($"{kb.ToString("0.00")} KB");
                    return true;
                }
    
                bytes /= 1024;
                if (bytes < 512 * 1024)
                {
                    var mb = bytes / 1024.0f;
                    formattingInfo.Write($"{mb.ToString("0.00")} MB");
                    return true;
                }
    
                bytes /= 1024;
                var gb = bytes / 1024.0f;
                formattingInfo.Write($"{gb.ToString("0.00")} GB");
                return true;
            }
    
            return false;
        }
    }

    Properties

    Name Description
    DefaultNames

    Default names to use when Names is null.

    Names

    An extension can be explicitly called by using any of its names. Any extensions with "" names will be called implicitly (when no named formatter is specified). For example, "{0:default:N2}" or "{0:d:N2}" will explicitly call the "default" extension. "{0:N2}" will implicitly call the "default" extension (and other extensions, too).

    Methods

    Name Description
    TryEvaluateFormat(IFormattingInfo)

    Writes the current value to the output, using the specified format. IF this extension cannot write the value, returns false, otherwise true.

    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)