Class FormatterBase
Base class that implements common IFormatter functionality.
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 | |
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. |