versionflow interfacable
This commit is contained in:
parent
5f728a1d1b
commit
92302eb3d9
@ -13,7 +13,7 @@ OcclusionCullingSettings:
|
||||
--- !u!104 &2
|
||||
RenderSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 10
|
||||
serializedVersion: 9
|
||||
m_Fog: 0
|
||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||
m_FogMode: 3
|
||||
@ -38,12 +38,12 @@ RenderSettings:
|
||||
m_ReflectionIntensity: 1
|
||||
m_CustomReflection: {fileID: 0}
|
||||
m_Sun: {fileID: 0}
|
||||
m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1}
|
||||
m_UseRadianceAmbientProbe: 0
|
||||
--- !u!157 &3
|
||||
LightmapSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 12
|
||||
m_GIWorkflowMode: 1
|
||||
m_GISettings:
|
||||
serializedVersion: 2
|
||||
m_BounceScale: 1
|
||||
@ -66,6 +66,9 @@ LightmapSettings:
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_LightmapsBakeMode: 1
|
||||
m_TextureCompression: 1
|
||||
m_FinalGather: 0
|
||||
m_FinalGatherFiltering: 1
|
||||
m_FinalGatherRayCount: 256
|
||||
m_ReflectionCompression: 2
|
||||
m_MixedBakeMode: 2
|
||||
m_BakeBackend: 1
|
||||
@ -250,12 +253,12 @@ MonoBehaviour:
|
||||
m_RequiresColorTexture: 0
|
||||
m_Version: 2
|
||||
m_TaaSettings:
|
||||
quality: 3
|
||||
frameInfluence: 0.1
|
||||
jitterScale: 1
|
||||
mipBias: 0
|
||||
varianceClampScale: 0.9
|
||||
contrastAdaptiveSharpening: 0
|
||||
m_Quality: 3
|
||||
m_FrameInfluence: 0.1
|
||||
m_JitterScale: 1
|
||||
m_MipBias: 0
|
||||
m_VarianceClampScale: 0.9
|
||||
m_ContrastAdaptiveSharpening: 0
|
||||
--- !u!1 &410087039
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -282,8 +285,9 @@ Light:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 410087039}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 11
|
||||
serializedVersion: 10
|
||||
m_Type: 1
|
||||
m_Shape: 0
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Intensity: 2
|
||||
m_Range: 10
|
||||
@ -333,7 +337,6 @@ Light:
|
||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_UseBoundingSphereOverride: 0
|
||||
m_UseViewFrustumForShadowCasterCull: 1
|
||||
m_ForceVisible: 0
|
||||
m_ShadowRadius: 0
|
||||
m_ShadowAngle: 0
|
||||
--- !u!4 &410087041
|
||||
|
||||
@ -33,14 +33,6 @@ MonoBehaviour:
|
||||
m_EnableLODCrossFade: 1
|
||||
m_LODCrossFadeDitheringType: 1
|
||||
m_ShEvalMode: 0
|
||||
m_LightProbeSystem: 0
|
||||
m_ProbeVolumeMemoryBudget: 1024
|
||||
m_ProbeVolumeBlendingMemoryBudget: 256
|
||||
m_SupportProbeVolumeGPUStreaming: 0
|
||||
m_SupportProbeVolumeDiskStreaming: 0
|
||||
m_SupportProbeVolumeScenarios: 0
|
||||
m_SupportProbeVolumeScenarioBlending: 0
|
||||
m_ProbeVolumeSHBands: 1
|
||||
m_MainLightRenderingMode: 1
|
||||
m_MainLightShadowsSupported: 1
|
||||
m_MainLightShadowmapResolution: 2048
|
||||
@ -75,39 +67,30 @@ MonoBehaviour:
|
||||
m_SupportsLightLayers: 1
|
||||
m_DebugLevel: 0
|
||||
m_StoreActionsOptimization: 0
|
||||
m_EnableRenderGraph: 0
|
||||
m_UseAdaptivePerformance: 1
|
||||
m_ColorGradingMode: 0
|
||||
m_ColorGradingLutSize: 32
|
||||
m_UseFastSRGBLinearConversion: 0
|
||||
m_SupportDataDrivenLensFlare: 1
|
||||
m_SupportScreenSpaceLensFlare: 1
|
||||
m_GPUResidentDrawerMode: 0
|
||||
m_UseLegacyLightmaps: 0
|
||||
m_SmallMeshScreenPercentage: 0
|
||||
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||
m_ShadowType: 1
|
||||
m_LocalShadowsSupported: 0
|
||||
m_LocalShadowsAtlasResolution: 256
|
||||
m_MaxPixelLights: 0
|
||||
m_ShadowAtlasResolution: 256
|
||||
m_VolumeFrameworkUpdateMode: 0
|
||||
m_VolumeProfile: {fileID: 11400000, guid: 10fc4df2da32a41aaa32d77bc913491c, type: 2}
|
||||
apvScenesData:
|
||||
obsoleteSceneBounds:
|
||||
m_Keys: []
|
||||
m_Values: []
|
||||
obsoleteHasProbeVolumes:
|
||||
m_Keys: []
|
||||
m_Values:
|
||||
m_Textures:
|
||||
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||
m_PrefilteringModeMainLightShadows: 3
|
||||
m_PrefilteringModeAdditionalLight: 4
|
||||
m_PrefilteringModeAdditionalLightShadows: 0
|
||||
m_PrefilteringModeAdditionalLight: 0
|
||||
m_PrefilteringModeAdditionalLightShadows: 2
|
||||
m_PrefilterXRKeywords: 1
|
||||
m_PrefilteringModeForwardPlus: 1
|
||||
m_PrefilteringModeForwardPlus: 2
|
||||
m_PrefilteringModeDeferredRendering: 0
|
||||
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||
m_PrefilteringModeScreenSpaceOcclusion: 2
|
||||
m_PrefilterDebugKeywords: 1
|
||||
m_PrefilterWriteRenderingLayers: 0
|
||||
m_PrefilterWriteRenderingLayers: 1
|
||||
m_PrefilterHDROutput: 1
|
||||
m_PrefilterSSAODepthNormals: 0
|
||||
m_PrefilterSSAOSourceDepthLow: 1
|
||||
@ -120,16 +103,12 @@ MonoBehaviour:
|
||||
m_PrefilterSSAOSampleCountHigh: 1
|
||||
m_PrefilterDBufferMRT1: 1
|
||||
m_PrefilterDBufferMRT2: 1
|
||||
m_PrefilterDBufferMRT3: 0
|
||||
m_PrefilterSoftShadowsQualityLow: 0
|
||||
m_PrefilterSoftShadowsQualityMedium: 0
|
||||
m_PrefilterSoftShadowsQualityHigh: 0
|
||||
m_PrefilterDBufferMRT3: 1
|
||||
m_PrefilterSoftShadowsQualityLow: 1
|
||||
m_PrefilterSoftShadowsQualityMedium: 1
|
||||
m_PrefilterSoftShadowsQualityHigh: 1
|
||||
m_PrefilterSoftShadows: 0
|
||||
m_PrefilterScreenCoord: 1
|
||||
m_PrefilterNativeRenderPass: 1
|
||||
m_PrefilterUseLegacyLightmaps: 0
|
||||
m_ShaderVariantLogLevel: 0
|
||||
m_ShadowCascades: 0
|
||||
m_Textures:
|
||||
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
|
||||
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
|
||||
|
||||
@ -12,808 +12,11 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c3028a02f45639447a8cf4f6fa36bff2, type: 3}
|
||||
m_Name: Builder
|
||||
m_EditorClassIdentifier:
|
||||
ConfigUploadPath: HXORG_Config_Root
|
||||
BucketName: 2020yoyo
|
||||
UploadPath: HXORG
|
||||
accessKeyId: LTAI5tCMR4e8A4W8sKvt1pLe
|
||||
accessKeySecret: yOGzDbtS1cGS9y5C7akfjgITf376CJ
|
||||
endPoint: oss-cn-hangzhou.aliyuncs.com
|
||||
vfSetting: {fileID: 11400000, guid: b304f98f44ccac546969282b7054a052, type: 2}
|
||||
uploaderClassName: VersionFlow.Editors.Patchloader_AliOSS
|
||||
uploaderCfgJson: '{"BucketName":"2020yoyo","UploadPath":"VERSION_TEST","accessKeyId":"LTAI5tCMR4e8A4W8sKvt1pLe","accessKeySecret":"yOGzDbtS1cGS9y5C7akfjgITf376CJ","endPoint":"oss-cn-hangzhou.aliyuncs.com"}'
|
||||
Options: 256
|
||||
Groups:
|
||||
- GroupName: Map3
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: f56b5ebbb63b8ee4cbfb9141c956b76b, type: 3}
|
||||
- {fileID: 102900000, guid: c44c562b11e37ac4dae217b6cfca7089, type: 3}
|
||||
- {fileID: 102900000, guid: 615bd05b2614a0c408a6e5dedbfa5b7e, type: 3}
|
||||
- {fileID: 102900000, guid: 40ebe47207b258c4bba20897cd2c32ce, type: 3}
|
||||
- {fileID: 102900000, guid: aea52b43d68a60c428617ff84dcb0d21, type: 3}
|
||||
- {fileID: 102900000, guid: 70481748098d1d64ea51e6886e785112, type: 3}
|
||||
- {fileID: 102900000, guid: c4d8becb39208fb459ba4d030ffa6dd5, type: 3}
|
||||
- {fileID: 102900000, guid: e8fdc89615aa20c43b6e5ae136d650a9, type: 3}
|
||||
- {fileID: 102900000, guid: 8351be4e8df28444b8202aec7436ec07, type: 3}
|
||||
- {fileID: 102900000, guid: d09787dd11c350b4caf8587019d3a0d3, type: 3}
|
||||
- {fileID: 102900000, guid: 4d2b8e9dbc452fd43a459c3e9da85e31, type: 3}
|
||||
- {fileID: 102900000, guid: 7df6942a13463d44fa815a7e8332e855, type: 3}
|
||||
- {fileID: 102900000, guid: 5cd393961b37ced408a9b3b0d0dc9b09, type: 3}
|
||||
- {fileID: 102900000, guid: be04a2544c40b5640927287ffe809402, type: 3}
|
||||
- {fileID: 102900000, guid: 5e5faa1c5c9b7de4092f0496bb86ee95, type: 3}
|
||||
- {fileID: 102900000, guid: 9fd63ab497ec1d64cb8872cb36604307, type: 3}
|
||||
- {fileID: 102900000, guid: afdfb029250cb7f45ac24b269c81162c, type: 3}
|
||||
- {fileID: 102900000, guid: 407100412e265ea4f8ad0a21184e73a4, type: 3}
|
||||
- {fileID: 102900000, guid: 1c4d2d7145204c74184ad63669607eb2, type: 3}
|
||||
- {fileID: 102900000, guid: c26ed64acf090354d8c46dec3c4c45a6, type: 3}
|
||||
- {fileID: 102900000, guid: 2a5370c0a77ea8e4eb7160fa4b7b7175, type: 3}
|
||||
- {fileID: 102900000, guid: 79c745b34a3e48f49b6b3a1b4c24edb3, type: 3}
|
||||
- {fileID: 102900000, guid: 0d359e5065512084f982d587f08c7715, type: 3}
|
||||
- {fileID: 102900000, guid: b2d364026874be147b75ff64b0fed420, type: 3}
|
||||
- {fileID: 102900000, guid: 70070756351324f418f96f6cd5e87258, type: 3}
|
||||
- {fileID: 102900000, guid: 789708a951fba164a97ad6e0cce1a7d2, type: 3}
|
||||
- {fileID: 102900000, guid: d408be43f2520a843ac4382b4384ef20, type: 3}
|
||||
- {fileID: 102900000, guid: 2e6c9646e783feb449255a9fc794a5e5, type: 3}
|
||||
- {fileID: 102900000, guid: 210b42a1dc7b48048ae171c7c57c3e71, type: 3}
|
||||
- {fileID: 102900000, guid: 9d0ee2cbed7563540946e571472983f5, type: 3}
|
||||
- {fileID: 102900000, guid: a21629ce348f1f24f86a327cc2a8cab3, type: 3}
|
||||
- {fileID: 102900000, guid: 430d5677994d8af44857b44815c96e32, type: 3}
|
||||
- {fileID: 102900000, guid: 8f843dd6cef9d494c973c2bd1e1c5065, type: 3}
|
||||
- {fileID: 102900000, guid: 01d093c0236839249933670231460506, type: 3}
|
||||
- {fileID: 102900000, guid: de2741aef2901ac468edde28f175159f, type: 3}
|
||||
- {fileID: 102900000, guid: 18f345e9c9a7cf5479257bb2b2b72137, type: 3}
|
||||
- {fileID: 102900000, guid: 9044cff7fe8367e428d0e79173f76170, type: 3}
|
||||
- {fileID: 102900000, guid: ce984af32654bbc4197115de9fd0ce1c, type: 3}
|
||||
- {fileID: 102900000, guid: 83d85af1d0a133f478c1a2d6282d5b49, type: 3}
|
||||
- {fileID: 102900000, guid: 1ab66b0ca2bf090418494cfa6aea69a9, type: 3}
|
||||
- {fileID: 102900000, guid: a5abc746506edf341a4b516a13935717, type: 3}
|
||||
- {fileID: 102900000, guid: f0152cb85bfd9594e8f1be1b6b4353c6, type: 3}
|
||||
- {fileID: 102900000, guid: 80dd7863e778a4d4eb8864edc8582f9f, type: 3}
|
||||
- {fileID: 102900000, guid: 5b2d061f27b261b43992a1e453068c44, type: 3}
|
||||
- {fileID: 102900000, guid: dee2fa28f3eea8644862f3135f741d01, type: 3}
|
||||
- {fileID: 102900000, guid: 338dc3fe06ce96e4aa7cb6a637f4bfd0, type: 3}
|
||||
- {fileID: 102900000, guid: 2c23430a7b331b74eb5f7849629d7648, type: 3}
|
||||
- {fileID: 102900000, guid: 3f713bf54184c074a97658622c4c14df, type: 3}
|
||||
- {fileID: 102900000, guid: 5f9a325c98801d14d8036b55b81fbb61, type: 3}
|
||||
- {fileID: 102900000, guid: c54018b62e592944eb821c5e19a3c657, type: 3}
|
||||
- {fileID: 102900000, guid: ded7a85d261e613479e053397a7c4be4, type: 3}
|
||||
- {fileID: 102900000, guid: 5aef6f830f203f5459ae63a27172d791, type: 3}
|
||||
- {fileID: 102900000, guid: 851b4f88cb389ef44b422d58445400f1, type: 3}
|
||||
- {fileID: 102900000, guid: 85ae20c2852051d4ab58511906a997e0, type: 3}
|
||||
- {fileID: 102900000, guid: 038d46fd1248e3a49a1aff32cb73dd07, type: 3}
|
||||
- {fileID: 102900000, guid: db586f1777099bb488fcb782e96bba48, type: 3}
|
||||
- {fileID: 102900000, guid: e04447df086dc2d46b11d26df2ec5dea, type: 3}
|
||||
- {fileID: 102900000, guid: 309e9c44dbad93c4abe53a67ae2f5284, type: 3}
|
||||
- {fileID: 102900000, guid: e51b3c9908edb3e468d06aaa0e6e0913, type: 3}
|
||||
- {fileID: 102900000, guid: 5e2a7bae518f87e4e9b31d376bccb7b0, type: 3}
|
||||
- {fileID: 102900000, guid: 319aab3854058c14d846db7c5fe2bb01, type: 3}
|
||||
- {fileID: 102900000, guid: 09cc4522ed7b7fb4a894386db754190f, type: 3}
|
||||
- {fileID: 102900000, guid: 743f99eae25be5a4db287b8351d282f0, type: 3}
|
||||
- {fileID: 102900000, guid: 18a85a4d78ba76b488bf4318694d6456, type: 3}
|
||||
- {fileID: 102900000, guid: e4d450067eed80641a56ffd0df80d343, type: 3}
|
||||
- {fileID: 102900000, guid: eb71635fb24d2f84b98a447a3dc458fd, type: 3}
|
||||
- {fileID: 102900000, guid: 26e633cc3a6968e4f911a7693b479d11, type: 3}
|
||||
- {fileID: 102900000, guid: 0391552a86d4d054ea1742fe47c4b109, type: 3}
|
||||
- {fileID: 102900000, guid: b3539114eea3fbf4d84197b9a506595c, type: 3}
|
||||
- {fileID: 102900000, guid: 2a3b2b66847bd734b8d741c9fb1d8caf, type: 3}
|
||||
- {fileID: 102900000, guid: eb276450a046ac14f91667d3f095df73, type: 3}
|
||||
- {fileID: 102900000, guid: 669918a28b4f956459377e5392f33b52, type: 3}
|
||||
- {fileID: 102900000, guid: 50bd91b08db8a4a4689907e710662744, type: 3}
|
||||
- {fileID: 102900000, guid: 28d4036141347754b95ab4e07b07d2bc, type: 3}
|
||||
- {fileID: 102900000, guid: 956147eebf0c0f54483ab482b19d43fe, type: 3}
|
||||
- {fileID: 102900000, guid: e5abcd015200b3c4ba0e9e7299e73781, type: 3}
|
||||
- {fileID: 102900000, guid: 60a0651165328f046a1c9a695cd5ca4f, type: 3}
|
||||
- {fileID: 102900000, guid: c5ba838208359264ba7bd9a2e6acbfed, type: 3}
|
||||
- {fileID: 102900000, guid: e5abcd015200b3c4ba0e9e7299e73781, type: 3}
|
||||
- {fileID: 102900000, guid: 7da079f2adf63b7458cf1f63d8014ce1, type: 3}
|
||||
- {fileID: 102900000, guid: 9a7ba7474baaa6b4eaed380c5e7f92c5, type: 3}
|
||||
- {fileID: 102900000, guid: 4abd70c835ec26c4c97b520cf4a93f3a, type: 3}
|
||||
- {fileID: 102900000, guid: 9f3a60d0c467b6b488275de91864faeb, type: 3}
|
||||
- {fileID: 102900000, guid: f3440a93be25ad84eab181ac123c078f, type: 3}
|
||||
- {fileID: 102900000, guid: 9f91ca73b2033fd46ab17c0b365b22ca, type: 3}
|
||||
- {fileID: 102900000, guid: f78a22b4c9b3c2d4c9554fd59896be1f, type: 3}
|
||||
- {fileID: 102900000, guid: 489f51c0e499fe34b97b5f9345cbf772, type: 3}
|
||||
- {fileID: 102900000, guid: f7e94dc761a709b479fe3e33371bb2e4, type: 3}
|
||||
- {fileID: 102900000, guid: 0b3f1a0dfdb1ddb43a2b2390f065c835, type: 3}
|
||||
- {fileID: 102900000, guid: af303c14fa2a4de429fea0b9135d7369, type: 3}
|
||||
- {fileID: 102900000, guid: ef02a4ae25b46b2449874ee1e8cc2eb1, type: 3}
|
||||
- GroupName: Map4
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 9f9d0ee2f99bae84cb613d3cca056c03, type: 3}
|
||||
- {fileID: 102900000, guid: d1d6cd2077def434f97e514418242dfc, type: 3}
|
||||
- {fileID: 102900000, guid: a023396aa6805c24b853c3554f3c9618, type: 3}
|
||||
- {fileID: 102900000, guid: 572c0fe586d9854469ef26e8557db740, type: 3}
|
||||
- {fileID: 102900000, guid: 5b28df89d4b10c746b3d4b25a65b30f6, type: 3}
|
||||
- {fileID: 102900000, guid: 532181617cfbc1e468fb80452f769c90, type: 3}
|
||||
- {fileID: 102900000, guid: 872641a0d120b0148ba0e0ef293382ad, type: 3}
|
||||
- {fileID: 102900000, guid: c663dd811ee7541489cccb8cec38ad1b, type: 3}
|
||||
- {fileID: 102900000, guid: 49f7292e68fa1ab4bb2ddcd7e3d27d1d, type: 3}
|
||||
- {fileID: 102900000, guid: 328c93189d0bfb24793f28aefe08abad, type: 3}
|
||||
- {fileID: 102900000, guid: f3f09f1bce492714dad4fe8b8ca79cc4, type: 3}
|
||||
- {fileID: 102900000, guid: 56a1c071dd512ad488e75828134b8253, type: 3}
|
||||
- {fileID: 102900000, guid: 8125e081fec81c94a9539ecc40e9cafd, type: 3}
|
||||
- {fileID: 102900000, guid: 94aa162632d96e3488ebf8085db4a4e6, type: 3}
|
||||
- {fileID: 102900000, guid: 9f572aad211fed244b31f6c60e230827, type: 3}
|
||||
- {fileID: 102900000, guid: f7c64d7d88805d547a3b1ae2be5841a7, type: 3}
|
||||
- {fileID: 102900000, guid: 43ad70fa891b3654faca65d5e372097a, type: 3}
|
||||
- {fileID: 102900000, guid: 74ee76acd5a319142b61caba55db7a98, type: 3}
|
||||
- {fileID: 102900000, guid: 8c731810f94057d42b18a850af2d06a6, type: 3}
|
||||
- {fileID: 102900000, guid: 6cf1d9fdbace03243b3f99792ddacb39, type: 3}
|
||||
- {fileID: 102900000, guid: fddaf09c8247229418f0350c2feba513, type: 3}
|
||||
- {fileID: 102900000, guid: 1af11c89ce147dc439738f9859c94df8, type: 3}
|
||||
- {fileID: 102900000, guid: 458f268c6bced2f43a2b030174eab130, type: 3}
|
||||
- {fileID: 102900000, guid: c6ba7e14b5e7d5f45a2bd7944c162447, type: 3}
|
||||
- {fileID: 102900000, guid: ba66cb98299c0df44bb95897d39202f9, type: 3}
|
||||
- {fileID: 102900000, guid: 4dd92c1edb41dd447ab109998a17df68, type: 3}
|
||||
- {fileID: 102900000, guid: d799125b95b650248bb82628ebc3ec57, type: 3}
|
||||
- {fileID: 102900000, guid: 77d8b8d3e3e13804a897ec6a81fb43c8, type: 3}
|
||||
- {fileID: 102900000, guid: d7b9051e1f646894dbad52698d8790a1, type: 3}
|
||||
- {fileID: 102900000, guid: 10dff0d8ebc296b4a9caf7e1a2f8bfa6, type: 3}
|
||||
- {fileID: 102900000, guid: 2d417979f1bbb8842a9c477630f08ca8, type: 3}
|
||||
- {fileID: 102900000, guid: 1ef61d14c5403f14aa8c5fdfd4d96008, type: 3}
|
||||
- {fileID: 102900000, guid: 016ffd43ecbf9624c88d2217de8dede3, type: 3}
|
||||
- {fileID: 102900000, guid: f1487c26209a2d14bb9ff0eb80abdeec, type: 3}
|
||||
- {fileID: 102900000, guid: 669b6c39e99d2164ab5d492b65c08d2c, type: 3}
|
||||
- {fileID: 102900000, guid: 796996721bcf91e4095a503b5f0a908c, type: 3}
|
||||
- {fileID: 102900000, guid: 2f34bcf24b4c0a947a0a36a14a9f44e5, type: 3}
|
||||
- {fileID: 102900000, guid: 457e02831ef450b4daa12b1626f7f77b, type: 3}
|
||||
- {fileID: 102900000, guid: a5a4a6c96065d9640866e06afb2f795a, type: 3}
|
||||
- {fileID: 102900000, guid: a47b9779cc21c2d4f94f5cabbf4eef01, type: 3}
|
||||
- {fileID: 102900000, guid: fe5e546f599701744ad894ec2e27fae4, type: 3}
|
||||
- {fileID: 102900000, guid: 05fe15b933511e544af3ae426307d587, type: 3}
|
||||
- {fileID: 102900000, guid: 4a13758ff5b9f5f4b90519010de885f7, type: 3}
|
||||
- {fileID: 102900000, guid: 0a269c2e71f4b7444ae3971742cfb613, type: 3}
|
||||
- {fileID: 102900000, guid: a16bb3879a92898408642f8404d49145, type: 3}
|
||||
- {fileID: 102900000, guid: 8439502d222ad99468e41b23b63736c5, type: 3}
|
||||
- {fileID: 102900000, guid: 4d09556739e71c94a86b6856afcf8b40, type: 3}
|
||||
- {fileID: 102900000, guid: f5b3232dd8ed7394dbcb40d16db22115, type: 3}
|
||||
- {fileID: 102900000, guid: 43b4d39b5824e9d449144aaf21c1733a, type: 3}
|
||||
- {fileID: 102900000, guid: 3b1f0abc6ea65c041b471eddf4946441, type: 3}
|
||||
- {fileID: 102900000, guid: ab7ba41e8ad889b4f8c6f210aa504de1, type: 3}
|
||||
- {fileID: 102900000, guid: 973de367526668a418e9877cd40788c6, type: 3}
|
||||
- {fileID: 102900000, guid: 2acad33d1000b9249ae912427487947a, type: 3}
|
||||
- {fileID: 102900000, guid: 91b937997e3956a4ea786a54a36c6f6c, type: 3}
|
||||
- {fileID: 102900000, guid: ee8f59dd31097864e93a9a761120dd03, type: 3}
|
||||
- {fileID: 102900000, guid: a75e5ed975058d24f9f630f81de3aa0f, type: 3}
|
||||
- {fileID: 102900000, guid: 6d483abaea05fc14490ba6938ceb72e6, type: 3}
|
||||
- {fileID: 102900000, guid: 3eaf656e9d7e5fa4d8296ddfa67b9e6a, type: 3}
|
||||
- {fileID: 102900000, guid: 5c4e791c2dd456b439f622bb3a0d75ac, type: 3}
|
||||
- {fileID: 102900000, guid: f6639c21754e40543955bdac790eec4f, type: 3}
|
||||
- {fileID: 102900000, guid: f3285d6aad566fc4fa5603dfd6bbeee3, type: 3}
|
||||
- {fileID: 102900000, guid: a7937f3a9ecd4a447bc4e6f352f0d205, type: 3}
|
||||
- {fileID: 102900000, guid: ff65b10fd0163ef41af9481bedfc1618, type: 3}
|
||||
- {fileID: 102900000, guid: b4cfa457dbfb46d48bea3a9e0bcc6db7, type: 3}
|
||||
- {fileID: 102900000, guid: bc5bd37a880e18c43befb0ba9edc6772, type: 3}
|
||||
- {fileID: 102900000, guid: 46f5116990d10274ea35dfa7922ea89c, type: 3}
|
||||
- {fileID: 102900000, guid: 72c3e91701992c84ebd0133aaca8fb6c, type: 3}
|
||||
- {fileID: 102900000, guid: 4ce868778be619343877dbe21feef400, type: 3}
|
||||
- {fileID: 102900000, guid: 184fb253f8563734aaf35c8c860e2148, type: 3}
|
||||
- {fileID: 102900000, guid: 9575eefd45bac94488b1f9f22008df3f, type: 3}
|
||||
- {fileID: 102900000, guid: 84e833ab8fc1b0e42b6cc8496b74ff62, type: 3}
|
||||
- {fileID: 102900000, guid: 9858e5061a2fd5542a02b9c926ad6150, type: 3}
|
||||
- {fileID: 102900000, guid: fbddce1f2f7799341b8d052efd73067d, type: 3}
|
||||
- {fileID: 102900000, guid: f46afbb72e947ed4e90c250d4b88c4ab, type: 3}
|
||||
- {fileID: 102900000, guid: fccd219ca6421cb46995742155f406a9, type: 3}
|
||||
- {fileID: 102900000, guid: e9283db8ece4b994eb97ee9f632b2c21, type: 3}
|
||||
- {fileID: 102900000, guid: 6721fe72a769c644487f5cf2371ef204, type: 3}
|
||||
- {fileID: 102900000, guid: f2cddd04cd2b1cc479b8ae1f53e47553, type: 3}
|
||||
- {fileID: 102900000, guid: 6b22739415d988241995c0efc18f244e, type: 3}
|
||||
- {fileID: 102900000, guid: e229db66ec425c447ae06f1092d99927, type: 3}
|
||||
- {fileID: 102900000, guid: 8fba5d51135f5c3428073b5995a8d03d, type: 3}
|
||||
- {fileID: 102900000, guid: 48b2da294f3459046aa49095067ce00b, type: 3}
|
||||
- {fileID: 102900000, guid: 7c6da8f9e8014fe4a99c9a92eaf8d9a9, type: 3}
|
||||
- {fileID: 102900000, guid: a24945fdec8836c439169302b8bc140e, type: 3}
|
||||
- {fileID: 102900000, guid: 05fed90ac64c18c42886b48edd0b7f77, type: 3}
|
||||
- {fileID: 102900000, guid: 8b3023561e33e8949a2df16d081b8a5c, type: 3}
|
||||
- {fileID: 102900000, guid: 24ad3c185aa55774d82b7a4b5607afe9, type: 3}
|
||||
- {fileID: 102900000, guid: e53d4091b239f8448a5c06eebeb1f09d, type: 3}
|
||||
- {fileID: 102900000, guid: 4cdc572dc8d29c443be5c3e3f5a7298b, type: 3}
|
||||
- {fileID: 102900000, guid: 4a69d98d5cb0b984282280a90346c12c, type: 3}
|
||||
- GroupName: Map5
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: dc7c21fc5e21e5345af7faca9be75479, type: 3}
|
||||
- {fileID: 102900000, guid: fb179ed8e350e3544aea0e3d7717819f, type: 3}
|
||||
- {fileID: 102900000, guid: f12abf35ee4eb9f4392525dd864e2b2e, type: 3}
|
||||
- {fileID: 102900000, guid: 631739482ba14894483b404990882b88, type: 3}
|
||||
- {fileID: 102900000, guid: fae61a2dcbc76d54fad536404a0c5cd9, type: 3}
|
||||
- {fileID: 102900000, guid: 8caca7e46df15ed44aeeae6d40d11445, type: 3}
|
||||
- {fileID: 102900000, guid: da2dd8f9e93a29b4ba724776c3c746d0, type: 3}
|
||||
- {fileID: 102900000, guid: a7f03e0b22951734683d8481265a9f01, type: 3}
|
||||
- GroupName: Map6
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: f402e9187c99e9748b5e879c42f95f70, type: 3}
|
||||
- {fileID: 102900000, guid: 283d989ee61ab854b8244b2ba8f1291f, type: 3}
|
||||
- {fileID: 102900000, guid: c4a0dd51624a6db47846d133eb435562, type: 3}
|
||||
- {fileID: 102900000, guid: 4b68170c5139d364ebe0c7a03cb2e0bd, type: 3}
|
||||
- {fileID: 102900000, guid: 44f41148c92e36b4b9d0773bc0e17777, type: 3}
|
||||
- {fileID: 102900000, guid: 49fe6b7166742e14a87c79d07ea26c49, type: 3}
|
||||
- {fileID: 102900000, guid: fe93b0f159250fe4caa8f3005b3eab5e, type: 3}
|
||||
- {fileID: 102900000, guid: b35a36a3ac9b35a41b4b3a3efc21dd64, type: 3}
|
||||
- {fileID: 102900000, guid: ef8bc4bb1fc3a40409e46f8bbe9c3837, type: 3}
|
||||
- {fileID: 102900000, guid: c4af3ff01a6772c4c801fd1276439cd7, type: 3}
|
||||
- {fileID: 102900000, guid: 78db74d7db94d9c438ebec8e16e252ed, type: 3}
|
||||
- {fileID: 102900000, guid: 561ac0744f2cdaf4bb0f6b6beb8e99ad, type: 3}
|
||||
- {fileID: 102900000, guid: 9b6e5d5bbbd4e16419c475a82e9c573c, type: 3}
|
||||
- {fileID: 102900000, guid: a752fe8d8e2e0bd4e88433aa157101a2, type: 3}
|
||||
- {fileID: 102900000, guid: c2b7f31eb7d11f44eb7d5c2925f80102, type: 3}
|
||||
- {fileID: 102900000, guid: e40fd018e3455f643828b1267729170c, type: 3}
|
||||
- {fileID: 102900000, guid: 65deaf53bd8f62c40b4d65916fedc6c6, type: 3}
|
||||
- {fileID: 102900000, guid: 913af1012c707974285d33bc028ab24b, type: 3}
|
||||
- {fileID: 102900000, guid: 3ead118ed9fb9134094144a486426b35, type: 3}
|
||||
- {fileID: 102900000, guid: dc7927ca5f5617048a6874af3e828dc7, type: 3}
|
||||
- {fileID: 102900000, guid: 95b56c7f6927e8845b08488d6b5b3982, type: 3}
|
||||
- {fileID: 102900000, guid: 476b2ed49221cde4f9ee43b9305a33e1, type: 3}
|
||||
- {fileID: 102900000, guid: 9dc96993a52a97d49afd1c664b55731d, type: 3}
|
||||
- {fileID: 102900000, guid: aa4a06e4b6fed474a8c1731462d833e3, type: 3}
|
||||
- {fileID: 102900000, guid: d591b24d6d0f44b4984e4e74bcfebea0, type: 3}
|
||||
- {fileID: 102900000, guid: 6831bd2e1887c1b438703346493c66a4, type: 3}
|
||||
- {fileID: 102900000, guid: 6e174f4eec390f948be422ceed2d1484, type: 3}
|
||||
- {fileID: 102900000, guid: 6468281a168f76c4a82b63f6895da49a, type: 3}
|
||||
- {fileID: 102900000, guid: c2144280285995b49990813784ca213b, type: 3}
|
||||
- {fileID: 102900000, guid: 8f24abb3689607a4a968d8088ac92df2, type: 3}
|
||||
- {fileID: 102900000, guid: 0f25b33523173054797ec209079fc386, type: 3}
|
||||
- {fileID: 102900000, guid: ed0904c516883e54b9aef0ca30655978, type: 3}
|
||||
- {fileID: 102900000, guid: 586e9405a0882d44c9d7119b1ab9262f, type: 3}
|
||||
- {fileID: 102900000, guid: 04d667164b90fa0488af6f7af5ba8435, type: 3}
|
||||
- {fileID: 102900000, guid: 123023dc294c64a43a67e31105772175, type: 3}
|
||||
- {fileID: 102900000, guid: 0ee211928ebefaa47aeb6adba1a5a4d7, type: 3}
|
||||
- {fileID: 102900000, guid: 88cb25427c3fda34898c5f6ae3df8262, type: 3}
|
||||
- {fileID: 102900000, guid: 65d36fef9efef4b4592dd2f48917ad93, type: 3}
|
||||
- {fileID: 102900000, guid: 669faaff39775df4cb4f50b9930a4b85, type: 3}
|
||||
- {fileID: 102900000, guid: fc9c5e0dab6a7dd4489676737fa8dd6c, type: 3}
|
||||
- {fileID: 102900000, guid: dc413e5b21601f24a8823db0611210b9, type: 3}
|
||||
- {fileID: 102900000, guid: 23d46059c3af28a46923d9515e4f4a1e, type: 3}
|
||||
- {fileID: 102900000, guid: 0f2a3a13d5a1f654fb9febdb2e633acf, type: 3}
|
||||
- {fileID: 102900000, guid: b77fb6178600e5241b1ba22fd4f5bfa8, type: 3}
|
||||
- {fileID: 102900000, guid: 045039ac4805a484e810d70584f8effc, type: 3}
|
||||
- {fileID: 102900000, guid: 6a7f4cc7e53535544bc7d3b47cc80073, type: 3}
|
||||
- {fileID: 102900000, guid: 9cc5a37c0f237754abea2cd0132bb6e7, type: 3}
|
||||
- {fileID: 102900000, guid: 8b9c445c26373884498c9000d06efac2, type: 3}
|
||||
- {fileID: 102900000, guid: 4975906bc43044f448c66d19fa1277d2, type: 3}
|
||||
- {fileID: 102900000, guid: b79d6bceafe36dd45a84d980a693e476, type: 3}
|
||||
- {fileID: 102900000, guid: 80ce3e9582f37ff448ea87e04a79f69c, type: 3}
|
||||
- {fileID: 102900000, guid: a6d123825ff91ce438cc867a0c5ef07e, type: 3}
|
||||
- {fileID: 102900000, guid: 066fe78a1b628b749b5b93131a28ec23, type: 3}
|
||||
- {fileID: 102900000, guid: f6a6ce36941878e4f9b2c6645bebbd94, type: 3}
|
||||
- {fileID: 102900000, guid: 115e18cd11257944582f6a4a793078d9, type: 3}
|
||||
- {fileID: 102900000, guid: 49e441569224b3e4186417e2ba73eb71, type: 3}
|
||||
- {fileID: 102900000, guid: 5e3314b112179db438c84186aed630d4, type: 3}
|
||||
- {fileID: 102900000, guid: 11c48e038f5a11e43840012c9e4e09f3, type: 3}
|
||||
- {fileID: 102900000, guid: 762fa5fdbce5c9443ba4f13b12345c95, type: 3}
|
||||
- {fileID: 102900000, guid: d97aa2c49cdc439418bbbf4c90152eed, type: 3}
|
||||
- {fileID: 102900000, guid: 0c07315c6c3f67949b88adc46642c3da, type: 3}
|
||||
- {fileID: 102900000, guid: 3efe4f31ff2c4e34b9f961249bdc5893, type: 3}
|
||||
- {fileID: 102900000, guid: e554a262bd647094f84484e3342ba152, type: 3}
|
||||
- {fileID: 102900000, guid: 77351950eb30af249aab0c3a52bfb762, type: 3}
|
||||
- {fileID: 102900000, guid: c997d9d0e941bed448699d1880d0eb56, type: 3}
|
||||
- {fileID: 102900000, guid: 5b35a950f0bf6ba48a831358abe4c700, type: 3}
|
||||
- {fileID: 102900000, guid: 581ba7d9f7c8e9842bedf5e1d3aa264d, type: 3}
|
||||
- {fileID: 102900000, guid: e53f319c7e5f0674ca1d02a07b818664, type: 3}
|
||||
- GroupName: Map7
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: a9426cd83dc666649b68c95fcfb575cc, type: 3}
|
||||
- {fileID: 102900000, guid: cc6cd58f8db945e4da873310409a6812, type: 3}
|
||||
- {fileID: 102900000, guid: 7664160da873aa74d922e2e9f0fe274d, type: 3}
|
||||
- {fileID: 102900000, guid: ca2e8ea601ce9b745a1358b140f8d7ea, type: 3}
|
||||
- {fileID: 102900000, guid: 6efb13fe6485b324790e1f28500e5f1b, type: 3}
|
||||
- {fileID: 102900000, guid: 8e795d1d79845484aa5e530426d484ec, type: 3}
|
||||
- {fileID: 102900000, guid: a9ef9418dc6f0e34ca2712f01a998742, type: 3}
|
||||
- GroupName: Map8
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: e23e00e7b52768c4db4b69052549c871, type: 3}
|
||||
- {fileID: 102900000, guid: a728aa93e93f1554a8a5ed8197a64d82, type: 3}
|
||||
- {fileID: 102900000, guid: 542210d745c40af42a3d957a002dd211, type: 3}
|
||||
- {fileID: 102900000, guid: 3c1cd6929080ed24790a64d7c7c339ba, type: 3}
|
||||
- {fileID: 102900000, guid: 831e1019dceab894c984be8c5fcb765b, type: 3}
|
||||
- {fileID: 102900000, guid: 604fdfc69e04deb4e92fee049366a03a, type: 3}
|
||||
- {fileID: 102900000, guid: b293e14f94edd2f4b890ed6a8cc14aa7, type: 3}
|
||||
- {fileID: 102900000, guid: e336f2c576a493f49b9248e9951e9470, type: 3}
|
||||
- {fileID: 102900000, guid: 8eb703344ddd7334e8c2b901735b854b, type: 3}
|
||||
- {fileID: 102900000, guid: dc6a4e4fa6fcf8742b3011e1ad593767, type: 3}
|
||||
- {fileID: 102900000, guid: ab85a7bf4e8bdf64da8279c1a271682b, type: 3}
|
||||
- {fileID: 102900000, guid: 56606269bb98d374cbbd95a0f0894180, type: 3}
|
||||
- {fileID: 102900000, guid: cfa2233f239323c40a524af8f309c802, type: 3}
|
||||
- {fileID: 102900000, guid: 36f6cf659f716f44c9b7d6bf08a6d9bd, type: 3}
|
||||
- {fileID: 102900000, guid: d594ef98b2577ad4bb0f0e9e95a94eec, type: 3}
|
||||
- {fileID: 102900000, guid: 813227d0761bff045a7370c4d71abf2c, type: 3}
|
||||
- {fileID: 102900000, guid: 182307a3ff008cc4eb52d918bdd95d28, type: 3}
|
||||
- {fileID: 102900000, guid: 0b8412af030b56542b4dd785d63ec2f8, type: 3}
|
||||
- {fileID: 102900000, guid: e682e4c61a9207445be5b446773ad1c1, type: 3}
|
||||
- {fileID: 102900000, guid: c9ffb832991ed574ab597a34028c7661, type: 3}
|
||||
- {fileID: 102900000, guid: 89374b99162d24543a458ecea8356f25, type: 3}
|
||||
- {fileID: 102900000, guid: 40c7d2816b686634e8acbc9bffb6b9d1, type: 3}
|
||||
- {fileID: 102900000, guid: c9bc4709fda5950438fa8d40629c4248, type: 3}
|
||||
- {fileID: 102900000, guid: 0499ac212b94f924eb9ba479eaddbca9, type: 3}
|
||||
- {fileID: 102900000, guid: 153fe694cde28604a9934a4a5b23b72b, type: 3}
|
||||
- {fileID: 102900000, guid: f4caf3d8eb0e0a042ac9d4217d9c5fcb, type: 3}
|
||||
- {fileID: 102900000, guid: eb8821333ff04be429c9193f0692d82d, type: 3}
|
||||
- {fileID: 102900000, guid: a55a142c8c0531e439a171745bd0b1ca, type: 3}
|
||||
- {fileID: 102900000, guid: 6aafb5fc8bc554044b5af8e4bb4c59b8, type: 3}
|
||||
- {fileID: 102900000, guid: f6a0f0781e753324a81af8bf8f91f76f, type: 3}
|
||||
- {fileID: 102900000, guid: f53d332324449a7449d405bbc3c77e74, type: 3}
|
||||
- {fileID: 102900000, guid: 2d321cbe58f468c4baeb1fd4f53e3ac4, type: 3}
|
||||
- {fileID: 102900000, guid: 843237c47c0942f48857fd834e95321c, type: 3}
|
||||
- {fileID: 102900000, guid: bfb0bfaed23441746ac2c1b211a2185e, type: 3}
|
||||
- {fileID: 102900000, guid: 4abf1ad9a05030d43b52b5bd1d5bf0d0, type: 3}
|
||||
- {fileID: 102900000, guid: a3b9ed9d68155c34193a01a71eede86a, type: 3}
|
||||
- {fileID: 102900000, guid: fbe548e79b6d6024c82914414feab8cd, type: 3}
|
||||
- {fileID: 102900000, guid: 193889ecf7be5fe4fb59c5f6b02041a2, type: 3}
|
||||
- {fileID: 102900000, guid: a3582b1de68b3384d9852ec146198b26, type: 3}
|
||||
- {fileID: 102900000, guid: 8584365d5ec2c1f4d93de075eea2a7c6, type: 3}
|
||||
- {fileID: 102900000, guid: 6b6ddf3c44e4e3f40b88a1e18fc6ea57, type: 3}
|
||||
- {fileID: 102900000, guid: 713e33b35190e704facb2a810d006002, type: 3}
|
||||
- {fileID: 102900000, guid: 707ea13b191006e4cb4170b9c7b9c194, type: 3}
|
||||
- {fileID: 102900000, guid: d3fe61201a116924787823f3751d2f15, type: 3}
|
||||
- {fileID: 102900000, guid: 3cb0212fa8611314080945ef8b7654af, type: 3}
|
||||
- {fileID: 102900000, guid: 9518c0df65958a24d8bf4a899130db5b, type: 3}
|
||||
- {fileID: 102900000, guid: 3fae1762e63641342bf5a77ab5f2d05f, type: 3}
|
||||
- {fileID: 102900000, guid: 46aea466cab6f7a42b04abbbb71e4f9b, type: 3}
|
||||
- {fileID: 102900000, guid: adac25388f67c3648a1525bfaf329c1a, type: 3}
|
||||
- {fileID: 102900000, guid: 8068f98c938a21c43bc3b0964f6a206f, type: 3}
|
||||
- {fileID: 102900000, guid: ed852fe8c9e0ee342a061fa03b8bedda, type: 3}
|
||||
- {fileID: 102900000, guid: 525a304cc2c6a9a40b5e07b39ed5a475, type: 3}
|
||||
- {fileID: 102900000, guid: 66869f39364238f4c93a56f858510a94, type: 3}
|
||||
- GroupName: Map9
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 676e5200b9cd58344aee3fda3828a223, type: 3}
|
||||
- {fileID: 102900000, guid: 0ead8d7ec05d9ab4e9ac6bfcff079d88, type: 3}
|
||||
- {fileID: 102900000, guid: edb6cf6907d603d4aa708a3c3899a35f, type: 3}
|
||||
- {fileID: 102900000, guid: 061a1dec8947236478acbcdd9559f507, type: 3}
|
||||
- {fileID: 102900000, guid: 3683c412edfc3e6489d30180aa5caa92, type: 3}
|
||||
- {fileID: 102900000, guid: 052fab060a06baa4a88de780074f455f, type: 3}
|
||||
- {fileID: 102900000, guid: 96c3f62eac643c14ab9dbc34b21dc830, type: 3}
|
||||
- GroupName: Map10
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 3b7abb4be3a7086458b7d667a6e24e79, type: 3}
|
||||
- {fileID: 102900000, guid: b90e2caa040282641a62a78804a3a420, type: 3}
|
||||
- {fileID: 102900000, guid: 0b4dcaaa97cecfc439aa1e935b555283, type: 3}
|
||||
- {fileID: 102900000, guid: f21a83e4940c8bf4f97199a368d3b552, type: 3}
|
||||
- {fileID: 102900000, guid: 3972ea7d3e85a7741915698a2ab118bd, type: 3}
|
||||
- {fileID: 102900000, guid: 91896703f4a0bc44eb4b799842eeab1e, type: 3}
|
||||
- {fileID: 102900000, guid: 3f9f52c135bcfa54b8a7253d4ba1a7bb, type: 3}
|
||||
- {fileID: 102900000, guid: f2cab77237d6a8c41acd6d1e96e371df, type: 3}
|
||||
- {fileID: 102900000, guid: f266f391e88fccb449b5e27b857d6cdf, type: 3}
|
||||
- {fileID: 102900000, guid: c8eb108d9f4b1a44e954f23b4f65e16c, type: 3}
|
||||
- {fileID: 102900000, guid: 255afba6153bbcb45b8d0e8f3866ddd2, type: 3}
|
||||
- {fileID: 102900000, guid: f3779612587fa3e40ba819c96f19703d, type: 3}
|
||||
- {fileID: 102900000, guid: 3f3c9964f8f74a843ba108af7707a1e3, type: 3}
|
||||
- {fileID: 102900000, guid: 66d671f0d09e78641a942e3ba81ae790, type: 3}
|
||||
- {fileID: 102900000, guid: a8fa695c8ab6eeb459c0f7b0864e7710, type: 3}
|
||||
- {fileID: 102900000, guid: 94eccbbc9a55cd04fb7d805cd7c318f0, type: 3}
|
||||
- {fileID: 102900000, guid: ef45e1ac27665a64bbf1f8585d144f53, type: 3}
|
||||
- {fileID: 102900000, guid: b9202e2dbc456c842951ed9bdd0587bd, type: 3}
|
||||
- {fileID: 102900000, guid: 487ea4ea6664d0d419886b149ffa6861, type: 3}
|
||||
- {fileID: 102900000, guid: 9e4cd3fc7978c0743ada477372e377d5, type: 3}
|
||||
- {fileID: 102900000, guid: edcbcd120e930e24280c84dc7216fb59, type: 3}
|
||||
- {fileID: 102900000, guid: e9dd4b0f1bb98574084b96b217120a03, type: 3}
|
||||
- {fileID: 102900000, guid: 72dfcbef8b26a5d40a7394f486f1dff6, type: 3}
|
||||
- {fileID: 102900000, guid: 5adc5a92ec10a204fade14256eb05a3a, type: 3}
|
||||
- {fileID: 102900000, guid: d4ef5498294a18248ad489e49a94ec1c, type: 3}
|
||||
- {fileID: 102900000, guid: ce608c3315de32d4f9659ed3439221fe, type: 3}
|
||||
- {fileID: 102900000, guid: 28f3efbe6adcafc40a643c4ba12124b7, type: 3}
|
||||
- {fileID: 102900000, guid: d53ae7b08115159479047d6eb7ca13f0, type: 3}
|
||||
- {fileID: 102900000, guid: a01ec71acb8b095479a7bffae7a22254, type: 3}
|
||||
- {fileID: 102900000, guid: 9c280030169550746865993e0229e750, type: 3}
|
||||
- {fileID: 102900000, guid: acd87c54ed2d9814eb63db31eb6de164, type: 3}
|
||||
- {fileID: 102900000, guid: 9ad2975243cc8614aafe32e995c862fe, type: 3}
|
||||
- {fileID: 102900000, guid: 2cd3e174af0439c45a23fded72432bf9, type: 3}
|
||||
- {fileID: 102900000, guid: 8e4f1c867bdddd649a4ec682818c344a, type: 3}
|
||||
- {fileID: 102900000, guid: f3d302d1e88159b4c8f6b19d8abde49b, type: 3}
|
||||
- {fileID: 102900000, guid: 8bafa4e60c197b94385e709b2f4711d7, type: 3}
|
||||
- {fileID: 102900000, guid: 8bf3f7b925c4bce48a5b7300362e9e6d, type: 3}
|
||||
- {fileID: 102900000, guid: 225fa3890330ddf41879cc2d4479b4ef, type: 3}
|
||||
- {fileID: 102900000, guid: 59e26f25182b9ab4096182d7ee28b4b8, type: 3}
|
||||
- {fileID: 102900000, guid: 52c1b1cb19257a74ca77b711712f0a48, type: 3}
|
||||
- {fileID: 102900000, guid: 85fcdd7d70dad314bace51cea82480c4, type: 3}
|
||||
- {fileID: 102900000, guid: 94078de84bd2c9f4295cfefc1b165ce5, type: 3}
|
||||
- {fileID: 102900000, guid: 2f9f16e89240dd249891eba170aded4d, type: 3}
|
||||
- {fileID: 102900000, guid: adc7486ba94844241a6ddfcd3576c495, type: 3}
|
||||
- {fileID: 102900000, guid: ffadadb16a991d7418f45c55916c4644, type: 3}
|
||||
- {fileID: 102900000, guid: f678ad3ec5d1af145a27947116798d03, type: 3}
|
||||
- {fileID: 102900000, guid: a5b5aff4a1556924788b0e6c7e55246d, type: 3}
|
||||
- {fileID: 102900000, guid: d93e8dd99f3f6554aa8bb1e3d91a95c2, type: 3}
|
||||
- {fileID: 102900000, guid: 5ac647bea37ad2b4f92210bf43bb2ff8, type: 3}
|
||||
- {fileID: 102900000, guid: 420cb69942c397545b57ad372c40c85d, type: 3}
|
||||
- {fileID: 102900000, guid: a6b2eb3728ada3242af082881b16d696, type: 3}
|
||||
- {fileID: 102900000, guid: 31d3c109ac2d1134a9585b870808e665, type: 3}
|
||||
- {fileID: 102900000, guid: 955b8e239454aaf46bd99f45fcc436d6, type: 3}
|
||||
- {fileID: 102900000, guid: ef7846977fb96d64680b32fdb216182a, type: 3}
|
||||
- {fileID: 102900000, guid: 70ed295c85893c54688eca4f1472c046, type: 3}
|
||||
- {fileID: 102900000, guid: 3c8a7be03943cd84a8abaa6fa9a111dc, type: 3}
|
||||
- {fileID: 102900000, guid: a09307afd0105e74ab7df37961fbdf2d, type: 3}
|
||||
- {fileID: 102900000, guid: 4f98c786277280d47b152126194b1464, type: 3}
|
||||
- {fileID: 102900000, guid: ea8afc620a10e4b43863f06dbb985eca, type: 3}
|
||||
- {fileID: 102900000, guid: 6cc5d53ecf23ca640ac69fcae461ce80, type: 3}
|
||||
- {fileID: 102900000, guid: 93cdb8485d21d854b9794affe11cecac, type: 3}
|
||||
- {fileID: 102900000, guid: 3c799e83ffb450048b9710b41a96aaf0, type: 3}
|
||||
- {fileID: 102900000, guid: 1c05aaa2da0ac3c4f8046e03afcbe92c, type: 3}
|
||||
- {fileID: 102900000, guid: afbbf92f32cd4ca47862205ff5e77c64, type: 3}
|
||||
- {fileID: 102900000, guid: b42c69a468db6934ca8eecb3c28d924f, type: 3}
|
||||
- {fileID: 102900000, guid: 6d5b5ee23b75f26419edc872b7e8fc83, type: 3}
|
||||
- {fileID: 102900000, guid: b5794f16f5361a041a330aa63fca6522, type: 3}
|
||||
- {fileID: 102900000, guid: 9e9961a8847db564996bda56ce20d8bf, type: 3}
|
||||
- {fileID: 102900000, guid: 9e8f6bad770fba242a5f58c5e04a57d1, type: 3}
|
||||
- {fileID: 102900000, guid: 2477487b8813e6f4995c995280a65b17, type: 3}
|
||||
- {fileID: 102900000, guid: a0cfca71fa49c8e43b35d1817d4d8838, type: 3}
|
||||
- {fileID: 102900000, guid: 68d4cf7e8f0874d4790995bf312273ff, type: 3}
|
||||
- {fileID: 102900000, guid: 19a34e3cfafe87c4e87da54d786ff3e5, type: 3}
|
||||
- {fileID: 102900000, guid: bab5a2d8ea11a634cbb4f783e9952caf, type: 3}
|
||||
- {fileID: 102900000, guid: 4e9d454b4bba5ed47a7978a028b6f014, type: 3}
|
||||
- {fileID: 102900000, guid: 7d5494a83ddf2d14ca6d99bb4f036125, type: 3}
|
||||
- {fileID: 102900000, guid: dfcd5da246309d142bcaff7fe254eee2, type: 3}
|
||||
- {fileID: 102900000, guid: 393db9894ca151e44976b41af6fa38b3, type: 3}
|
||||
- {fileID: 102900000, guid: b2494225bf3bb3f4d9a750335e8fae12, type: 3}
|
||||
- {fileID: 102900000, guid: 8a4ec7957d415ec4785366bfee23685c, type: 3}
|
||||
- {fileID: 102900000, guid: 47cdb25f71cf2544d84c5a46b22ce4f2, type: 3}
|
||||
- {fileID: 102900000, guid: 1baeb549e433dcf4a9b4c06dcd6dfe52, type: 3}
|
||||
- {fileID: 102900000, guid: 851dd485d2bfb1a44b16acd7dbf0dd73, type: 3}
|
||||
- {fileID: 102900000, guid: 429f77b91d7d3064f8c94de540bc87a6, type: 3}
|
||||
- {fileID: 102900000, guid: 8a8df11d1a5374043bf3597a8ffae530, type: 3}
|
||||
- {fileID: 102900000, guid: 66bd835d9c760e54abdf930723358185, type: 3}
|
||||
- {fileID: 102900000, guid: f0dfa1f334a0c424eabd77f97a8a472c, type: 3}
|
||||
- {fileID: 102900000, guid: 3d67ff0fc1a77c64b8fbae49d7312424, type: 3}
|
||||
- {fileID: 102900000, guid: b8cd12776548fef47be1f1890db64d65, type: 3}
|
||||
- {fileID: 102900000, guid: d15c280e83e4cb54fa9673d93a66c385, type: 3}
|
||||
- {fileID: 102900000, guid: ac8d9d85c9cbc244290ff0506a0723e3, type: 3}
|
||||
- {fileID: 102900000, guid: 6cc5d53ecf23ca640ac69fcae461ce80, type: 3}
|
||||
- {fileID: 102900000, guid: 63a52dc41b679fa48bc40760285126ce, type: 3}
|
||||
- {fileID: 102900000, guid: f5b909d8ca168d246849a8c96fe9c0d0, type: 3}
|
||||
- {fileID: 102900000, guid: 7b370626ee32e134bbd8bfe9ba3aa863, type: 3}
|
||||
- {fileID: 102900000, guid: 8052d43071a98984e95622a701ce52d7, type: 3}
|
||||
- {fileID: 102900000, guid: f81abafecae93ef44b603bbcfa493053, type: 3}
|
||||
- GroupName: Map11
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 1930823e283cf1e49a95dd62d926ba3a, type: 3}
|
||||
- {fileID: 102900000, guid: f74b3e7728dabb94d96842b70f359129, type: 3}
|
||||
- {fileID: 102900000, guid: f82aa53f487b5264faaab6ad32110320, type: 3}
|
||||
- {fileID: 102900000, guid: b3d808faeab384843a1c5f7f48360d39, type: 3}
|
||||
- {fileID: 102900000, guid: 2e267d9d5926edf4c859c52972bd2fe6, type: 3}
|
||||
- {fileID: 102900000, guid: a3b26420fbf9a804bbb8879a49e3c91d, type: 3}
|
||||
- GroupName: Map12
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 4b52093608f82e442ae2aa3d134c1560, type: 3}
|
||||
- {fileID: 102900000, guid: 7c70938ad1e142540b3163534bfe5e1d, type: 3}
|
||||
- {fileID: 102900000, guid: 3ed1ed672802e284cafbcc093fedd077, type: 3}
|
||||
- {fileID: 102900000, guid: 9bbcbd9b672edfd498d88b13acd7558a, type: 3}
|
||||
- {fileID: 102900000, guid: 41704db84791af046be70f044f29956e, type: 3}
|
||||
- {fileID: 102900000, guid: e7725bf9cd58e87499b3ec589e27142a, type: 3}
|
||||
- {fileID: 102900000, guid: b746ff4786fc3544e8cb48793ea0232f, type: 3}
|
||||
- {fileID: 102900000, guid: ba072e72fcab2ce4dab97d046465a097, type: 3}
|
||||
- {fileID: 102900000, guid: 4890b32d3e8191a459f1fad916a33cd0, type: 3}
|
||||
- {fileID: 102900000, guid: 669be9dd1c8e7154dbecdfef442c39e2, type: 3}
|
||||
- {fileID: 102900000, guid: 9c31729d5d8b46a47beb46455145995a, type: 3}
|
||||
- {fileID: 102900000, guid: 7ee9e12a78e117747afaedfe978dc3fc, type: 3}
|
||||
- {fileID: 102900000, guid: 5954a42be3b439246be66c26424fd92b, type: 3}
|
||||
- {fileID: 102900000, guid: 859b820019ccff3438a73ae156736945, type: 3}
|
||||
- {fileID: 102900000, guid: 429ce37d7c87ecb40b5d8639c78fdec9, type: 3}
|
||||
- {fileID: 102900000, guid: 013570a5277f64c4eaec76e5b354af94, type: 3}
|
||||
- {fileID: 102900000, guid: d3ccf388aec642741a1147715c2a50ed, type: 3}
|
||||
- {fileID: 102900000, guid: f9a67f6a2ec369248880fc9d9f94b8c9, type: 3}
|
||||
- {fileID: 102900000, guid: a00dad7e04543454da43278676265ac0, type: 3}
|
||||
- {fileID: 102900000, guid: 27c4d8a1c4c09544582c90fadaa64bc3, type: 3}
|
||||
- {fileID: 102900000, guid: f4596b5f855bea44aa0fee8938e0fee9, type: 3}
|
||||
- {fileID: 102900000, guid: 224486d31fbc0a74c94106866e7db26d, type: 3}
|
||||
- {fileID: 102900000, guid: 01ce1825331717749b1a00e7d64a615b, type: 3}
|
||||
- {fileID: 102900000, guid: 682676c22fef8304bbb32b02028d9025, type: 3}
|
||||
- {fileID: 102900000, guid: dec90a58db56d9c4fa9ae51d65c84a8c, type: 3}
|
||||
- {fileID: 102900000, guid: e90a8d2ebc255d448bf59412ce0ba9f8, type: 3}
|
||||
- {fileID: 102900000, guid: c84d07d3dd2589d44b9718520c244f2b, type: 3}
|
||||
- {fileID: 102900000, guid: c6a5495b6b283de42b3dadc448d6275d, type: 3}
|
||||
- GroupName: Map13
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 37417012417bb5a4c8c8cf71fc2463c6, type: 3}
|
||||
- {fileID: 102900000, guid: f535eea1ef8f88e4caa58db09094acda, type: 3}
|
||||
- {fileID: 102900000, guid: 1225adda112eeaf4987d2647a7043c6c, type: 3}
|
||||
- GroupName: Map14
|
||||
BuildMode: 2
|
||||
OptionBundle: 1
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: f483fa70791eb334aa60a420a2ac8b9d, type: 3}
|
||||
- {fileID: 102900000, guid: 018d7304663857b4c9070ce89e9a0c36, type: 3}
|
||||
- {fileID: 102900000, guid: a3f7641267bb2e742a3c4aca2a8f66d1, type: 3}
|
||||
- {fileID: 102900000, guid: af9a2fec1cd13884e9d3c165505e5966, type: 3}
|
||||
- {fileID: 102900000, guid: d5bedaf8ade1c974385634dfec760f06, type: 3}
|
||||
- {fileID: 102900000, guid: 7fbd183587df22f4bb22ed985e50549c, type: 3}
|
||||
- {fileID: 102900000, guid: 4678365a06509f94eba98f75774cf587, type: 3}
|
||||
- {fileID: 102900000, guid: 63c3cf7b8de60434abd2cac76303b3bb, type: 3}
|
||||
- {fileID: 102900000, guid: a5699b2b2e183a541b33ac14f764f099, type: 3}
|
||||
- {fileID: 102900000, guid: 928e3fa2c6d556c4b8eb207939db1cc6, type: 3}
|
||||
- {fileID: 102900000, guid: fff31e6c86502b643906a3e557ee1acd, type: 3}
|
||||
- {fileID: 102900000, guid: c4cffb10d0a4cc742bfadef22d1beea1, type: 3}
|
||||
- {fileID: 102900000, guid: 5ce76429e49edca4eaad0132842f475b, type: 3}
|
||||
- {fileID: 102900000, guid: eb6515be31a17154a86ebb84cd60eb28, type: 3}
|
||||
- {fileID: 102900000, guid: d070ac1bb86576d41853befbe4b2fcc4, type: 3}
|
||||
- {fileID: 102900000, guid: 7f7d676ece4f15c4ea3f923027f61739, type: 3}
|
||||
- GroupName: AssetsPackBG_Map1
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: e583ba16f255e9948a42455416c3e85b, type: 3}
|
||||
- {fileID: 102900000, guid: f5d1553a675ec2547bde1239dc6ea33d, type: 3}
|
||||
- {fileID: 102900000, guid: 88889b885a0ba6f4daa1f4b43f84dce5, type: 3}
|
||||
- {fileID: 102900000, guid: f2f2a7f1b44bfa94a9b64d16159ec5a4, type: 3}
|
||||
- {fileID: 102900000, guid: c744c05e14604d640a754a8a66c153de, type: 3}
|
||||
- {fileID: 102900000, guid: 44d0674a8ceffe942bf6437c9d05ce5b, type: 3}
|
||||
- {fileID: 102900000, guid: b851b023c6920ad46a2885b4e74c0d81, type: 3}
|
||||
- {fileID: 102900000, guid: 2c3784194f6f2cd40ac1b394fdbe3968, type: 3}
|
||||
- {fileID: 102900000, guid: 56694f2b45623724d8d57137e34b1ace, type: 3}
|
||||
- {fileID: 102900000, guid: 0e9aa6ba96446be4990a1e8ff8a2f52a, type: 3}
|
||||
- {fileID: 102900000, guid: f135001c40caf84498c166cf5b3cb858, type: 3}
|
||||
- {fileID: 102900000, guid: f187646c8e0e14d46aa379f20c3159bf, type: 3}
|
||||
- {fileID: 102900000, guid: 9278a313aa957054c8f2f4e1fa711c50, type: 3}
|
||||
- {fileID: 102900000, guid: 1094a233e82b4434c98485c262b7b091, type: 3}
|
||||
- {fileID: 102900000, guid: 30e53a537b0a22745b9c09cbf1e91505, type: 3}
|
||||
- {fileID: 102900000, guid: cd87fefcf3a73654aab04b9a028ed124, type: 3}
|
||||
- {fileID: 102900000, guid: 34395a1392cb68b40b8d2948b3fa617e, type: 3}
|
||||
- {fileID: 102900000, guid: 4262502f7074eca4389af1bb24f5ac4c, type: 3}
|
||||
- {fileID: 102900000, guid: 99b31c42da8ef9445a7361353f9de95c, type: 3}
|
||||
- {fileID: 102900000, guid: db226bc77a8822746a7a45249738a54e, type: 3}
|
||||
- {fileID: 102900000, guid: 155f88469f96858409487e2e6d881a27, type: 3}
|
||||
- {fileID: 102900000, guid: 85c716ebc42fe9f4b95379b84c48dd7d, type: 3}
|
||||
- {fileID: 102900000, guid: ec26d0e27e12a6d40a9f266a3d697083, type: 3}
|
||||
- {fileID: 102900000, guid: 77c488349981cd24ea22a2b2bdf5137d, type: 3}
|
||||
- {fileID: 102900000, guid: b9f0d907a9bd9b64c885f1df118e07be, type: 3}
|
||||
- {fileID: 102900000, guid: ce922627fd8ebbb4d9dfc731cb1f16a5, type: 3}
|
||||
- {fileID: 102900000, guid: 1ef1d3c9fe1e4d64ebfdf1820fc8c224, type: 3}
|
||||
- {fileID: 102900000, guid: a930e2bf7b739b84e83bf0aeb65ff0ba, type: 3}
|
||||
- {fileID: 102900000, guid: 68071b054cb0f094599db5d495819b06, type: 3}
|
||||
- {fileID: 102900000, guid: 51f88c5e2ae31c84b948986ad826fe2e, type: 3}
|
||||
- {fileID: 102900000, guid: 00f83725983d22b4bba0bd908acd0486, type: 3}
|
||||
- GroupName: AssetsPackBG_MapMap1
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 94efe407cf89280449b5f4ec9d05af76, type: 3}
|
||||
- GroupName: AssetsPackBG_MapModel1
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: cd78574e5fafd324fad58371b5d537ca, type: 3}
|
||||
- {fileID: 102900000, guid: 09851837b01640c4a8c47bcbe975f7ed, type: 3}
|
||||
- {fileID: 102900000, guid: 9d692bd6586e79b408ada7deb4a57938, type: 3}
|
||||
- {fileID: 102900000, guid: 408aa1a2a18347c4080266d05336fc38, type: 3}
|
||||
- {fileID: 102900000, guid: 8ea41d95c0101634eb9bd6779caf915c, type: 3}
|
||||
- {fileID: 102900000, guid: 1906593751b385348aec67594cb5acb4, type: 3}
|
||||
- {fileID: 102900000, guid: aa2775afcb9cef74a9cba790bcb087e1, type: 3}
|
||||
- {fileID: 102900000, guid: f921a3774abdcb54cba7c9b538612624, type: 3}
|
||||
- {fileID: 102900000, guid: 34a67da32e808934a9a3ea62d13b5094, type: 3}
|
||||
- {fileID: 102900000, guid: 212d16ad0fd35134e8e3e2a1c5d88ac6, type: 3}
|
||||
- {fileID: 102900000, guid: d2709e6c1501cbe49ae9f36a1e80ff5a, type: 3}
|
||||
- {fileID: 102900000, guid: f6e7d9fffe3c9ff47a7a857866cbddb3, type: 3}
|
||||
- {fileID: 102900000, guid: 0fd67cfd19f2fde4f833152ef655f86a, type: 3}
|
||||
- {fileID: 102900000, guid: b329b4ae18b98c4488795303c493f5b2, type: 3}
|
||||
- {fileID: 102900000, guid: fc16318f52c410843a42c89bccfee547, type: 3}
|
||||
- {fileID: 102900000, guid: a9b2da2cf5e77b84dae5c60c370f7390, type: 3}
|
||||
- {fileID: 102900000, guid: ce2b7fe614c15fc42842d6a55ab6aa61, type: 3}
|
||||
- {fileID: 102900000, guid: 336e1b58c59343649a9d7eb275e05381, type: 3}
|
||||
- {fileID: 102900000, guid: bbae100eea80fa74ca76d0e005aa7ddf, type: 3}
|
||||
- {fileID: 102900000, guid: 59b0eacfa5394a240be024df56532ccf, type: 3}
|
||||
- {fileID: 102900000, guid: de6d8bd409ecd084dbb80811b528592e, type: 3}
|
||||
- {fileID: 102900000, guid: 8fca342dd88bcc94b9012c7dc347e641, type: 3}
|
||||
- {fileID: 102900000, guid: b0d55f8f16fbdad4f950426890ed8f23, type: 3}
|
||||
- {fileID: 102900000, guid: 53c37594dd2993a4cb5710d6d70e1c06, type: 3}
|
||||
- {fileID: 102900000, guid: 964193ec42782584598c549422f02e8f, type: 3}
|
||||
- {fileID: 102900000, guid: 8815a92de9a8fd44284f1049c876131a, type: 3}
|
||||
- {fileID: 102900000, guid: a8305c89470e9734baa362d3df719cad, type: 3}
|
||||
- {fileID: 102900000, guid: 894d691c6072fad4f9272c4622d1f127, type: 3}
|
||||
- {fileID: 102900000, guid: 3c94615109016f5438a2f7ed10dc317b, type: 3}
|
||||
- {fileID: 102900000, guid: 279314438c725f24fa2d9a1e791a60ff, type: 3}
|
||||
- {fileID: 102900000, guid: ec0cb453ccee5764391a5b219ae7d4cb, type: 3}
|
||||
- {fileID: 102900000, guid: 895f6c033b4c1ea4ebf1e2a6fee9712e, type: 3}
|
||||
- {fileID: 102900000, guid: e95bedd1643ef0a4db7817a7dd544a88, type: 3}
|
||||
- {fileID: 102900000, guid: eaae18dbb20c43d4c97aa2df725043ec, type: 3}
|
||||
- {fileID: 102900000, guid: ae3ff09fcd0c50f4e84c0a3d036508a9, type: 3}
|
||||
- {fileID: 102900000, guid: 137b947db4ceb454ab6e6f70a4a588a9, type: 3}
|
||||
- {fileID: 102900000, guid: cd86f3640bfa4ee40b136e0391fd33fe, type: 3}
|
||||
- {fileID: 102900000, guid: c5b92a7f90252524b94823af8f8168d6, type: 3}
|
||||
- {fileID: 102900000, guid: 92a3603ec4a9e66438cc9c4fffe110c4, type: 3}
|
||||
- {fileID: 102900000, guid: 4c9d9a2d3edee72449a3424784aa8a2b, type: 3}
|
||||
- {fileID: 102900000, guid: 63e5dd61820bd6f4baf53e509d290b58, type: 3}
|
||||
- {fileID: 102900000, guid: 410d145367435ff4992bf389aac48afb, type: 3}
|
||||
- {fileID: 102900000, guid: 40b9dedf69883b645acf9c8f4dc336f9, type: 3}
|
||||
- {fileID: 102900000, guid: 259d62fa3a7b5bf47ab914138b0f8eef, type: 3}
|
||||
- {fileID: 102900000, guid: 21b49591d25dc8e4ca35c08ca1710b30, type: 3}
|
||||
- {fileID: 102900000, guid: 4cf916ec1e1534341aa4e13e4e6f103e, type: 3}
|
||||
- {fileID: 102900000, guid: 79b739758445a6a4c9a5f96be2fdefc4, type: 3}
|
||||
- {fileID: 102900000, guid: ac4ac316ab924cb4d97166d1700b44b7, type: 3}
|
||||
- {fileID: 102900000, guid: a0f0816c6c71aa34e819dc6eaab8e59c, type: 3}
|
||||
- {fileID: 102900000, guid: e27103f6f158d0f4584c1e33b28b6980, type: 3}
|
||||
- {fileID: 102900000, guid: d75bf6fd359cf304a82707502374fe8f, type: 3}
|
||||
- {fileID: 102900000, guid: bea48564d7071e2469cacf203fd91b1b, type: 3}
|
||||
- {fileID: 102900000, guid: e70d402a3cb6e644caefdc1d88b783a1, type: 3}
|
||||
- {fileID: 102900000, guid: e62f4843414f86a488146d6915c65876, type: 3}
|
||||
- {fileID: 102900000, guid: 799ace8883e3ee94882e5008640c05b3, type: 3}
|
||||
- {fileID: 102900000, guid: f1bc8c58f7855604089e4f3789f2571f, type: 3}
|
||||
- {fileID: 102900000, guid: c7dd39399af6e5b4b8f48c04de2983f0, type: 3}
|
||||
- {fileID: 102900000, guid: 9dd0534653ed2b14ca6ee5fb36ec9d44, type: 3}
|
||||
- {fileID: 102900000, guid: 00da62bc8ccf1dc419a33775312a67ec, type: 3}
|
||||
- {fileID: 102900000, guid: 9966632422e0f244aa3b0836d0f96464, type: 3}
|
||||
- {fileID: 102900000, guid: 67b83849eb501404d9ae29947bbfe4c5, type: 3}
|
||||
- {fileID: 102900000, guid: 9a9cf82534d598246922719c1156e4fe, type: 3}
|
||||
- {fileID: 102900000, guid: 5235130dcb9977146a0f05b633d3951b, type: 3}
|
||||
- {fileID: 102900000, guid: 2b1e23520a379df4b971d4ecd8febdd7, type: 3}
|
||||
- {fileID: 102900000, guid: bef7ccf976a42d840b82e97c2a4ac413, type: 3}
|
||||
- {fileID: 102900000, guid: dd3609f5f4e18c849b142ca1405171c1, type: 3}
|
||||
- {fileID: 102900000, guid: 100d6fd5a1312ca449757d66da663f55, type: 3}
|
||||
- {fileID: 102900000, guid: f4121a62e6afbe74eba513fe7ac0b371, type: 3}
|
||||
- {fileID: 102900000, guid: ccf0cba2298c734488c04dfd6e7f0f2c, type: 3}
|
||||
- {fileID: 102900000, guid: 9c1eb3afcb919bd4dbae979346dc8b8b, type: 3}
|
||||
- {fileID: 102900000, guid: 3c521938990185e44a3b4cd790fecf01, type: 3}
|
||||
- {fileID: 102900000, guid: 99ea9909b45341b47b9a53c8a5c0e87c, type: 3}
|
||||
- {fileID: 102900000, guid: 95688a84d22f4ad45a1589db89ed5297, type: 3}
|
||||
- GroupName: AudioBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 931ab587fc1e9274aac6db975eb8ea67, type: 3}
|
||||
- GroupName: ConfigBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: da6575161ca6d7b43a626c1af408ec0d, type: 3}
|
||||
- {fileID: 102900000, guid: a0bbf6eb1eb96f547b9aa180f9096b6d, type: 3}
|
||||
- GroupName: EffectBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: abc4bf4033063c740856ad1bc336640d, type: 3}
|
||||
- {fileID: 102900000, guid: e313c5852cfb1b64a9b3fe9838c75282, type: 3}
|
||||
- {fileID: 102900000, guid: bfe6823a95883644984293c40c7bcc50, type: 3}
|
||||
- GroupName: FontBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 9ba0b60293b080c4fa2c80fa8ace8556, type: 3}
|
||||
- GroupName: ImageBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 9d738c16c10a1db46a0fded955e79f00, type: 3}
|
||||
- GroupName: MaterialsBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 2f68a73ecd4469441801726fc9a059ea, type: 3}
|
||||
- GroupName: MiniMapBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 70b1ee3a69ff8ad448e39b1834657d20, type: 3}
|
||||
- GroupName: OtherPrefabBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: be0f6fbcae23e6443a3d406bfc467155, type: 3}
|
||||
- {fileID: 102900000, guid: aeb21bda8e1d06c4ea681795d6228637, type: 3}
|
||||
- {fileID: 102900000, guid: 86f22fddf57c0324097a29126be99e07, type: 3}
|
||||
- {fileID: 102900000, guid: 19694b7044542de4e8cff47545441ab1, type: 3}
|
||||
- GroupName: PetModelBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 1cd2cdd18f300db4b813d90ec6e1463c, type: 3}
|
||||
- GroupName: PlayerAnimBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 0a3e4a800a93f8744b82ed7380b5a0c1, type: 3}
|
||||
- {fileID: 102900000, guid: e046c95ecf49e1345944177a12133ecc, type: 3}
|
||||
- {fileID: 102900000, guid: 3a827ba7ac496084794c03c11e8a35e9, type: 3}
|
||||
- {fileID: 102900000, guid: ee75ffa33b3400542ba18c2ea415de90, type: 3}
|
||||
- {fileID: 102900000, guid: ea3c4a554465e1149ba60b447b0be19b, type: 3}
|
||||
- {fileID: 102900000, guid: f4e435785f1178a4aaee1b8ba4fff6ba, type: 3}
|
||||
- {fileID: 102900000, guid: b5272302cca82a441b9473b02af5ac6e, type: 3}
|
||||
- {fileID: 102900000, guid: ace9b5cbf3f94b04da37a144dc382cc3, type: 3}
|
||||
- {fileID: 102900000, guid: 4c613f52922845544abae8fbe53b4032, type: 3}
|
||||
- {fileID: 102900000, guid: 6bcd1d1b825cc5043ab600619472e17d, type: 3}
|
||||
- {fileID: 102900000, guid: a29947263f4f46346b34a7e49735cadf, type: 3}
|
||||
- {fileID: 102900000, guid: 35764a153f2e3d94288974de3b246071, type: 3}
|
||||
- GroupName: PlayerMatBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: afcb2d322b13ee04b847f6e656f2dc30, type: 3}
|
||||
- {fileID: 102900000, guid: cf721a4d7316e5847bdca4100beed3b6, type: 3}
|
||||
- {fileID: 102900000, guid: e4f0dcbaf60ed0542abefbc4590eb8ba, type: 3}
|
||||
- {fileID: 102900000, guid: 3dae66a1978dbec4ea81b158e1481f09, type: 3}
|
||||
- {fileID: 102900000, guid: 003c4e5993ebfdd4cb906701239f3172, type: 3}
|
||||
- {fileID: 102900000, guid: e036bebe83ebccd4f98adc8793418f4d, type: 3}
|
||||
- {fileID: 102900000, guid: fd3de8ab46698d041b3c52236f097212, type: 3}
|
||||
- {fileID: 102900000, guid: 9778578526496bf468f9e9780441bcaa, type: 3}
|
||||
- {fileID: 102900000, guid: 9acdc4088b38c45478d14caa4c187da8, type: 3}
|
||||
- {fileID: 102900000, guid: 82d4250787a5f1546b1a9054e8f348c2, type: 3}
|
||||
- {fileID: 102900000, guid: 321b1cc8ed4941d4fb582349e63990b8, type: 3}
|
||||
- {fileID: 102900000, guid: b3136c5e0e9df284fa2d7c9fabb31346, type: 3}
|
||||
- GroupName: PlayerNewBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: a9a39c1246c580641985b97e516e2909, type: 3}
|
||||
- GroupName: PlayerPrefabBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 3ed08851ce715184fa7c10adff654716, type: 3}
|
||||
- {fileID: 102900000, guid: dd735f7ab607be248abb860b6d6a3137, type: 3}
|
||||
- {fileID: 102900000, guid: 42eca25dce7cf6244b7c4d944568ec6b, type: 3}
|
||||
- {fileID: 102900000, guid: e866a33c7998cf74b82a1bebb1ba9b2d, type: 3}
|
||||
- {fileID: 102900000, guid: 67e0a2c2109cf464a9bb937624a95ea8, type: 3}
|
||||
- {fileID: 102900000, guid: 4ab8f9d9ee7827941b76745b8ddefedd, type: 3}
|
||||
- {fileID: 102900000, guid: f852635273fb0e84c939746168971080, type: 3}
|
||||
- {fileID: 102900000, guid: 68f8299c5714e384e8614ad9c0658b49, type: 3}
|
||||
- {fileID: 102900000, guid: 84cf19e3a62d87141b7e9b68c906a269, type: 3}
|
||||
- {fileID: 102900000, guid: 63fcf599cdc2cba45a2bb3d499cd9505, type: 3}
|
||||
- {fileID: 102900000, guid: 28a34f3a8b205b54cbdde731f27d15a4, type: 3}
|
||||
- {fileID: 102900000, guid: 3cb376a898b1f3449a4a1e7f8af76adb, type: 3}
|
||||
- GroupName: PlayerTextureBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: d8b9e2fb2cee8884eb0bb3026bb559d8, type: 3}
|
||||
- {fileID: 102900000, guid: 75a64fa9a3435a9488512d178c1c17ab, type: 3}
|
||||
- {fileID: 102900000, guid: a6d054d8edd0af247893cd6f16e8e3a9, type: 3}
|
||||
- {fileID: 102900000, guid: 3775b3d64f4d81249b0276003326fe38, type: 3}
|
||||
- {fileID: 102900000, guid: 370974f13558386459953b96d51c5a7b, type: 3}
|
||||
- {fileID: 102900000, guid: c9f7efd4bc2006243bdf08e56264c8d0, type: 3}
|
||||
- {fileID: 102900000, guid: cb3b633c113d4044b9dd8ff05a00c3b8, type: 3}
|
||||
- {fileID: 102900000, guid: 8cc157bf691b78544b558b990dd86841, type: 3}
|
||||
- {fileID: 102900000, guid: bbccc564000f5964088335202fbb4b89, type: 3}
|
||||
- {fileID: 102900000, guid: aa0b0315bafa3434ab9b67c471637f49, type: 3}
|
||||
- {fileID: 102900000, guid: e8af05e5bba53ef47ab29697fa0fc952, type: 3}
|
||||
- {fileID: 102900000, guid: 41fce7bf109379c4fbe42d0602c76ff8, type: 3}
|
||||
- GroupName: UIPrefabsBG
|
||||
BuildMode: 2
|
||||
OptionBundle: 0
|
||||
InstallReady: 0
|
||||
FolderList:
|
||||
- {fileID: 102900000, guid: 61783e0261911504a8b25418b35cb756, type: 3}
|
||||
Groups: []
|
||||
SVC: {fileID: 0}
|
||||
DuplicateBundleBeInstallBundle: 0
|
||||
ShaderBundleBeInstallBundle: 0
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Aliyun.OSS;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@ -6,6 +7,7 @@ using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VersionFlow.Runtime;
|
||||
using static UnityEditor.ObjectChangeEventStream;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
@ -21,7 +23,6 @@ namespace VersionFlow.Editors
|
||||
static private Dictionary<string, BundleExtraInfo> bundleExtraInfo;
|
||||
static bool FoldOutGroup;
|
||||
|
||||
|
||||
private static void ResetState()
|
||||
{
|
||||
RemoteVersion = null;
|
||||
@ -37,6 +38,10 @@ namespace VersionFlow.Editors
|
||||
{
|
||||
base.OnInspectorGUI();
|
||||
|
||||
DrawUploader();
|
||||
|
||||
var builder = target as BuilderConfig;
|
||||
|
||||
EditorGUILayout.Space(20);
|
||||
BuilderConfig.ShowBuilderMarker = EditorGUILayout.Toggle("在Project窗口中显示打包标记", BuilderConfig.ShowBuilderMarker);
|
||||
if (FoldOutGroup = EditorGUILayout.BeginFoldoutHeaderGroup(FoldOutGroup, "打包配置"))
|
||||
@ -45,28 +50,23 @@ namespace VersionFlow.Editors
|
||||
EditorGUILayout.EndFoldoutHeaderGroup();
|
||||
}
|
||||
|
||||
if (GUILayout.Button("获取CDN版本号"))
|
||||
if (GUILayout.Button("获取远端版本号"))
|
||||
{
|
||||
ResetState();
|
||||
var (remoteVersion, updateVersion) = FetchRemoteVersion((BuilderConfig)target);
|
||||
var (remoteVersion, updateVersion) = FetchRemoteVersion(builder);
|
||||
RemoteVersion = remoteVersion;
|
||||
UpdateVersion = updateVersion;
|
||||
}
|
||||
|
||||
if (RemoteVersion != null)
|
||||
{
|
||||
EditorGUILayout.LabelField($"CDN版本号:{RemoteVersion.Version}");
|
||||
if (GUILayout.Button("将CDN版本号复制到剪切板"))
|
||||
EditorGUILayout.LabelField($"远端版本号:{RemoteVersion.Version}");
|
||||
if (GUILayout.Button("将远端版本号复制到剪切板"))
|
||||
{
|
||||
EditorGUIUtility.systemCopyBuffer = RemoteVersion.Version;
|
||||
}
|
||||
if (GUILayout.Button("将CDN版本号复制到剪切板(带热更目录区分)"))
|
||||
{
|
||||
EditorGUIUtility.systemCopyBuffer = $"{((BuilderConfig)target).UploadPath}:{RemoteVersion.Version}";
|
||||
}
|
||||
UpdateVersion = EditorGUILayout.TextField($"上传版本号", UpdateVersion);
|
||||
|
||||
|
||||
if (CompareResult == null && GUILayout.Button("Build"))
|
||||
{
|
||||
var bc = (BuilderConfig)target;
|
||||
@ -80,40 +80,40 @@ namespace VersionFlow.Editors
|
||||
DrawCompareResult(CompareResult, bundleExtraInfo);
|
||||
if (GUILayout.Button("UPLOAD"))
|
||||
{
|
||||
var bc = (BuilderConfig)target;
|
||||
var client = CDNUploader.Init(
|
||||
bc.BucketName,
|
||||
$"{bc.UploadPath}/Bundles/{VersionFlowX.PlatformFoldName}",
|
||||
bc.accessKeyId,
|
||||
bc.accessKeySecret,
|
||||
bc.endPoint,
|
||||
false
|
||||
);
|
||||
StartUpLoad(CompareResult, Report, outputPath, client);
|
||||
|
||||
ResetState();
|
||||
}
|
||||
if (GUILayout.Button("Pending UPLOAD"))
|
||||
{
|
||||
var bc = (BuilderConfig)target;
|
||||
var client = CDNUploader.Init(
|
||||
bc.BucketName,
|
||||
$"{bc.UploadPath}/Bundles/{VersionFlowX.PlatformFoldName}",
|
||||
bc.accessKeyId,
|
||||
bc.accessKeySecret,
|
||||
bc.endPoint,
|
||||
true
|
||||
);
|
||||
StartUpLoad(CompareResult, Report, outputPath, client);
|
||||
StartUpLoad(CompareResult, Report, outputPath, builder.GetPatchLoader());
|
||||
|
||||
ResetState();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawUploader()
|
||||
{
|
||||
var builder = target as BuilderConfig;
|
||||
|
||||
var uploaderTypes = builder.GetAllPatcherType();
|
||||
|
||||
var options = uploaderTypes.Select(t => $"{t.Namespace}.{t.Name}").ToList();
|
||||
var selectIndex = options.IndexOf(builder.uploaderClassName);
|
||||
selectIndex = EditorGUILayout.Popup("选择上传器", selectIndex, options.ToArray());
|
||||
if (selectIndex != -1)
|
||||
{
|
||||
var selectClassName = options[selectIndex];
|
||||
builder.uploaderClassName = selectClassName;
|
||||
}
|
||||
|
||||
var patchLoader = builder.GetPatchLoader();
|
||||
Editor.CreateEditor(patchLoader).OnInspectorGUI();
|
||||
string json = patchLoader.GetCfgJson();
|
||||
builder.uploaderCfgJson = json;
|
||||
if (GUI.changed)
|
||||
{
|
||||
EditorUtility.SetDirty(target);
|
||||
patchLoader.CfgChanged(builder, builder.uploaderCfgJson);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void DrawGroupItems()
|
||||
{
|
||||
Undo.RecordObject(target, target.name);
|
||||
@ -298,22 +298,15 @@ namespace VersionFlow.Editors
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
public static (BundleManifest remoteVersion, string updateVersion) FetchRemoteVersion(BuilderConfig builder, string ossPath)
|
||||
public static (BundleManifest remoteVersion, string updateVersion) FetchRemoteVersion(BuilderConfig builder)
|
||||
{
|
||||
BundleManifest remoteVersion = null;
|
||||
string updateVersion = null;
|
||||
|
||||
var bc = builder;
|
||||
var client = CDNUploader.Init(
|
||||
bc.BucketName,
|
||||
ossPath,
|
||||
bc.accessKeyId,
|
||||
bc.accessKeySecret,
|
||||
bc.endPoint,
|
||||
false
|
||||
);
|
||||
var patchLoader = bc.GetPatchLoader();
|
||||
|
||||
var remoteManifestData = client.DownloadFile("PatchManifest.json");
|
||||
var remoteManifestData = patchLoader.DownloadFile($"Bundles/{VersionFlowX.PlatformFoldName}/PatchManifest.json");
|
||||
if (remoteManifestData == null)
|
||||
{
|
||||
remoteVersion = new BundleManifest();
|
||||
@ -334,13 +327,7 @@ namespace VersionFlow.Editors
|
||||
return (remoteVersion, updateVersion);
|
||||
}
|
||||
|
||||
public static (BundleManifest remoteVersion, string updateVersion) FetchRemoteVersion(BuilderConfig builder)
|
||||
{
|
||||
var ossPath = $"{builder.UploadPath}/Bundles/{VersionFlowX.PlatformFoldName}";
|
||||
return FetchRemoteVersion(builder, ossPath);
|
||||
}
|
||||
|
||||
public static void StartUpLoad(List<BundleCompare> compareResult, BundleManifest localManifest, string outputPath, CDNUploader client)
|
||||
public static void StartUpLoad(List<BundleCompare> compareResult, BundleManifest localManifest, string outputPath, PatchUploader uploader)
|
||||
{
|
||||
List<Bundle> bundlesToUpload = new List<Bundle>();
|
||||
List<Bundle> bundlesToDelete = new List<Bundle>();
|
||||
@ -358,19 +345,17 @@ namespace VersionFlow.Editors
|
||||
}
|
||||
}
|
||||
|
||||
string tips = string.Empty;
|
||||
if (client.PendingMode) tips = "****悬垂模式*****\n";
|
||||
else tips = "****!!!谨慎:直传模式!!!*****\n";
|
||||
var tips = "****!!!确认上传信息!!!*****\n";
|
||||
|
||||
if (bundlesToUpload.Count == 0 && bundlesToDelete.Count == 0)
|
||||
{
|
||||
bool confirm = EditorUtility.DisplayDialog("FBI WARNING", $"CDN上没有需要更新的Bundle,将只更新版本号\n{tips}", "ok", "cancel");
|
||||
if (confirm)
|
||||
{
|
||||
var newVersionFile = new MemoryStream(Encoding.ASCII.GetBytes(localManifest.ToJson()));
|
||||
client.UploadFile("PatchManifest.json", newVersionFile);
|
||||
|
||||
client.RefreshBundleManifestURL();
|
||||
var newVersionFile = new MemoryStream(Encoding.ASCII.GetBytes(localManifest.ToJson()));
|
||||
uploader.UploadFile($"Bundles/{VersionFlowX.PlatformFoldName}/PatchManifest.json", newVersionFile);
|
||||
var cdnPerformer = uploader as ICDNPerformer;
|
||||
cdnPerformer?.CDNRefresh(new string[] { "PatchManifest.json" });
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -393,18 +378,26 @@ namespace VersionFlow.Editors
|
||||
int step = 0;
|
||||
foreach (var bundle in bundlesToUpload)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("上传", $"{bundle.BundleName}", step * 1f / max);
|
||||
|
||||
var bundleFilePath = $"{outputPath}/{bundle.BundleName}";
|
||||
client.UploadFile(bundleFilePath, bundle.Hash);
|
||||
EditorUtility.DisplayProgressBar("上传", $"{bundle.BundleName}", step * 1f / max);
|
||||
var bundleFilePath = $"{outputPath}/{bundle.BundleName}";
|
||||
string remoteFilePath = null;
|
||||
|
||||
var fileSt = new MemoryStream(File.ReadAllBytes(bundleFilePath));
|
||||
|
||||
var ext = Path.GetExtension(bundleFilePath);
|
||||
var fileName = Path.GetFileNameWithoutExtension(bundleFilePath);
|
||||
|
||||
remoteFilePath = $"Bundles/{VersionFlowX.PlatformFoldName}/{fileName}.{bundle.Hash}{ext}";
|
||||
|
||||
uploader.UploadFile(remoteFilePath, fileSt);
|
||||
|
||||
step++;
|
||||
}
|
||||
|
||||
EditorUtility.DisplayProgressBar("上传", $"上传PatchManifest.json", step * 1f / max);
|
||||
var st = new MemoryStream(Encoding.ASCII.GetBytes(localManifest.ToJson()));
|
||||
client.UploadFile("PatchManifest.json", st);
|
||||
client.RefreshBundleManifestURL();
|
||||
uploader.UploadFile($"Bundles/{VersionFlowX.PlatformFoldName}/PatchManifest.json", st);
|
||||
(uploader as ICDNPerformer)?.CDNRefresh(new string[] { $"Bundles/{VersionFlowX.PlatformFoldName}/PatchManifest.json" });
|
||||
|
||||
if (bundlesToDelete.Count > 0)
|
||||
{
|
||||
@ -412,8 +405,12 @@ namespace VersionFlow.Editors
|
||||
step = 0;
|
||||
foreach (var bundle in bundlesToDelete)
|
||||
{
|
||||
EditorUtility.DisplayProgressBar("移除冗余bundle", $"{bundle.BundleName}", step * 1f / max);
|
||||
client.DeleteFile(bundle.BundleName);
|
||||
EditorUtility.DisplayProgressBar("移除冗余bundle", $"{bundle.BundleName}", step * 1f / max);
|
||||
|
||||
var temp = Path.GetFileNameWithoutExtension(bundle.BundleName);
|
||||
var ext = Path.GetExtension(bundle.BundleName);
|
||||
string bundlePath = $"Bundles/{VersionFlowX.PlatformFoldName}/{temp}.{bundle.Hash}{ext}";
|
||||
uploader.DeleteFile(bundlePath);
|
||||
step++;
|
||||
}
|
||||
}
|
||||
@ -479,14 +476,7 @@ namespace VersionFlow.Editors
|
||||
installManifest.Version = remoteInfo.remoteVersion.Version;
|
||||
int i = 0;
|
||||
|
||||
var client = CDNUploader.Init(
|
||||
builder.BucketName,
|
||||
$"{builder.UploadPath}/Bundles/{VersionFlowX.PlatformFoldName}",
|
||||
builder.accessKeyId,
|
||||
builder.accessKeySecret,
|
||||
builder.endPoint,
|
||||
false
|
||||
);
|
||||
var patchLoader = builder.GetPatchLoader();
|
||||
|
||||
foreach (var bundle in installBundles)
|
||||
{
|
||||
@ -496,7 +486,7 @@ namespace VersionFlow.Editors
|
||||
var fileName = Path.GetFileNameWithoutExtension(bundle.BundleName);
|
||||
var fileNameInOSS = $"{fileName}.{bundle.Hash}{ext}";
|
||||
|
||||
var bundleData = client.DownloadFile(fileNameInOSS);
|
||||
var bundleData = patchLoader.DownloadFile($"Bundles/{VersionFlowX.PlatformFoldName}/{fileNameInOSS}");
|
||||
|
||||
File.WriteAllBytes($"{Application.streamingAssetsPath}/Bundles/{bundle.BundleName}", bundleData);
|
||||
installManifest.UpdateBundleData(bundle);
|
||||
@ -511,6 +501,4 @@ namespace VersionFlow.Editors
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ using System.Threading.Tasks;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using VersionFlow.Runtime;
|
||||
using static VersionFlow.Editors.ICDNPerformer;
|
||||
|
||||
namespace VersionFlow.Editors.Assets.Scripts.VersionFlow.Editor
|
||||
{
|
||||
@ -46,22 +47,22 @@ namespace VersionFlow.Editors.Assets.Scripts.VersionFlow.Editor
|
||||
|
||||
if (cdnFetchtask == null || cdnFetchtask.IsCompleted)
|
||||
{
|
||||
var builder = AssetDatabase.LoadAssetAtPath<BuilderConfig>("Assets/Scripts/VersionFlow/Builder/Builder.asset");
|
||||
var cdnClient = builder.GetCDNClient();
|
||||
var builder = PatchUploaderUtility.FindBuilderInProject();
|
||||
var cndPerformer = builder.GetPatchLoader() as ICDNPerformer;
|
||||
|
||||
cdnFetchtask = cdnClient.DescribeRefreshTasksAsync(new AlibabaCloud.SDK.Cdn20180510.Models.DescribeRefreshTasksRequest { PageSize = 100 });
|
||||
cdnFetchtask = cndPerformer?.GetRefreshingTaskAsync();
|
||||
}
|
||||
}
|
||||
else fetchCDN_TaskCooldown -= Time.deltaTime;
|
||||
|
||||
if (cdnFetchtask != null && cdnFetchtask.IsCompleted)
|
||||
{
|
||||
cdnRefreshTasks = cdnFetchtask.Result.Body.Tasks.CDNTask;
|
||||
cdnRefreshTasks = cdnFetchtask.Result;
|
||||
}
|
||||
}
|
||||
|
||||
private Task<DescribeRefreshTasksResponse> cdnFetchtask;
|
||||
private List<DescribeRefreshTasksResponseBody.DescribeRefreshTasksResponseBodyTasks.DescribeRefreshTasksResponseBodyTasksCDNTask> cdnRefreshTasks;
|
||||
private Task<List<TaskReport>> cdnFetchtask;
|
||||
private List<TaskReport> cdnRefreshTasks;
|
||||
private Vector2 m_pos;
|
||||
|
||||
private void DrawCDNTask()
|
||||
@ -73,18 +74,24 @@ namespace VersionFlow.Editors.Assets.Scripts.VersionFlow.Editor
|
||||
{
|
||||
//if (task.Process == "100%") continue;
|
||||
var temp = GUI.color;
|
||||
EditorGUILayout.LabelField(task.ObjectPath);
|
||||
EditorGUILayout.LabelField(task.Describ);
|
||||
using (new EditorGUILayout.HorizontalScope())
|
||||
{
|
||||
var progress = float.Parse(task.Process.Replace("%", string.Empty));
|
||||
var progress = task.Progress;
|
||||
EditorGUILayout.LabelField(string.Empty);
|
||||
var rect = GUILayoutUtility.GetLastRect();
|
||||
EditorGUI.DrawRect(rect, Color.black);
|
||||
var progressRect = new Rect(rect);
|
||||
progressRect.width *= progress / 100f;
|
||||
EditorGUI.DrawRect(progressRect, task.Process == "100%" ? Color.green : new Color(0.8f, 0.66f, 1.5f / 16f, 1));
|
||||
progressRect.width *= progress;
|
||||
EditorGUI.DrawRect(progressRect, task.Status switch
|
||||
{
|
||||
ICDNPerformer.TaskStatus.Complete => Color.green,
|
||||
ICDNPerformer.TaskStatus.Running => new Color(0.8f, 0.66f, 1.5f / 16f, 1),
|
||||
ICDNPerformer.TaskStatus.Error => Color.red,
|
||||
_ => Color.green,
|
||||
});
|
||||
GUI.color = Color.cyan;
|
||||
EditorGUI.LabelField(rect, $"{task.Process}", new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleLeft });
|
||||
EditorGUI.LabelField(rect, $"{progress * 100:0.00}%", new GUIStyle(EditorStyles.label) { alignment = TextAnchor.MiddleLeft });
|
||||
}
|
||||
GUI.color = temp;
|
||||
}
|
||||
|
||||
@ -1,236 +0,0 @@
|
||||
using Aliyun.OSS;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEditor;
|
||||
using VersionFlow.Runtime;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
public class CDNUploader
|
||||
{
|
||||
private OssClient m_ossclient;
|
||||
|
||||
private string m_bucketName;
|
||||
public bool PendingMode { get; private set; }
|
||||
|
||||
public string BucketName => m_bucketName;
|
||||
public string UploadRoot { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 初始化上传器
|
||||
/// </summary>
|
||||
/// <param name="bucketName"></param>
|
||||
/// <param name="uploadPath"></param>
|
||||
/// <param name="accessKeyId"></param>
|
||||
/// <param name="accessKeySecret"></param>
|
||||
/// <param name="endPoint"></param>
|
||||
/// <param name="pendingMode"></param>
|
||||
/// <returns></returns>
|
||||
public static CDNUploader Init(string bucketName, string uploadPath, string accessKeyId, string accessKeySecret, string endPoint, bool pendingMode)
|
||||
{
|
||||
CDNUploader client = new CDNUploader();
|
||||
|
||||
client.m_bucketName = bucketName;
|
||||
client.UploadRoot = uploadPath;
|
||||
client.PendingMode = pendingMode;
|
||||
|
||||
//accessKeyId = "LTAI5tAvUTxzcs5DCyczqow2";
|
||||
//accessKeySecret = "aycbkKvNUEhAJXtuNevBi2E5BD1OVj";
|
||||
//endPoint = "oss-cn-chengdu.aliyuncs.com";
|
||||
|
||||
client.m_ossclient = new OssClient(endPoint, accessKeyId, accessKeySecret);
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
public bool CheckFileExist(string relativePath)
|
||||
{
|
||||
relativePath = relativePath.Replace('\\', '/').TrimStart('/');
|
||||
string filePathInBucket = $"{UploadRoot}/{relativePath}";
|
||||
return m_ossclient.DoesObjectExist(m_bucketName, filePathInBucket);
|
||||
}
|
||||
|
||||
public void UploadPatches(string patchDirPath)
|
||||
{
|
||||
var allPatchFiles = Directory.EnumerateFiles(patchDirPath, "*", SearchOption.AllDirectories).ToArray();
|
||||
int step = 0;
|
||||
int maxStep = allPatchFiles.Length;
|
||||
|
||||
List<string> objToRefresh = new List<string>();
|
||||
foreach (var filePath in allPatchFiles)
|
||||
{
|
||||
var relativePath =
|
||||
filePath
|
||||
.Substring(patchDirPath.Length, filePath.Length - patchDirPath.Length)
|
||||
.Replace("\\", "/").TrimStart('/');
|
||||
string filePathInBucket = $"{UploadRoot}/{relativePath}";
|
||||
if (PendingMode) filePathInBucket = $"PendingPatch_ORG/{filePathInBucket}";
|
||||
var fileSt = new MemoryStream(File.ReadAllBytes(filePath));
|
||||
|
||||
EditorUtility.DisplayProgressBar($"上传文件", $"[{relativePath}] -> [{filePathInBucket}]", step * 1f / maxStep);
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata() { ContentEncoding = "identity" };
|
||||
m_ossclient.PutObject(m_bucketName, filePathInBucket, fileSt, metadata);
|
||||
|
||||
objToRefresh.Add(filePathInBucket);
|
||||
step++;
|
||||
}
|
||||
|
||||
if (!PendingMode)
|
||||
{
|
||||
var builder = AssetDatabase.LoadAssetAtPath<BuilderConfig>("Assets/Scripts/VersionFlow/Builder/Builder.asset");
|
||||
builder.CDNRefresh(objToRefresh);
|
||||
}
|
||||
|
||||
EditorUtility.ClearProgressBar();
|
||||
}
|
||||
public PutObjectResult UploadFile(string filePath, string appendHash)
|
||||
{
|
||||
string filePathInBucket = null;
|
||||
var fileSt = new MemoryStream(File.ReadAllBytes(filePath));
|
||||
|
||||
if (appendHash != null)
|
||||
{
|
||||
var ext = Path.GetExtension(filePath);
|
||||
var fileName = Path.GetFileNameWithoutExtension(filePath);
|
||||
|
||||
filePathInBucket = $"{UploadRoot}/{fileName}.{appendHash}{ext}";
|
||||
}
|
||||
else
|
||||
{
|
||||
var fileName = Path.GetFileName(filePath);
|
||||
filePathInBucket = $"{UploadRoot}/{fileName}";
|
||||
}
|
||||
|
||||
if (PendingMode) filePathInBucket = $"PendingPatch_ORG/{filePathInBucket}";
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata() { ContentEncoding = "identity" };
|
||||
var result = m_ossclient.PutObject(m_bucketName, filePathInBucket, fileSt, metadata);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void DeleteFile(string fileName)
|
||||
{
|
||||
var filePathInBucket = $"{UploadRoot}/{fileName}";
|
||||
|
||||
m_ossclient.DeleteObject(m_bucketName, filePathInBucket);
|
||||
|
||||
}
|
||||
|
||||
public PutObjectResult UploadFile(string fileName, Stream fileSt)
|
||||
{
|
||||
var filePathInBucket = $"{UploadRoot}/{fileName}";
|
||||
|
||||
if (PendingMode) filePathInBucket = $"PendingPatch_ORG/{filePathInBucket}";
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata() { ContentEncoding = "identity" };
|
||||
var result = m_ossclient.PutObject(m_bucketName, filePathInBucket, fileSt, metadata);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void UploadFileAsync(string fileName, Stream fileSt, Action<bool> callback)
|
||||
{
|
||||
var filePathInBucket = $"{UploadRoot}/{fileName}";
|
||||
|
||||
if (PendingMode) filePathInBucket = $"PendingPatch_ORG/{filePathInBucket}";
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata() { ContentEncoding = "identity" };
|
||||
PutObjectRequest putObjectRequest = new PutObjectRequest(m_bucketName, filePathInBucket, fileSt, metadata);
|
||||
int? taskID = Progress.Start($"上传 \"{fileName}\"", fileName, Progress.Options.None);
|
||||
putObjectRequest.StreamTransferProgress += ReportPorgress;
|
||||
|
||||
var task = Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = m_ossclient.PutObject(putObjectRequest);
|
||||
EditorApplication.delayCall += () =>
|
||||
{
|
||||
Progress.Finish(taskID.Value);
|
||||
taskID = null;
|
||||
callback?.Invoke(true);
|
||||
};
|
||||
}
|
||||
catch
|
||||
{
|
||||
EditorApplication.delayCall += () =>
|
||||
{
|
||||
if (taskID.HasValue)
|
||||
{
|
||||
Progress.Finish(taskID.Value, Progress.Status.Failed);
|
||||
}
|
||||
callback?.Invoke(false);
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
Progress.RegisterCancelCallback(taskID.Value, CancelProgress);
|
||||
|
||||
bool CancelProgress()
|
||||
{
|
||||
fileSt.Dispose();
|
||||
Progress.Finish(taskID.Value, Progress.Status.Canceled);
|
||||
taskID = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
void ReportPorgress(object sender, StreamTransferProgressArgs args)
|
||||
{
|
||||
EditorApplication.delayCall += () =>
|
||||
{
|
||||
if (taskID.HasValue)
|
||||
{
|
||||
Progress.Report(taskID.Value, args.TransferredBytes * 1f / args.TotalBytes);
|
||||
Progress.SetDescription(taskID.Value, $"{GetByteSizeString((ulong)args.TransferredBytes)}/{GetByteSizeString((ulong)args.TotalBytes)}");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static string GetByteSizeString(ulong byteCount)
|
||||
{
|
||||
if (byteCount < 1024) return $"{byteCount}B";
|
||||
|
||||
if (byteCount < 1024 * 1024) return $"{byteCount / (1024f):.00}KB";
|
||||
|
||||
else return $"{byteCount / (1024f * 1024):.00}MB";
|
||||
}
|
||||
|
||||
public byte[] DownloadFile(string file)
|
||||
{
|
||||
if (!CheckFileExist(file)) return null;
|
||||
|
||||
var fileObj = m_ossclient.GetObject(m_bucketName, $"{UploadRoot}/{file}");
|
||||
if (fileObj == null) return null;
|
||||
|
||||
byte[] buffer = new byte[fileObj.ContentLength];
|
||||
int readed = 0;
|
||||
while (readed < buffer.Length - 1)
|
||||
{
|
||||
int read = fileObj.Content.Read(buffer, readed, buffer.Length - readed);
|
||||
readed += read;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public void RefreshBundleManifestURL()
|
||||
{
|
||||
if (PendingMode) UploadRoot = $"PendingPatch_ORG/{UploadRoot}";
|
||||
|
||||
var builder = AssetDatabase.LoadAssetAtPath<BuilderConfig>("Assets/Scripts/VersionFlow/Builder/Builder.asset");
|
||||
List<string> url = new List<string>()
|
||||
{
|
||||
$"{UploadRoot}/PatchManifest.json"
|
||||
};
|
||||
if (!PendingMode) builder.CDNRefresh(url);
|
||||
}
|
||||
}
|
||||
}
|
||||
8
Assets/VersionFlow/Editor/PatchUploader.meta
Normal file
8
Assets/VersionFlow/Editor/PatchUploader.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e345830c6224d6e4ebe4248a87242865
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
37
Assets/VersionFlow/Editor/PatchUploader/ICDNPerformer.cs
Normal file
37
Assets/VersionFlow/Editor/PatchUploader/ICDNPerformer.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
/// <summary>
|
||||
/// CDN相关操作的接口
|
||||
/// </summary>
|
||||
public interface ICDNPerformer
|
||||
{
|
||||
/// <summary>
|
||||
/// 实现此接口以实现刷新功能
|
||||
/// </summary>
|
||||
/// <param name="refreshPaths"></param>
|
||||
/// <returns></returns>
|
||||
void CDNRefresh(IEnumerable<string> refreshPaths);
|
||||
/// <summary>
|
||||
/// 查询正处于刷新中的任务
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<List<TaskReport>> GetRefreshingTaskAsync();
|
||||
|
||||
public struct TaskReport
|
||||
{
|
||||
public string Describ;
|
||||
public float Progress;
|
||||
public TaskStatus Status;
|
||||
}
|
||||
|
||||
public enum TaskStatus
|
||||
{
|
||||
Running,
|
||||
Complete,
|
||||
Error,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0de13f8423a56f4eba5899c2483a5a6
|
||||
guid: f7a08e64105288d4c83ee06772246425
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
45
Assets/VersionFlow/Editor/PatchUploader/PatchUploader.cs
Normal file
45
Assets/VersionFlow/Editor/PatchUploader/PatchUploader.cs
Normal file
@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
using VersionFlow.Runtime;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
public abstract class PatchUploader : ScriptableObject
|
||||
{
|
||||
public PatchUploader() { }
|
||||
public abstract void CfgChanged(BuilderConfig builder, string cfgJson);
|
||||
public abstract void UploadFile(string remoteFilePath, MemoryStream localfileStream);
|
||||
public abstract byte[] DownloadFile(string remoteFilePath);
|
||||
public abstract void DeleteFile(string bundlePath);
|
||||
public abstract string GetCfgJson();
|
||||
}
|
||||
|
||||
public abstract class PatchUploader<CONFIG> : PatchUploader where CONFIG : struct
|
||||
{
|
||||
protected BuilderConfig m_builder;
|
||||
[SerializeField]
|
||||
protected CONFIG m_cfg;
|
||||
|
||||
public sealed override void CfgChanged(BuilderConfig builder, string cfgJson)
|
||||
{
|
||||
m_builder = builder;
|
||||
try
|
||||
{
|
||||
m_cfg = JsonUtility.FromJson<CONFIG>(cfgJson);
|
||||
OnCfgChanged();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError(ex);
|
||||
}
|
||||
}
|
||||
|
||||
public override string GetCfgJson()
|
||||
{
|
||||
return JsonUtility.ToJson(m_cfg);
|
||||
}
|
||||
|
||||
protected abstract void OnCfgChanged();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f136cc528e25ff4eaa31082e986a683
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e66a8e912d9583c4e91e9d4ea737f751
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,189 @@
|
||||
using AlibabaCloud.SDK.Cdn20180510;
|
||||
using AlibabaCloud.SDK.Cdn20180510.Models;
|
||||
using Aliyun.OSS;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using static AlibabaCloud.SDK.Cdn20180510.Models.DescribeRefreshTasksResponseBody.DescribeRefreshTasksResponseBodyTasks;
|
||||
using static VersionFlow.Editors.ICDNPerformer;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
public class Patchloader_AliOSS : PatchUploader<Patchloader_AliOSS.Config>, ICDNPerformer
|
||||
{
|
||||
private OssClient m_ossClient;
|
||||
private Client m_cdnClient;
|
||||
|
||||
protected override void OnCfgChanged()
|
||||
{
|
||||
try
|
||||
{
|
||||
m_ossClient = new OssClient(m_cfg.endPoint, m_cfg.accessKeyId, m_cfg.accessKeySecret);
|
||||
m_cdnClient = new Client(new AlibabaCloud.OpenApiClient.Models.Config { AccessKeyId = m_cfg.accessKeyId, AccessKeySecret = m_cfg.accessKeySecret });
|
||||
}
|
||||
catch
|
||||
{
|
||||
Debug.LogError("AliOSS SDK 初始化失败,请检查相关参数配置");
|
||||
}
|
||||
}
|
||||
|
||||
public override void UploadFile(string remoteFilePath, MemoryStream localfileStream)
|
||||
{
|
||||
var filePathInBucket = $"{m_cfg.UploadPath}/{remoteFilePath}";
|
||||
|
||||
ObjectMetadata metadata = new ObjectMetadata() { ContentEncoding = "identity" };
|
||||
m_ossClient.PutObject(m_cfg.BucketName, filePathInBucket, localfileStream, metadata);
|
||||
}
|
||||
|
||||
public override void DeleteFile(string bundlePath)
|
||||
{
|
||||
m_ossClient.DeleteObject(m_cfg.BucketName, bundlePath);
|
||||
}
|
||||
|
||||
void ICDNPerformer.CDNRefresh(IEnumerable<string> refreshPaths)
|
||||
{
|
||||
var client = m_cdnClient;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
var vfSetting = m_builder.vfSetting;
|
||||
|
||||
var refreshFileUrls = refreshPaths.Select(path => $"{vfSetting.RootPath}/{path}").ToList();
|
||||
var refreshDirectoryUrls = PathHelper.GetSameRoot(refreshFileUrls);
|
||||
|
||||
var response = client.DescribeRefreshQuota(new DescribeRefreshQuotaRequest());
|
||||
int dirRemian = int.Parse(response.Body.DirRemain);
|
||||
int fileUrlRemain = int.Parse(response.Body.UrlQuota);
|
||||
|
||||
Debug.Log($"目录刷新配额剩余:[{dirRemian},本次目录刷新数量:[{refreshDirectoryUrls.Count}]");
|
||||
Debug.Log($"URL刷新配额剩余:[{fileUrlRemain},本次URL刷新数量:[{refreshFileUrls.Count}]");
|
||||
|
||||
var request = new RefreshObjectCachesRequest { Force = true };
|
||||
|
||||
if (dirRemian >= refreshDirectoryUrls.Count)
|
||||
{
|
||||
Debug.Log($"以目录形式刷新");
|
||||
foreach (var path in refreshDirectoryUrls)
|
||||
{
|
||||
sb.Append($"{path}/\n");
|
||||
}
|
||||
request.ObjectPath = sb.ToString();
|
||||
request.ObjectType = "Directory";
|
||||
}
|
||||
else if (fileUrlRemain >= refreshFileUrls.Count)
|
||||
{
|
||||
Debug.Log($"以URL形式刷新");
|
||||
foreach (var path in refreshFileUrls)
|
||||
{
|
||||
sb.Append($"{path}\n");
|
||||
}
|
||||
request.ObjectPath = sb.ToString();
|
||||
request.ObjectType = "File";
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("刷新配额不足,无法刷新CDN资源");
|
||||
}
|
||||
|
||||
request.ObjectPath = request.ObjectPath.Remove(request.ObjectPath.Length - 1);
|
||||
|
||||
Debug.Log($"刷新CDN资源:\n{request.ObjectPath}");
|
||||
var refreshResponse = client.RefreshObjectCaches(request);
|
||||
}
|
||||
|
||||
async Task<List<TaskReport>> ICDNPerformer.GetRefreshingTaskAsync()
|
||||
{
|
||||
var result = new List<TaskReport>();
|
||||
await FetchTask(result, "Refreshing", "file", 10000);
|
||||
await FetchTask(result, "Refreshing", "directory", 100);
|
||||
await FetchTask(result, "Failed", "file", 10000);
|
||||
await FetchTask(result, "Failed", "directory", 100);
|
||||
await FetchTask(result, "Complete", "file", 100);
|
||||
await FetchTask(result, "Complete", "directory", 100);
|
||||
|
||||
return result;
|
||||
|
||||
TaskReport ToReport(DescribeRefreshTasksResponseBodyTasksCDNTask alicdnTask)
|
||||
{
|
||||
var temp = alicdnTask.Process.Replace("%", string.Empty);
|
||||
var progress = int.Parse(temp) / 100f;
|
||||
|
||||
TaskReport taskReport = new TaskReport()
|
||||
{
|
||||
Describ = alicdnTask.ObjectPath,
|
||||
Progress = progress,
|
||||
Status = alicdnTask.Status switch
|
||||
{
|
||||
"Complete" => ICDNPerformer.TaskStatus.Complete,
|
||||
"Refreshing" => ICDNPerformer.TaskStatus.Running,
|
||||
"Failed" => ICDNPerformer.TaskStatus.Error,
|
||||
_ => ICDNPerformer.TaskStatus.Error
|
||||
}
|
||||
};
|
||||
|
||||
return taskReport;
|
||||
}
|
||||
|
||||
async Task FetchTask(List<TaskReport> list, string status, string objType, int maxQueryCount)
|
||||
{
|
||||
int queriedCount = 0;
|
||||
for (int page = 1; page <= 10000 && queriedCount <= maxQueryCount; page++)
|
||||
{
|
||||
var response = await m_cdnClient.DescribeRefreshTasksAsync(new DescribeRefreshTasksRequest
|
||||
{
|
||||
Status = status,
|
||||
PageSize = 100,
|
||||
PageNumber = page,
|
||||
ObjectType = objType
|
||||
});
|
||||
|
||||
var tasks = response.Body.Tasks.CDNTask;
|
||||
if (tasks.Count == 0) break;
|
||||
|
||||
var old = list.Count;
|
||||
list.AddRange(tasks.Select(t => ToReport(t)));
|
||||
var newAdd = list.Count - old;
|
||||
queriedCount += newAdd;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override byte[] DownloadFile(string remoteFilePath)
|
||||
{
|
||||
if (!CheckFileExist(remoteFilePath)) return null;
|
||||
|
||||
var fileObj = m_ossClient.GetObject(m_cfg.BucketName, $"{m_cfg.UploadPath}/{remoteFilePath}");
|
||||
if (fileObj == null) return null;
|
||||
|
||||
byte[] buffer = new byte[fileObj.ContentLength];
|
||||
int readed = 0;
|
||||
while (readed < buffer.Length - 1)
|
||||
{
|
||||
int read = fileObj.Content.Read(buffer, readed, buffer.Length - readed);
|
||||
readed += read;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
bool CheckFileExist(string relativePath)
|
||||
{
|
||||
relativePath = relativePath.Replace('\\', '/').TrimStart('/');
|
||||
string filePathInBucket = $"{m_cfg.UploadPath}/{relativePath}";
|
||||
return m_ossClient.DoesObjectExist(m_cfg.BucketName, filePathInBucket);
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public struct Config
|
||||
{
|
||||
public string BucketName;
|
||||
public string UploadPath;
|
||||
public string accessKeyId;
|
||||
public string accessKeySecret;
|
||||
public string endPoint;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: babccfee5f37f244a9260f772441147e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using UnityEditor;
|
||||
using VersionFlow.Runtime;
|
||||
|
||||
namespace VersionFlow.Editors
|
||||
{
|
||||
public static class PatchUploaderUtility
|
||||
{
|
||||
static Dictionary<BuilderConfig, PatchUploader> s_patchInstance = new Dictionary<BuilderConfig, PatchUploader>();
|
||||
static Dictionary<string, Type> s_patchloaderTypesMapper;
|
||||
|
||||
static void PreparePatcherTypes()
|
||||
{
|
||||
if (s_patchloaderTypesMapper != null) return;
|
||||
|
||||
s_patchloaderTypesMapper = new Dictionary<string, Type>();
|
||||
|
||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
if (assembly.IsDynamic) continue;
|
||||
foreach (var type in assembly.GetExportedTypes())
|
||||
{
|
||||
if (type.IsAbstract) continue;
|
||||
if (!typeof(PatchUploader).IsAssignableFrom(type)) continue;
|
||||
|
||||
s_patchloaderTypesMapper[type.FullName] = type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<Type> GetAllPatcherType(this BuilderConfig builder)
|
||||
{
|
||||
PreparePatcherTypes();
|
||||
|
||||
return s_patchloaderTypesMapper.Values;
|
||||
}
|
||||
|
||||
public static PatchUploader GetPatchLoader(this BuilderConfig builder)
|
||||
{
|
||||
PreparePatcherTypes();
|
||||
|
||||
if (!s_patchInstance.TryGetValue(builder, out var loader) || loader.GetType().FullName != builder.uploaderClassName)
|
||||
{
|
||||
s_patchInstance.Remove(builder);
|
||||
s_patchloaderTypesMapper.TryGetValue(builder.uploaderClassName, out Type patchType);
|
||||
|
||||
if (patchType == null) //无效的patchuploader类名,置为Empty
|
||||
{
|
||||
builder.uploaderClassName = string.Empty;
|
||||
EditorUtility.SetDirty(builder);
|
||||
|
||||
return null;
|
||||
}
|
||||
else //创建patchloader实例
|
||||
{
|
||||
var patchloaderInstance = Activator.CreateInstance(patchType) as PatchUploader;
|
||||
patchloaderInstance.CfgChanged(builder, builder.uploaderCfgJson);
|
||||
s_patchInstance[builder] = patchloaderInstance;
|
||||
return patchloaderInstance;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return loader;
|
||||
}
|
||||
}
|
||||
|
||||
public static BuilderConfig FindBuilderInProject()
|
||||
{
|
||||
foreach (var guid in AssetDatabase.FindAssets("t:builderconfig", new string[] { "Assets" }))
|
||||
{
|
||||
var type = AssetDatabase.GetMainAssetTypeFromGUID(new GUID(guid));
|
||||
if (type == null) continue;
|
||||
if (type != typeof(BuilderConfig)) continue;
|
||||
|
||||
|
||||
var path = AssetDatabase.GUIDToAssetPath(guid);
|
||||
var builder = AssetDatabase.LoadAssetAtPath<BuilderConfig>(path);
|
||||
return builder;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d30a52790a25e84a9f1e75591284d8e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -9,7 +9,6 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using static UnityEditor.ObjectChangeEventStream;
|
||||
using static VersionFlow.Runtime.MarkInBundleFiles;
|
||||
|
||||
namespace VersionFlow.Runtime
|
||||
@ -23,12 +22,15 @@ namespace VersionFlow.Runtime
|
||||
set => EditorPrefs.SetBool("ShowBuilderMarker", value);
|
||||
}
|
||||
|
||||
public string ConfigUploadPath;
|
||||
public string BucketName;
|
||||
public string UploadPath;
|
||||
public string accessKeyId;
|
||||
public string accessKeySecret;
|
||||
public string endPoint;
|
||||
[SerializeField]
|
||||
internal VersionFlowSetting vfSetting;
|
||||
|
||||
[SerializeField]
|
||||
[HideInInspector]
|
||||
internal string uploaderClassName;
|
||||
[SerializeField]
|
||||
[HideInInspector]
|
||||
internal string uploaderCfgJson;
|
||||
|
||||
public BuildAssetBundleOptions Options;
|
||||
[HideInInspector]
|
||||
@ -43,128 +45,6 @@ namespace VersionFlow.Runtime
|
||||
public delegate void OnCalcBundleHashHandle(string bundleOutputPath, List<AssetBundleBuild> buildInfoList, Dictionary<string, BundleExtraInfo> bundleExtraInfo, AssetBundleManifest report);
|
||||
public OnCalcBundleHashHandle OnCalcBundleHash;
|
||||
|
||||
public Client GetCDNClient()
|
||||
{
|
||||
var config = new Config
|
||||
{
|
||||
AccessKeyId = accessKeyId,
|
||||
AccessKeySecret = accessKeySecret
|
||||
};
|
||||
var cndClient = new Client(config);
|
||||
|
||||
return cndClient;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新CDN对象缓存
|
||||
/// </summary>
|
||||
public void CDNRefresh(List<string> refreshObjPath)
|
||||
{
|
||||
var client = GetCDNClient();
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
var vfSetting = UnityEditor.AssetDatabase.LoadAssetAtPath<VersionFlowSetting>("Assets/Scripts/VersionFlow/Resources/VersionFlowSettings.asset");
|
||||
|
||||
var refreshFileUrls = refreshObjPath.Select(path => $"{vfSetting.RootPath}/{path}").ToList();
|
||||
var refreshDirectoryUrls = PathHelper.GetSameRoot(refreshFileUrls);
|
||||
|
||||
var response = client.DescribeRefreshQuota(new DescribeRefreshQuotaRequest());
|
||||
int dirRemian = int.Parse(response.Body.DirRemain);
|
||||
int fileUrlRemain = int.Parse(response.Body.UrlQuota);
|
||||
|
||||
Debug.Log($"目录刷新配额剩余:[{dirRemian},本次目录刷新数量:[{refreshDirectoryUrls.Count}]");
|
||||
Debug.Log($"URL刷新配额剩余:[{fileUrlRemain},本次URL刷新数量:[{refreshFileUrls.Count}]");
|
||||
|
||||
var request = new RefreshObjectCachesRequest { Force = true };
|
||||
|
||||
if (dirRemian >= refreshDirectoryUrls.Count)
|
||||
{
|
||||
Debug.Log($"以目录形式刷新");
|
||||
foreach (var path in refreshDirectoryUrls)
|
||||
{
|
||||
sb.Append($"{path}/\n");
|
||||
}
|
||||
request.ObjectPath = sb.ToString();
|
||||
request.ObjectType = "Directory";
|
||||
}
|
||||
else if (fileUrlRemain >= refreshFileUrls.Count)
|
||||
{
|
||||
Debug.Log($"以URL形式刷新");
|
||||
foreach (var path in refreshFileUrls)
|
||||
{
|
||||
sb.Append($"{path}\n");
|
||||
}
|
||||
request.ObjectPath = sb.ToString();
|
||||
request.ObjectType = "File";
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("刷新配额不足,无法刷新CDN资源");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
request.ObjectPath = request.ObjectPath.Remove(request.ObjectPath.Length - 1);
|
||||
|
||||
Debug.Log($"刷新CDN资源:\n{request.ObjectPath}");
|
||||
var refreshResponse = client.RefreshObjectCaches(request);
|
||||
|
||||
ShowRefreshTask(refreshResponse.Body.RefreshTaskId);
|
||||
}
|
||||
|
||||
[InitializeOnLoadMethod]
|
||||
public static void CheckRefreshTask()
|
||||
{
|
||||
foreach (var taskID in RefreshTasks.GetTasks())
|
||||
{
|
||||
ShowRefreshTask(taskID);
|
||||
}
|
||||
}
|
||||
|
||||
private static async void ShowRefreshTask(string refreshCDNTaskID)
|
||||
{
|
||||
RefreshTasks.SaveTask(refreshCDNTaskID);
|
||||
|
||||
var builder = AssetDatabase.LoadAssetAtPath<BuilderConfig>("Assets/Scripts/VersionFlow/Builder/Builder.asset");
|
||||
var cdnClient = builder.GetCDNClient();
|
||||
Dictionary<string, int> subTaskMap = new Dictionary<string, int>();
|
||||
|
||||
refetch:
|
||||
var cdnFetchtask = cdnClient.DescribeRefreshTaskByIdAsync(new DescribeRefreshTaskByIdRequest { TaskId = refreshCDNTaskID });
|
||||
await cdnFetchtask;
|
||||
|
||||
foreach (var task in cdnFetchtask.Result.Body.Tasks)
|
||||
{
|
||||
if (!subTaskMap.TryGetValue(task.ObjectPath, out var subTaskID))
|
||||
{
|
||||
subTaskID = Progress.Start($"刷新中", description: task.ObjectPath, options: Progress.Options.Sticky);
|
||||
subTaskMap[task.ObjectPath] = subTaskID;
|
||||
}
|
||||
|
||||
var progress = float.Parse(task.Process.Replace("%", string.Empty)) / 100;
|
||||
Progress.Report(subTaskID, progress);
|
||||
if (task.Status == "Complete")
|
||||
{
|
||||
Progress.Finish(subTaskID);
|
||||
subTaskMap.Remove(task.ObjectPath);
|
||||
}
|
||||
else if (task.Status == "Failed")
|
||||
{
|
||||
var describ = Progress.GetDescription(subTaskID);
|
||||
Progress.Report(subTaskID, progress, $"{describ}_{task.Description}");
|
||||
Progress.Finish(subTaskID, Progress.Status.Failed);
|
||||
subTaskMap.Remove(task.ObjectPath);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (subTaskMap.Count == 0)
|
||||
{
|
||||
RefreshTasks.DeleteTask(refreshCDNTaskID);
|
||||
return;
|
||||
}
|
||||
else goto refetch;
|
||||
}
|
||||
|
||||
public BundleManifest Build(string version, out string outputPath, out Dictionary<string, BundleExtraInfo> bundleExtraInfo)
|
||||
{
|
||||
@ -180,8 +60,8 @@ namespace VersionFlow.Runtime
|
||||
Directory.CreateDirectory(outputPath);
|
||||
|
||||
var report = BuildPipeline.BuildAssetBundles(outputPath, buildInfoList.ToArray(), Options, EditorUserBuildSettings.activeBuildTarget);
|
||||
|
||||
OnCalcBundleHash.Invoke(outputPath, buildInfoList, bundleExtraInfo, report);
|
||||
if (report != null)
|
||||
OnCalcBundleHash.Invoke(outputPath, buildInfoList, bundleExtraInfo, report);
|
||||
|
||||
var manifest = BundleManifest.Create(version, bundleExtraInfo, report, outputPath);
|
||||
|
||||
@ -346,7 +226,7 @@ namespace VersionFlow.Runtime
|
||||
}
|
||||
|
||||
return assetsToBuild;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class BundleExtraInfo
|
||||
|
||||
@ -57,37 +57,40 @@ namespace VersionFlow.Runtime
|
||||
var result = new BundleManifest() { Version = version };
|
||||
|
||||
result.Bundles = new List<Bundle>();
|
||||
foreach (var bundleName in report.GetAllAssetBundles())
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.BundleName = bundleName;
|
||||
if (report != null)
|
||||
{
|
||||
foreach (var bundleName in report.GetAllAssetBundles())
|
||||
{
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.BundleName = bundleName;
|
||||
|
||||
bundle.Dependencies = report.GetDirectDependencies(bundleName).ToList();
|
||||
bundle.Assets = new List<string>();
|
||||
var extraInfo = bundleExtraInfo[bundleName];
|
||||
|
||||
if (extraInfo.ShaderBundle)
|
||||
bundle.Dependencies.Clear();
|
||||
|
||||
bundle.Hash = extraInfo.BundleHash.ToString();
|
||||
bundle.OptionBundle = extraInfo.IsOptionBundle;
|
||||
bundle.ShaderBundle = extraInfo.ShaderBundle;
|
||||
bundle.InstallBundle = extraInfo.IsInstallBundle;
|
||||
bundle.Group = extraInfo.GroupName;
|
||||
var bundlePath = $"{outputPath}/{bundleName}";
|
||||
var ab = AssetBundle.LoadFromFile(bundlePath);
|
||||
List<string> allAssets = new List<string>();
|
||||
allAssets.AddRange(ab.GetAllAssetNames());
|
||||
allAssets.AddRange(ab.GetAllScenePaths());
|
||||
|
||||
ab.Unload(true);
|
||||
foreach (var asset in allAssets)
|
||||
{
|
||||
bundle.Assets.Add(asset);
|
||||
bundle.Dependencies = report.GetDirectDependencies(bundleName).ToList();
|
||||
bundle.Assets = new List<string>();
|
||||
var extraInfo = bundleExtraInfo[bundleName];
|
||||
|
||||
if (extraInfo.ShaderBundle)
|
||||
bundle.Dependencies.Clear();
|
||||
|
||||
bundle.Hash = extraInfo.BundleHash.ToString();
|
||||
bundle.OptionBundle = extraInfo.IsOptionBundle;
|
||||
bundle.ShaderBundle = extraInfo.ShaderBundle;
|
||||
bundle.InstallBundle = extraInfo.IsInstallBundle;
|
||||
bundle.Group = extraInfo.GroupName;
|
||||
var bundlePath = $"{outputPath}/{bundleName}";
|
||||
var ab = AssetBundle.LoadFromFile(bundlePath);
|
||||
List<string> allAssets = new List<string>();
|
||||
allAssets.AddRange(ab.GetAllAssetNames());
|
||||
allAssets.AddRange(ab.GetAllScenePaths());
|
||||
|
||||
ab.Unload(true);
|
||||
foreach (var asset in allAssets)
|
||||
{
|
||||
bundle.Assets.Add(asset);
|
||||
}
|
||||
bundle.Size = new FileInfo(bundlePath).Length;
|
||||
|
||||
result.Bundles.Add(bundle);
|
||||
}
|
||||
bundle.Size = new FileInfo(bundlePath).Length;
|
||||
|
||||
result.Bundles.Add(bundle);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user