SlideShare une entreprise Scribd logo
1  sur  32
良くわかるmeta
プロジェクト勉強会
metaファイル
1. Unityに素材を追加した時に自動で生成される謎のファイ
ル
2. エクスプローラー上では表示されるけどUnity上では表示
されない謎のファイル
3. 謎だけどエンジニアからは「絶対にコミットしてね!」
って怒られる謎のファイル
metaファイル
という謎のファイルがありましたとさ…(´_ゝ`)
この資料の目的
metaファイルの大事さを知ってもらう
目次
1. metaファイルとは
2. metaファイルに変更がかかる時
3. UnityとmetaファイルとGit
metaファイルとは
1. 1つのAssetに付き1つのmetaファイルが必ず生成される
2. AssetをUnity上でどのように扱うかの情報を保存してる
3. Assetを一意に識別することができるIDを保存している
4. Asset同士の関係を保存している
Asset(テクスチャやモデルや設定ファイルやスクリプトファイルなどのEditor上に存在する全てのファイルの総称)
がImport(AssetをUnityに入れること)された時に自動で
Unityが生成しています。
Unityが管理しているAssetは例外なく必ずmetaファイルが生
成されます。
metaファイルがないAssetは、正しくImportされていない
(Unityに認識されていない)と思ってください。
1つのAssetに付き1つのmetaファイルが必ず生成される
UnityはEditor上からAssetの設定を変更することができます。
AssetをUnity上でどのように扱うかの情報が保存されてる
とあるモデルの設定画面
例えば
これにより、AssetがUnity上でどのように振る舞うか決まり
ます。
この設定が保存されているファイルこそmetaファイルです。
Unity上での振る舞い方がmetaファイルに保存されることに
より、元のAssetを変更することなく振る舞いを変更すること
がきます。(元のAssetを汚すことがない)
metaを削除すると設定項目が消えてしまうのでデフォルトの
状態に戻ります。
AssetをUnity上でどのように扱うかの情報を保存してる
Unityがどのようにして大量のAssetを管理しているのか?
Assetを一意に識別することができるID(GUIDと呼ばれる32文字の文
字列)がAsset1つ1つ振ってあり、そのIDを使って管理していま
す。
このGUIDが生成されるのがAssetのImport時であり、
GUIDを保存しているファイルがmetaファイルなのです。
Assetを一意に識別することができるIDを保存している
Editor上でオブジェクト同士の関係を設定することができる
Asset同士の関係を保存している
このようにAssetにAssetを登録している例
Asset同士の関係を保存している
GameObjectが別のGameObjectを保持しているなどの関係を
設定することができます。(ModelにMaterialが設定してあるなど)
オブジェクト同士の関係は先ほど説明したGUIDによって管理
されおり、その関係を保存してあるのがmetaファイルです。
Editor上で設定された関係はmetaファイルに
別のAssetのGUIDを書き込むことで保存されています。
Asset同士の関係を保存している
以上metaファイルの仕事の説明でした
metaファイルの
大事さがわかってきましたか?
metaファイルに変更がかかる時
1. AssetがImportされた時
2. Editor上でAssetの設定が変更された時
3. Editorの外でファイルの操作を行った時
プログラム側でプロジェクトに合わせた設定を自動で行う機
能が入っており、自動で設定を書き替えているものがありま
す。
例) FBXのMaterialやTextureのImport方法の設定
AssetBundle名の設定 など
※Assetを最初にImportした人が正しくImportしていれば問題は起こらないはず
AssetがImportされた時
Editor上でAssetの設定を変更した時にその変更内容を保存す
るためにmetaファイルに変更がかかることがあります。
全てのAssetの設定がmetaファイルで保存されているわけで
は無く、Prefabやシーンファイル(.unityファイル)などは
直接ファイル側に保存されます。
完全に外からImportされたAsset(fbxなど)の設定はmetaに
書きこまれ、Unity自身が生成したAsset(Prefabなど)は直
接ファイルに書き込まれます。
Editor上でAssetの設定が変更された時
Unity内でAssetの操作(移動やコピー)をしたときにはUnity
が自動でmetaファイルを作成したり更新したりしています。
Unityの外でファイルの操作をした場合には、操作をUnityが
検知できずmetaファイルやGUIDが正常な状態では無くなる
場合があります。
Assetを操作する時はEditor上で操作し、エクスプローラーか
らは操作はしないでください。
Editorの外でファイルの操作を行った時
UnityとmetaファイルとGit
1. metaファイルが無いとどうなるの?
2. metaファイルが間違っているとどうなるの?
3. フォルダのmetaファイルについて
1.最初に誰かがAssetをImportする⇒metaファイル(GUID)が生成される
2.metaファイルをGitへコミットを忘れる
3.他の人がGitを更新した時にmetaが無い⇒新しくmetaファイルが生成される
4.新しく生成されたmetaファイルのGUIDは最初にImportされたものとは別に
なる
5.他のAssetとの関係を再現できなくなってしまう
PrefabのMaterialがMissingになったり、MaterialからTextureが剥がれたりするの
は
だいたいGUIDが正常では無くなっているからです。
metaファイルが無いとどうなるの?
1.誰かがAssetをエクスプローラーから操作しmetaファイルが正常ではなくな
る
2.そのままコミットしてしまう
3.他の人が更新した際に間違ったmetaファイルが入ってきてしまう
4.metaファイルが間違っているとAsset同士の関連を再現することが出来ない
5.正常に表示されない、動作しない
!!metaファイル、GUIDは常に正常な状態に保つことが何よりも大事!!
metaファイルが間違っているとどうなるの?
NoneとMissingの違い
None⇒ 最初から何もセットされていない状態
Missing⇒ 何かがセットされていたが、
セットされていたGUIDが存在しない状態
!!Missingになっていると正常に動作しない!!
ここで突然のコラム
Unityはフォルダに対しても1つのmetaファイルを生成します。
しかし、Gitでは中身が空のフォルダは管理の対象外とみな
されてしまいます。そのため、Gitでコミットする際にフォ
ルダは変更対象に入ってないけど、metaファイル変更対象に
入っているという事態が発生してしまいます。
空のフォルダのmetaファイルはコミットしないように気を付
けてください。
フォルダのmetaファイルについて
1.モデルのPrefabがMaterialを持っています
Prefabのmetaには自分自身のGUIDとMaterialのGUIDが保存されています
本当にあった恐ろしい例
meta
GUID:1234
Material
GUID:5678
Prefab
meta
GUID:5678
Material
2.PrefabとMaterialをUnity外でコピーしそのままコミット
本当にあった恐ろしい例
meta
GUID:1234
Material
GUID:5678
Prefab
meta
GUID:5678
Material
meta
GUID:1234
Material
GUID:5678
Prefab2
meta
GUID:5678
Material2
2.PrefabとMaterialをUnity外でコピーしそのままコミット
本当にあった恐ろしい例
meta
GUID:1234
Material
GUID:5678
Prefab
meta
GUID:5678
Material
meta
GUID:1234
Material
GUID:5678
Prefab2
meta
GUID:5678
Material2
ユニークなはずの
IDが重複している!!!
3.Unityが重複を検知しGUIDを自動で生成しなおします
本当にあった恐ろしい例
meta
GUID:1234
Material
GUID:5678
Prefab
meta
GUID:5678
Material
meta
GUID:2345
Material
GUID:5678
Prefab2
meta
GUID:6789
Material2
4.コピー元のAssetが削除されると…
本当にあった恐ろしい例
meta
GUID:2345
Material
GUID:5678
Prefab2
meta
GUID:6789
Material2
GUIDが5678のMaterialが
存在しなくなるので急にMaterialが
外れた状態になってしまう!!
metaファイル(GUID)が一度おかしくなると、
連鎖的に他の部分にまで影響が出る場合があります。
metaファイル(GUID)を常に正常な状態に保つ
ことが何よりも大事なのです!
(大事なことなので2回言いました。)
まとめ
1. Assetsフォルダ内のファイルを全て削除します
2. Gitに削除されたという変更がでます
3. 削除されたという変更を全て破棄します
4. ローカルの状態をリモートとまったく同じ状態にでき
る!
変更した覚えのないmetaに変更がかかった時に使える裏技
この裏技を使ってもまだ変更がかかる場合は
リモートがおかしくなってる恐れがあります。
その時はエンジニアにご一報ください。
変更した覚えのないmetaに変更がかかった時に使える裏技

Contenu connexe

Tendances

目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
 

Tendances (20)

UE4のスレッドの流れと Input Latency改善の仕組み
UE4のスレッドの流れとInput Latency改善の仕組みUE4のスレッドの流れとInput Latency改善の仕組み
UE4のスレッドの流れと Input Latency改善の仕組み
 
UE4 Saitama 初心者向けハンズオン #6『サウンド再生』
UE4 Saitama 初心者向けハンズオン #6『サウンド再生』UE4 Saitama 初心者向けハンズオン #6『サウンド再生』
UE4 Saitama 初心者向けハンズオン #6『サウンド再生』
 
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
 
猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り猫でも分かるUE4のポストプロセスを使った演出・絵作り
猫でも分かるUE4のポストプロセスを使った演出・絵作り
 
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
ファンタジー背景グラフィック制作事例(UE4 Environment Art Dive)
 
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
【Unite Tokyo 2019】運用中超大規模タイトルにおけるUnityアップデート課題の解決手法と事例
 
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTERUE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る!  | UNREAL FEST EXTREME 2020 WINTER
UE4×Switchで60FPSの(ネットワーク)対戦アクションをなんとかして作る! | UNREAL FEST EXTREME 2020 WINTER
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!UE4のためのより良いゲーム設計を理解しよう!
UE4のためのより良いゲーム設計を理解しよう!
 
UE4の色について v1.1
 UE4の色について v1.1 UE4の色について v1.1
UE4の色について v1.1
 
わからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なことわからないまま使っている?UE4 の AI の基本的なこと
わからないまま使っている?UE4 の AI の基本的なこと
 
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
最新UE4タイトルでのローカライズ事例 (UE4 Localization Deep Dive)
 
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
Unreal engine4を使ったVRコンテンツ製作で 120%役に立つtips集+GDC情報をご紹介
 

En vedette

En vedette (10)

오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
오픈소스 게임 서버 엔진 스터디 캠프 - CloudBread
 
Unityでlinqを使おう
Unityでlinqを使おうUnityでlinqを使おう
Unityでlinqを使おう
 
Gtmf2011 2011.06.07 slideshare
Gtmf2011 2011.06.07 slideshareGtmf2011 2011.06.07 slideshare
Gtmf2011 2011.06.07 slideshare
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
 
【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み
【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み
【Unite 2017 Tokyo】VRで探り,活用する,人の知覚の仕組み
 
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
 
【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例
【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例
【Unite 2017 Tokyo】セルシェーダーを使用した3Dキャラアプリの開発事例
 
LINQ in Unity
LINQ in UnityLINQ in Unity
LINQ in Unity
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
 
Binary Reading in C#
Binary Reading in C#Binary Reading in C#
Binary Reading in C#
 

良くわかるMeta

Notes de l'éditeur

  1. Asset=資産