Unity自动生成的.meta文件是什么

内容会持续更新,有错误的地方欢迎指正,谢谢!

meta文件从石头里蹦出来的?

Unity中每个资源文件都会自动生成一个对应的meta文件。

meta文件的作用

1.是用于辅助管理Unity资源文件的文件,Unity根据meta里记录的GUID来区分项目中的不同资源;
2.meta还记录了一些对应资源的非常重要的信息,比如:各个资源Inspector的信息等。

来详细讲讲meta文件

Unity引用的资源都会生成对应的唯一的GUID,用来标示这些资源,而GUID是按照一定策略生成的,并且在不同的机器上可能生成的并不一致。

手动修改GUID或者删除meta文件会造成Unity对资源引用的错误:手动修改会产生无法识别的(或者说是找不到的)GUID,而删除meta文件Unity会认为对应的资源是一个新的资源而生成一个全新的meta文件,GUID也是重新生成的。所以我们在做版本控制的时候,一定要保证meta文件的一致。因此,可以考虑做一个SVN或者Git的提交检查工具,以保证上传资源时必须有对应的meta文件。

meta文件里的GUID和版本控制相关,meta文件还记录了一些对应资源非常重要的信息。比如打开一个Texture的meta会看到如下内容(mipmaps,bumpmap,textureFormat等等):

fileFormatVersion: 2
guid: 610d7f6d8d8e88047a447b0c41ebf738
TextureImporter:
  fileIDToRecycleName: {}
  serializedVersion: 2
  mipmaps:
    mipMapMode: 0
    enableMipMap: 0
    linearTexture: 0
    correctGamma: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: .25
    normalMapFilter: 0
  isReadable: 0
  grayScaleToAlpha: 0
  generateCubemap: 0
  seamlessCubemap: 0
  textureFormat: 34
  maxTextureSize: 2048
  textureSettings:
    filterMode: -1
    aniso: -1
    mipBias: -1
    wrapMode: 1
  nPOTScale: 0
  lightmap: 0
  compressionQuality: 50
  spriteMode: 1
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: .5, y: .5}
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spritePixelsToUnits: 100
  alphaIsTransparency: 1
  textureType: 5
  buildTargetSettings: []
  spriteSheet:
    sprites: []
  spritePackingTag: test
  userData: 

当你更改对应的资源设置时,Unity是不会改变源文件的,没有意义,它是靠meta文件记录各个资源Inspector面板的信息来管理各个资源的。也就是,并不会更改源文件,只是对应的meta文件更新罢了。

没有更多推荐了,返回首页