Unity のメタ ファイルの機能と、プレハブやその他のファイルのテキスト コンテンツ分析に関する簡単な説明

Unity 内のすべてのファイルはテキスト形式であり、内容を確認できます。

メタ ファイル形式: (ファイルが異なれば 3 行目以降の内容も異なる場合があります)

fileFormatVersion: 2
guid: 8c37735a974bb7f4a8fa831a31dff02a
PrefabImporter:
  externalObjects: {}
  userData: 
  assetBundleName: 
  assetBundleVariant:

ファイルがUnityにインポートされると、メタファイルが自動的に生成されます。
メタ ファイルに記録される主な内容は、GUID とファイルのインポート設定です。

1.GUID:
guid: 8c37735a974bb7f4a8fa831a31dff02a はプロジェクト全体で一意のIDで、インポート後に付与されるため重複はありません。
重複が発生した場合は、黄色の警告が表示されます。
テスト方法: m1 という名前の新しいマテリアルを作成すると、Unity は対応する m1.mat.meta を生成します。
このファイルが存在するパスを開き、フォルダー内の m1 とそのメタを選択してコピーします。
次に、Unity を開いて自動インポートを待ちます。「ここに画像の説明を挿入します
Unity エンジンの外にファイルを移動または削除しないでください」という黄色の警告が表示されます。
実際、Unity は比較的遅くインポートされた間違ったメタ ファイルに GUID を再割り当てします (割り当てられず、メタ ファイルの競合状態が維持され、再び警告が表示されない場合があります。理由はわかりません)。競合によって引き起こされる問題については後で説明します。

2: インポート設定
テスト方法: Unity にアイコンをインポートした後、スプライト モードに切り替えます。svnをコミットします。MaxSize 32 変更後。
変更サイズが 2048 から 32 に変更されていることがわかります。赤枠部分が公開可能なプラットフォームです。個別に変更できます。
ここに画像の説明を挿入します

Unityにおけるファイル間の接続関係は以下の通りです。

テスト: マテリアルと画像があり、画像がマテリアル上にぶら下がっています:
ここに画像の説明を挿入します
図に示すように、m1 マテリアル上に icon37 があり、ここに画像の説明を挿入します
保存後、m1.mat が変更されていることがわかります。ここに画像の説明を挿入します
違いを比較すると、内容の変更が明らかになることがあります。
- _MainTex:
m_Texture: {fileID: 0}が- _MainTex: m_Texture: {fileID: 2800000、guid: 336f4b4eab0aaef4a882d98f5ae39ec0、type: 3}
に変更されました。


ここに画像の説明を挿入します
icon37 のメタファイルを開くと、 GUID: 336f4b4eab0aaef4a882d98f5ae39ec0が表示され
、画像の GUID が素材ファイルの変更内容の GUID と同じであることがわかります。
そのため、Unity におけるファイル間の依存関係参照の関連付けは GUID を使用して行われます。
メタファイルの競合が発生した場合、ファイルに記録されている GUID が、最初に選択されたファイルではない可能性があります。ファイル損失が発生します。

テスト:
guid: 336f4b4eab0aaef4a882d98f5ae39ec1
画像の GUID の最後の桁を 0 から 1 に変更しました。Unity に入った後、マテリアル上の画像が失われている
ことがわかりました。同じことが Unity のさまざまなファイルの関連付けにも当てはまります。GameObject にスクリプトをハングし、さまざまなエラー形式を報告するようにスクリプトのメタ ファイル GUID を変更しました。「missing」という単語が表示される場合は、基本的に GUID に問題があります。
ここに画像の説明を挿入します



ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

Unityファイルの保存

Unity のファイルはすべてテキスト ファイルである
ため、オブジェクトの座標を変更すると、実際にはファイルの内容に反映されます。
ここに画像の説明を挿入します
違いを比較するために、プレハブの座標を 000 から 9.87 に変更しました
ここに画像の説明を挿入します
。座標が変更されたことがわかります。変更されたフィールド名は m_LocalPosition であることがわかります。
その親ノードは Transform で、 Unity のパネル上のコンポーネントを変換します。

カスタムスクリプトを含むパラメータがパネルに表示されます。
スクリプトをノードにマウントして違いを確認しました。2ここに画像の説明を挿入します
ここに画像の説明を挿入します
つの変更が見つかりました。
コンポーネント: {fileID: -2879555396794527001} は、新しい参照 GUID がこのオブジェクトに追加されることを示します。これは、この文字列 287955… です。具体的に引用されている内容については、次の段落で説明します。

最も重要な行:

83 行目 — !u!114 &-2879555396794527001
— !u!114 はこのテキスト内の一意の ID です
-2879555396794527001 上記の引用符をマークします

84 行目 MonoBehaviour:
この参照がカスタム スクリプトであることを示します。Unity のカスタム スクリプトの種類はすべて MonoBehaviour です

92 行目 m_Script: {fileID: 11500000, guid: 5779c70bde44e2542abf571ef9a2b611, type: 3}
GUID はここにあります。GUID は、ファイルの一意性を保証し、ファイル間の関連性を決定することに加えて、スクリプトが配置されているディレクトリもマークします
(前述したとおり、はい、警告: ヒント、Unity エンジンの外でファイルを移動または削除しないでください。Unity 内でファイル パスを移動すると、Unity は GUID が存在するディレクトリを再記録し、GUID は変更されません)

94 行目: m_EditorClassIdentifier:
この行から始まり、これらはすべてこのカスタム スクリプトのパラメータです。たとえば、私のスクリプトは a という名前のスロットを公開しており、
ここに画像の説明を挿入します
テキストの 95 行目も a: 0
i を反映します。 Unity で変更を加えます。
ここに画像の説明を挿入します

A 値が 567 に変更されると、
ここに画像の説明を挿入します
テキストも変更されたことがわかります。

概要:
1. 多数の変更が行われていますが、時間を節約するために、テキストの内容は無視できます。
ただし、小さな変更やパラメータの変更を SVN に送信する前に、現在のバージョン間の違いを比較して、冗長な操作や誤操作がないかどうかを確認する必要があります。誤った操作をアップロードするとさまざまな問題が発生し、再デバッグには時間と労力がかかります。
2. Unity ファイルの保存形式と原則を理解する必要がある理由:
エンジン内で 12345 の処理を​​実行したと考えていますが、この操作は本当に効果的ですか? エンジンは本当に知っているのでしょうか?ファイルの保存 (シリアル化と逆シリアル化) は、操作自体を実際に反映します。


上記の操作は SVN+Beyond Compare を使用して実行されますが、
操作がわからない場合は、プライベート チャットするか、メッセージを残すか、QQ 経由でご連絡ください。

プログラミングには終わりがありません。
誰でも気軽にコミュニケーションできます。不明な点や間違いがある場合は、個人的にチャットすることもできます。My
QQ 334524067 God-like Didi

おすすめ

転載: blog.csdn.net/qq_37776196/article/details/116006274