内容会持续更新,有错误的地方欢迎指正,谢谢!
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文件更新罢了。