Unity のシーン形式は YAML データシリアル化言語のカスタムサブセットを使用します。YAML はオープン形式であり、YAML のウェブサイト でドキュメントが公開されています。Unity で使用される YAML の詳細については、UnityYAML のドキュメントを参照してください。
ファイルはシーンの各オブジェクトを別々の YAML ドキュメントとして書き込みます。---
シーケンスがファイル内の各オブジェクトを表します。このコンテキストでは、“オブジェクト” という用語は、ゲームオブジェクト、コンポーネント、その他のシーンデータをまとめて指します。これらの各アイテムは、シーンのファイルに独自の YAML ドキュメントを必要とします。以下の例は、シリアル化されたオブジェクトの基本構造体を示しています。
--- !u!1 &6
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
importerVersion: 3
m_Component:
- 4: {fileID: 8}
- 33: {fileID: 12}
- 65: {fileID: 13}
- 23: {fileID: 11}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
最初の行にはドキュメントマーカーの後に !u!1 &6
文字列が含まれています。!u!
の後の最初の数字はオブジェクトのクラスを表します (この場合ではゲームオブジェクト)。& の後の数字はファイルの中で一意のオブジェクト ID 番号です。この番号は任意に各オブジェクトに割り当てられます。各オブジェクトのシリアライズ可能なプロパティーは、次のように記されます。
m_Name: Cube
プロパティーの名は一般的にプレフィックス m_
で始まり、スクリプトの参照で定義されたプロパティーの名前が続きます。以下の例では、ファイルの下の方で 2 つめのオブジェクトの定義を示しています。
--- !u!4 &8
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 6}
m_LocalRotation: {x: 0.000000, y: 0.000000, z: 0.000000, w: 1.000000}
m_LocalPosition: {x: -2.618721, y: 1.028581, z: 1.131627}
m_LocalScale: {x: 1.000000, y: 1.000000, z: 1.000000}
m_Children: []
m_Father: {fileID: 0}
以下の例は、上記の YAML ドキュメントによって定義された GameObject にアタッチされた Transform コンポーネントを示しています。{fileID:6}
は、ファイル内のゲームオブジェクトのオブジェクト ID が 6 のゲームオブジェクトを表すのに使用されます。
m_GameObject: {fileID: 6}
…
10 進数、または IEE 754 形式 (プレフィックス 0x で始めます) の 16 進数の表示は、浮動小数点数を表すのに使用されます。Unity では、IEE 754 表記はデータ喪失のない値のエンコーディング用に用いられたり、short 型の小数表記法がない浮動小数点の値を記述するときに使用されます。Unity が 16 進数で数字を記述するとき、デバッグ目的で 10 進数表記を括弧の中に併記しますが、実際には 16 進数のみがファイルのロード時にパースされます。そのような値を手動で編集したい場合は、16 進数を取り除いて、10 進数のみを入力してください。以下は、浮動小数値の有効な表記方法です (すべて数値 1)。
myValue: 0x3F800000
myValue: 1
myValue: 1.000
myValue: 0x3f800000(1)
myValue: 0.1e1