在Unity3D引擎中,场景资源文件(.unity)是以2进制格式存储的,但同时它也有一种基于文本的表现格式。可在Edit>Project Setting>Editor 中设置:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISNzATMwAjM4EjNwYDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1.使用binary2text.exe(win下目录:Editor\Data\Tools)可将.unity文件转换成.txt文件,只需将.unity文件拖拽到binary2text.exe上即可生成.txt;
2.Bin2Text.unity为测试场景场景中只有一个名为“sakyaer”的空物体;
3.对应这样一个场景,它的文本格式使用YAML格式存储,信息表如下:
- 其中ClassID是Unity3D中类的序列编号,如:GameObject类ClassID=1,具体类的ID参照官方网站http://docs.unity3d.com/Manual/ClassIDReference.html
- ID项为随记分配给每个实例的唯一标识
- 资源文件使用m_作为前缀
- 其中m_GameObject (file 0 path 1163297905)表现transform对gameobject的从属关系
External References
ID: (ClassID: ) SceneSettings
m_ObjectHideFlags (unsigned int)
m_PVSData (vector)
size (int)
m_PVSObjectsArray (vector)
size (int)
m_PVSPortalsArray (vector)
size (int)
m_OcclusionBakeSettings (OcclusionBakeSettings)
smallestOccluder (float)
smallestHole (float)
backfaceThreshold (float)
ID: (ClassID: ) RenderSettings
m_Fog (bool)
m_FogColor ( ) (ColorRGBA)
m_FogMode (int)
m_FogDensity (float)
m_LinearFogStart (float)
m_LinearFogEnd (float)
m_AmbientLight ( ) (ColorRGBA)
m_SkyboxMaterial (file path ) (PPtr<Material>)
m_HaloStrength (float)
m_FlareStrength (float)
m_FlareFadeSpeed (float)
m_HaloTexture (file path ) (PPtr<Texture2D>)
m_SpotCookie (file path ) (PPtr<Texture2D>)
m_ObjectHideFlags (unsigned int)
ID: (ClassID: ) LevelGameManager
m_ObjectHideFlags (unsigned int)
ID: (ClassID: ) LightmapSettings
m_ObjectHideFlags (unsigned int)
m_LightProbes (file path ) (PPtr<LightProbes>)
m_Lightmaps (vector)
size (int)
m_LightmapsMode (int)
m_BakedColorSpace (int)
m_UseDualLightmapsInForward (bool)
m_LightmapEditorSettings (LightmapEditorSettings)
m_Resolution (float)
m_LastUsedResolution (float)
m_TextureWidth (int)
m_TextureHeight (int)
m_BounceBoost (float)
m_BounceIntensity (float)
m_SkyLightColor ( ) (ColorRGBA)
m_SkyLightIntensity (float)
m_Quality (int)
m_Bounces (int)
m_FinalGatherRays (int)
m_FinalGatherContrastThreshold (float)
m_FinalGatherGradientThreshold (float)
m_FinalGatherInterpolationPoints (int)
m_AOAmount (float)
m_AOMaxDistance (float)
m_AOContrast (float)
m_LODSurfaceMappingDistance (float)
m_Padding (int)
m_TextureCompression (bool)
m_LockAtlas (bool)
ID: (ClassID: ) NavMeshSettings
m_ObjectHideFlags (unsigned int)
m_BuildSettings (NavMeshBuildSettings)
agentRadius (float)
agentHeight (float)
agentSlope (float)
agentClimb (float)
ledgeDropHeight (float)
maxJumpAcrossDistance (float)
accuratePlacement (bool)
minRegionArea (float)
widthInaccuracy (float)
heightInaccuracy (float)
m_NavMesh (file path ) (PPtr<NavMesh>)
ID: (ClassID: ) GameObject
m_ObjectHideFlags (unsigned int)
m_PrefabParentObject (file path ) (PPtr<EditorExtension>)
m_PrefabInternal (file path ) (PPtr<Prefab>)
m_Component (vector)
size (int)
data (pair)
first (int)
second (file path ) (PPtr<Component>)
m_Layer (unsigned int)
m_Name "Sakyaer" (string)
m_TagString "Untagged" (string)
m_Icon (file path ) (PPtr<Texture2D>)
m_NavMeshLayer (unsigned int)
m_StaticEditorFlags (unsigned int)
m_IsActive (bool)
ID: (ClassID: ) Transform
m_ObjectHideFlags (unsigned int)
m_PrefabParentObject (file path ) (PPtr<EditorExtension>)
m_PrefabInternal (file path ) (PPtr<Prefab>)
m_GameObject (file path ) (PPtr<GameObject>)
m_LocalRotation (Quaternionf)
x (float)
y (float)
z (float)
w (float)
m_LocalPosition ( ) (Vector3f)
m_LocalScale ( ) (Vector3f)
m_Children (vector)
size (int)
m_Father (file path ) (PPtr<Transform>)
m_RootOrder (int)
4.Unity3D中对于每一个资源文件都会生成对应.meta文件,该文件可以用记事本直接打开;guid(全局唯一标识符,Globally Unique Identifier)是系统随机生成的对资源的标识符,guid在游戏运行时会被用来生成一个hashid;而根据guid的前两位0a可以在工程Library目录下metadate(元数据)0a目录下找到,对应的二进制文件,该文件可以使用binary2text.exe打开,得到的txt文件,记录了.meta文件对应资源的所有详细信息。
guid: 0a4a878577c88654795d8c6aee74368d
参考文献:http://docs.unity3d.com/Manual/TextualSceneFormat.html