天天看點

Unity3D資源管理架構

在Unity3D引擎中,場景資源檔案(.unity)是以2進制格式存儲的,但同時它也有一種基于文本的表現格式。可在Edit>Project Setting>Editor 中設定:

Unity3D資源管理架構

1.使用binary2text.exe(win下目錄:Editor\Data\Tools)可将.unity檔案轉換成.txt檔案,隻需将.unity檔案拖拽到binary2text.exe上即可生成.txt;

Unity3D資源管理架構

2.Bin2Text.unity為測試場景場景中隻有一個名為“sakyaer”的空物體;

Unity3D資源管理架構

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

繼續閱讀