メタデータ
メタデータ (Metadata) は、添付先のアイテムに関する追加的な情報の提供に使用できるデータです。メタデータは SerializeReference 属性を使用してシリアル化されるため、Serializable としてマークされる必要があり、同じアセット内全体で共有可能で、UnityEngine.Object から継承 されません。メタデータはシリアル化されたフィールドを含んでいる必要はありません。また、空にして、特定の属性を持つものとしてフィールドにタグ付けするために使用することもできます。
メタデータは以下に添付することができます。
- ロケール
- String Table と Table Entry
- Asset Table と Table Entry
メタデータは以下を含む様々な目的に使用できます。
- 文字列の Font データの埋め込み。
- 各ロケールのテキストが確実に正しくなるように、異なる RectTransform 値などのコンポーネント固有の値をロケール毎に格納する。
- コメントとコンテキスト情報の添付。(これは後に、より良いローカライゼーションサービスを提供するために翻訳者によって使用されます)。
- カスタムコード/スクリプトの実行。メタデータは実行されるコードを含むことができ、これは特定のロケールでオーバーライドすることができます。
- タグ付け。メタデータは、アイテムが特定のプロパティを持っていることを示したりタグ付けするために使用できます。
メタデータの作成
新しいメタデータは IMetadata インターフェースを実装することで追加できます。Serializable で UnityEngine.Object
から継承されていないクラスならどれでもメタデータにすることができます。
UnityEngine.Objects
はメタデータに含めることができます。
例えば、以下のメタデータを使用して、ロケールに情報を添付できます。
[Metadata(AllowedTypes = MetadataType.Locale)] // Hint to the editor to only show this type for a Locale
[Serializable]
public class Continent : IMetadata
{
public string continentName;
public float areaMillionKm2;
public float populationSizeInBillions;
}
Continent メタデータをロケールの Add リストに追加するために、Metadata 属性が使用されています。