SlideShare ist ein Scribd-Unternehmen logo
1 von 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に変更がかかった時に使える裏技

Weitere ähnliche Inhalte

Was ist angesagt?

徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!エピック・ゲームズ・ジャパン Epic Games Japan
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことSatoshi Kodaira
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~UnityTechnologiesJapan002
 
ゲームをおもしろくする技術 「ゲームとお笑い」
ゲームをおもしろくする技術 「ゲームとお笑い」ゲームをおもしろくする技術 「ゲームとお笑い」
ゲームをおもしろくする技術 「ゲームとお笑い」Kouji Ohno
 

Was ist angesagt? (20)

[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
[CEDEC2018] UE4で多数のキャラクターを生かすためのテクニック
 
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started-  (historia様ご講演) #UE4DDUE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started-  (historia様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 基礎編1 -Getting Started- (historia様ご講演) #UE4DD
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
【UE4.25 新機能】ロードの高速化機能「IOStore」について
【UE4.25 新機能】ロードの高速化機能「IOStore」について【UE4.25 新機能】ロードの高速化機能「IOStore」について
【UE4.25 新機能】ロードの高速化機能「IOStore」について
 
UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例
UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例
UE4を用いたTPS制作事例 EDF:IR パラメータ管理実装実例
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
 
UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編UE4における大規模背景制作事例 最適化ワークフロー編
UE4における大規模背景制作事例 最適化ワークフロー編
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
 
UE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないことUE4のレイトレで出来ること/出来ないこと
UE4のレイトレで出来ること/出来ないこと
 
UE4のモバイル向け機能や最新情報などを改めて紹介!2019
UE4のモバイル向け機能や最新情報などを改めて紹介!2019UE4のモバイル向け機能や最新情報などを改めて紹介!2019
UE4のモバイル向け機能や最新情報などを改めて紹介!2019
 
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
Unreal Engine 5 早期アクセスの注目機能総おさらい Part 2
 
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
UE4の色について v1.1
 UE4の色について v1.1 UE4の色について v1.1
UE4の色について v1.1
 
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
メカアクションゲーム『DAEMON X MACHINA』 信念と血と鋼鉄の開発事例
 
Online MultiPlay Game Design
Online MultiPlay Game DesignOnline MultiPlay Game Design
Online MultiPlay Game Design
 
ゲームをおもしろくする技術 「ゲームとお笑い」
ゲームをおもしろくする技術 「ゲームとお笑い」ゲームをおもしろくする技術 「ゲームとお笑い」
ゲームをおもしろくする技術 「ゲームとお笑い」
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
[CEDEC2017] UE4プロファイリングツール総おさらい(グラフィクス編)
 

Andere mochten auch

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

Andere mochten auch (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

Hinweis der Redaktion

  1. Asset=資産