UnityEditorのオブジェクト管理
Unityでは、ゲームオブジェクト・コンポーネント・素材のファイルなど、個別のデータがありますが、これをどのように管理しているかで、内部の構造を考えてみましょう
サンプルプロジェクト
エディター画面

管理IDを確認するために、インスペクターの表示をDebug表示にします

デバッグ表示

実行結果

SampleScene.unityファイル
yamlというフォーマットで記述されたシーンの管理ファイルになります。
このゲームオブジェクトには、2つのOutletTestスクリプト(コンポーネント)がアタッチされています。
次のコードは、管理ファイルの一部でその2つのコンポーネントを抜き出したものになります。
識別子が912011094と912011095であること、
guidがc5691edcde4db4dcbb3d903de2d0299fとc5691edcde4db4dcbb3d903de2d0299fであることがわかります。
スクリプト(OutletTest.cs)
スクリプトのメタファイル(OutletTest.meta)
OutletTestは、c5691edcde4db4dcbb3d903de2d0299fですね。
解説
guid
重ならないユニークな番号です。これを使うことでファイルを特定することができます
fileID
一つのアセット内での参照で使用されるドキュメントのID。ローカルの情報として利用されます。外部からアクセスする場合、giidとともに使われます。
hp: 20やhp: 100
インスペクターの情報が保存されています。これは、シーンファイルに保存されています。
インスペクターで管理されるデータ
ここでわかるように、今回 hpフィールドの値はシーンファイルに保存されていることがわかります。ファイルなので読み書きできます。(シリアル化されているといいます)
この仕組みで、スクリプトファイルは全く同じ(変更しない)でも、初期代入値を変えることができるため、違う結果を得ることができるのです。
ディスカッション
コメント一覧
まだ、コメントがありません