Browse Source

增加自动化脚本

“hujiajun” 6 months ago
parent
commit
ab7739e41e
100 changed files with 8453 additions and 3229 deletions
  1. 5 5
      Assets/1.renderTexture
  2. 317 0
      Assets/1.unity
  3. 1 1
      Assets/1.unity.meta
  4. 5 5
      Assets/2.renderTexture
  5. 6 7
      Assets/3.renderTexture
  6. 39 0
      Assets/4.renderTexture
  7. 3 2
      Assets/4.renderTexture.meta
  8. 1 1
      Assets/AssetData.meta
  9. 1 1
      Assets/AssetData/Excel.meta
  10. 1 1
      Assets/AssetData/Excel/AutoCreateAsset.meta
  11. 689 0
      Assets/AssetData/Excel/AutoCreateAsset/task0.asset
  12. 8 0
      Assets/AssetData/Excel/AutoCreateAsset/task0.asset.meta
  13. 2588 0
      Assets/AssetData/Excel/AutoCreateAsset/task1.asset
  14. 8 0
      Assets/AssetData/Excel/AutoCreateAsset/task1.asset.meta
  15. 548 0
      Assets/AssetData/Excel/AutoCreateAsset/task2.asset
  16. 8 0
      Assets/AssetData/Excel/AutoCreateAsset/task2.asset.meta
  17. 25 0
      Assets/AutoPlayer.cs
  18. 1 1
      Assets/AutoPlayer.cs.meta
  19. 1 1
      Assets/Editor.meta 2
  20. 1 1
      Assets/Editor.meta 2.meta
  21. 267 0
      Assets/Editor/BuildExcelEditor.cs
  22. 1 1
      Assets/Editor/BuildExcelEditor.cs.meta
  23. 438 0
      Assets/Editor/ExcelCodeCreater.cs
  24. 1 1
      Assets/Editor/ExcelCodeCreater.cs.meta
  25. 341 0
      Assets/Editor/ExcelDataReader.cs
  26. 1 1
      Assets/Editor/ExcelDataReader.cs.meta
  27. 13 0
      Assets/Editor/MyObject.cs
  28. 11 0
      Assets/Editor/MyObject.cs.meta
  29. 20 0
      Assets/GetAVProTexture.cs
  30. 11 0
      Assets/GetAVProTexture.cs.meta
  31. 8 0
      Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.meta
  32. BIN
      Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/LightingData.asset
  33. 8 0
      Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/LightingData.asset.meta
  34. BIN
      Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/ReflectionProbe-0.exr
  35. 156 0
      Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/ReflectionProbe-0.exr.meta
  36. 8 0
      Assets/Plugins.meta
  37. 8 0
      Assets/Plugins/Excel.meta
  38. BIN
      Assets/Plugins/Excel/EPPlus.dll
  39. 7 6
      Assets/Plugins/Excel/EPPlus.dll.meta
  40. BIN
      Assets/Plugins/Excel/Excel.dll
  41. 7 6
      Assets/Plugins/Excel/Excel.dll.meta
  42. BIN
      Assets/Plugins/Excel/ICSharpCode.SharpZipLib.dll
  43. 1 1
      Assets/Plugins/Excel/ICSharpCode.SharpZipLib.dll.meta
  44. 43 150
      Assets/Scenes/Game.unity
  45. 8 0
      Assets/Script.meta
  46. 8 0
      Assets/Script/Excel.meta
  47. 8 0
      Assets/Script/Excel/AutoCreateCSCode.meta
  48. 322 0
      Assets/Script/Excel/AutoCreateCSCode/TestConfigExcelData.cs
  49. 11 0
      Assets/Script/Excel/AutoCreateCSCode/TestConfigExcelData.cs.meta
  50. 14 0
      Assets/Script/Excel/ExcelDataBase.cs
  51. 11 0
      Assets/Script/Excel/ExcelDataBase.cs.meta
  52. 68 0
      Assets/Script/Excel/ExcelItemArrArr.cs
  53. 11 0
      Assets/Script/Excel/ExcelItemArrArr.cs.meta
  54. 71 0
      Assets/Script/Excel/ExcelMediumData.cs
  55. 11 0
      Assets/Script/Excel/ExcelMediumData.cs.meta
  56. 824 0
      Assets/Script/StringUtility.cs
  57. 11 0
      Assets/Script/StringUtility.cs.meta
  58. 8 0
      Assets/Settings.meta
  59. 8 0
      Assets/Settings/Build Profiles.meta
  60. 936 0
      Assets/Settings/Build Profiles/New Web Profile.asset
  61. 8 0
      Assets/Settings/Build Profiles/New Web Profile.asset.meta
  62. 7 4
      Assets/TaskConfig.cs
  63. 108 35
      Assets/TaskManager.cs
  64. 9 9
      Assets/TextLogCheck.cs
  65. BIN
      Assets/TriLib/TriLibCore/Plugins/Dependencies/ICSharpCode.SharpZipLib.dll
  66. 4 4
      Assets/WebGLCopyAndPaste/Plugins/WebGLCopyAndPaste.jslib
  67. 5 5
      Assets/XianSuoManager.cs
  68. 3 4
      Assets/checkVideo.cs
  69. 250 217
      Assets/task 1.asset
  70. 113 116
      Assets/task.asset
  71. 10 3
      Assets/webglvideocheck.cs
  72. 0 9
      Packages/com.ghz.avideoplayer/Editor/Scripts.meta
  73. 0 194
      Packages/com.ghz.avideoplayer/Editor/Scripts/AnimCollapseSection.cs
  74. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/AnimCollapseSection.cs.meta
  75. 0 9
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components.meta
  76. 0 108
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMaterialEditor.cs
  77. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMaterialEditor.cs.meta
  78. 0 183
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMeshEditor.cs
  79. 0 8
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMeshEditor.cs.meta
  80. 0 103
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/AudioOutputEditor.cs
  81. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/AudioOutputEditor.cs.meta
  82. 0 86
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/DisplayIMGUIEditor.cs
  83. 0 8
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/DisplayIMGUIEditor.cs.meta
  84. 0 682
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor.cs
  85. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor.cs.meta
  86. 0 163
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_AboutHelp.cs
  87. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_AboutHelp.cs.meta
  88. 0 191
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Android.cs
  89. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Android.cs.meta
  90. 0 145
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Apple.cs
  91. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Apple.cs.meta
  92. 0 87
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Audio.cs
  93. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Audio.cs.meta
  94. 0 284
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Debug.cs
  95. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Debug.cs.meta
  96. 0 40
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Events.cs
  97. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Events.cs.meta
  98. 0 78
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Global.cs
  99. 0 12
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Global.cs.meta
  100. 0 130
      Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Network.cs

+ 5 - 5
Assets/1.renderTexture

@@ -18,15 +18,15 @@ RenderTexture:
   m_Height: 1040
   m_AntiAliasing: 1
   m_MipCount: -1
-  m_DepthStencilFormat: 0
+  m_DepthStencilFormat: 92
   m_ColorFormat: 8
-  m_MipMap: 1
-  m_GenerateMips: 1
+  m_MipMap: 0
+  m_GenerateMips: 0
   m_SRGB: 0
-  m_UseDynamicScale: 1
+  m_UseDynamicScale: 0
   m_BindMS: 0
   m_EnableCompatibleFormat: 1
-  m_EnableRandomWrite: 1
+  m_EnableRandomWrite: 0
   m_TextureSettings:
     serializedVersion: 2
     m_FilterMode: 1

+ 317 - 0
Assets/1.unity

@@ -0,0 +1,317 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 0
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 0}
+  m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481676, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    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
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 512
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 256
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 1
+    m_PVRDenoiserTypeDirect: 1
+    m_PVRDenoiserTypeIndirect: 1
+    m_PVRDenoiserTypeAO: 1
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 1
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 3
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    buildHeightMesh: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &1524639378
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1524639380}
+  - component: {fileID: 1524639379}
+  m_Layer: 0
+  m_Name: Directional Light
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!108 &1524639379
+Light:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1524639378}
+  m_Enabled: 1
+  serializedVersion: 10
+  m_Type: 1
+  m_Shape: 0
+  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+  m_Intensity: 1
+  m_Range: 10
+  m_SpotAngle: 30
+  m_InnerSpotAngle: 21.80208
+  m_CookieSize: 10
+  m_Shadows:
+    m_Type: 2
+    m_Resolution: -1
+    m_CustomResolution: -1
+    m_Strength: 1
+    m_Bias: 0.05
+    m_NormalBias: 0.4
+    m_NearPlane: 0.2
+    m_CullingMatrixOverride:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_UseCullingMatrixOverride: 0
+  m_Cookie: {fileID: 0}
+  m_DrawHalo: 0
+  m_Flare: {fileID: 0}
+  m_RenderMode: 0
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingLayerMask: 1
+  m_Lightmapping: 4
+  m_LightShadowCasterMode: 0
+  m_AreaSize: {x: 1, y: 1}
+  m_BounceIntensity: 1
+  m_ColorTemperature: 6570
+  m_UseColorTemperature: 0
+  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_UseBoundingSphereOverride: 0
+  m_UseViewFrustumForShadowCasterCull: 1
+  m_ShadowRadius: 0
+  m_ShadowAngle: 0
+--- !u!4 &1524639380
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1524639378}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+  m_LocalPosition: {x: 0, y: 3, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1635436777
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1635436780}
+  - component: {fileID: 1635436779}
+  - component: {fileID: 1635436778}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &1635436778
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1635436777}
+  m_Enabled: 1
+--- !u!20 &1635436779
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1635436777}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_Iso: 200
+  m_ShutterSpeed: 0.005
+  m_Aperture: 16
+  m_FocusDistance: 10
+  m_FocalLength: 50
+  m_BladeCount: 5
+  m_Curvature: {x: 2, y: 11}
+  m_BarrelClipping: 0.25
+  m_Anamorphism: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 1
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &1635436780
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1635436777}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+  m_ObjectHideFlags: 0
+  m_Roots:
+  - {fileID: 1635436780}
+  - {fileID: 1524639380}

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/_CodeSignature/CodeRequirements-1.meta → Assets/1.unity.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 358681f8219aa41819064d06daf8201d
+guid: 198b0d888e73d42128460248c1884609
 DefaultImporter:
   externalObjects: {}
   userData: 

+ 5 - 5
Assets/2.renderTexture

@@ -18,15 +18,15 @@ RenderTexture:
   m_Height: 1280
   m_AntiAliasing: 1
   m_MipCount: -1
-  m_DepthStencilFormat: 0
+  m_DepthStencilFormat: 92
   m_ColorFormat: 8
-  m_MipMap: 1
-  m_GenerateMips: 1
+  m_MipMap: 0
+  m_GenerateMips: 0
   m_SRGB: 0
-  m_UseDynamicScale: 1
+  m_UseDynamicScale: 0
   m_BindMS: 0
   m_EnableCompatibleFormat: 1
-  m_EnableRandomWrite: 1
+  m_EnableRandomWrite: 0
   m_TextureSettings:
     serializedVersion: 2
     m_FilterMode: 1

+ 6 - 7
Assets/3.renderTexture

@@ -10,23 +10,22 @@ RenderTexture:
   m_ImageContentsHash:
     serializedVersion: 2
     Hash: 00000000000000000000000000000000
-  m_ForcedFallbackFormat: 4
-  m_DownscaleFallback: 0
   m_IsAlphaChannelOptional: 0
-  serializedVersion: 5
+  serializedVersion: 6
   m_Width: 1080
   m_Height: 1920
   m_AntiAliasing: 1
   m_MipCount: -1
-  m_DepthStencilFormat: 0
+  m_DepthStencilFormat: 92
   m_ColorFormat: 8
-  m_MipMap: 1
+  m_MipMap: 0
   m_GenerateMips: 1
   m_SRGB: 0
-  m_UseDynamicScale: 1
+  m_UseDynamicScale: 0
+  m_UseDynamicScaleExplicit: 0
   m_BindMS: 0
   m_EnableCompatibleFormat: 1
-  m_EnableRandomWrite: 1
+  m_EnableRandomWrite: 0
   m_TextureSettings:
     serializedVersion: 2
     m_FilterMode: 1

+ 39 - 0
Assets/4.renderTexture

@@ -0,0 +1,39 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!84 &8400000
+RenderTexture:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 4
+  m_ImageContentsHash:
+    serializedVersion: 2
+    Hash: 00000000000000000000000000000000
+  m_IsAlphaChannelOptional: 0
+  serializedVersion: 6
+  m_Width: 512
+  m_Height: 512
+  m_AntiAliasing: 1
+  m_MipCount: -1
+  m_DepthStencilFormat: 92
+  m_ColorFormat: 8
+  m_MipMap: 0
+  m_GenerateMips: 1
+  m_SRGB: 0
+  m_UseDynamicScale: 0
+  m_UseDynamicScaleExplicit: 0
+  m_BindMS: 0
+  m_EnableCompatibleFormat: 1
+  m_EnableRandomWrite: 0
+  m_TextureSettings:
+    serializedVersion: 2
+    m_FilterMode: 1
+    m_Aniso: 0
+    m_MipBias: 0
+    m_WrapU: 1
+    m_WrapV: 1
+    m_WrapW: 1
+  m_Dimension: 2
+  m_VolumeDepth: 1
+  m_ShadowSamplingMode: 2

+ 3 - 2
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/_CodeSignature/CodeDirectory.meta → Assets/4.renderTexture.meta

@@ -1,7 +1,8 @@
 fileFormatVersion: 2
-guid: 269ff32bd08a54b95ba4f2471695f00a
-DefaultImporter:
+guid: 167953238f6e34a048efbc6f78cbf345
+NativeFormatImporter:
   externalObjects: {}
+  mainObjectFileID: 8400000
   userData: 
   assetBundleName: 
   assetBundleVariant: 

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/ios-arm64.meta → Assets/AssetData.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 8c4ef8b97131e4c1b811cda541588ea2
+guid: 90b1d91df586347ce936e5f8196d146e
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/_CodeSignature.meta → Assets/AssetData/Excel.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: e18a9d7a2e3fb4383a9fdbd3d31e83c4
+guid: fc3c422fc83634569a9a0dc769003f65
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/ios-arm64_x86_64-simulator.meta → Assets/AssetData/Excel/AutoCreateAsset.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: ec8828b1ed33b4b5c85874c374fb322c
+guid: d0895f1606cb64c64bf5b38ecdee617e
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 689 - 0
Assets/AssetData/Excel/AutoCreateAsset/task0.asset

@@ -0,0 +1,689 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4182afbe5a32c49dca2581d60c66652c, type: 3}
+  m_Name: task0
+  m_EditorClassIdentifier: 
+  items:
+  - id: 1
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5728\u770B\u5230\u8FD9\u5EA7\u4F4D\u4E8E\u7E41\u534E\u95F9\u5E02\u7684\u53E4\u6734\u9053\u89C2\u7684\u4E00\u77AC\u95F4\uFF0C\u4F60\u4EFF\u4F5B\u542C\u5230\u4E86\u4EC0\u4E48\u9707\u7FC5\u7684\u58F0\u97F3\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 2
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u604D\u60DA\u4E86\u4E00\u4E0B\uFF0C\u611F\u89C9\u5230\u8F7B\u5FAE\u7684\u7729\u6655\uFF0C\u6574\u4E2A\u610F\u8BC6\u50CF\u662F\u8499\u4E0A\u4E86\u4E00\u5C42\u900F\u660E\u7684\u8F7B\u7EB1\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 3
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u5514\u2026\u2026\u201D"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 0.7
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 4
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0D\u77E5\u4F55\u65F6\uFF0C\u4F60\u5DF2\u7ECF\u8D70\u8FC7\u724C\u574A\uFF0C\u7AD9\u5728\u77F3\u533E\u4E0B\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 0.7
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 5
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u56DB\u5468\u6E05\u5E7D\uFF0C\u4F60\u5374\u9690\u9690\u7EA6\u7EA6\u6709\u79CD\u611F\u89C9\u2014\u2014\u56DB\u5468\u4F3C\u4E4E\u8DDF\u4F60\u4ECE\u724C\u574A\u5916\u671B\u8FDB\u6765\u7684\u6837\u5B50\u4E0D\u5927\u4E00\u6837\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 6
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F46\u662F\u5230\u5E95\u54EA\u91CC\u4E0D\u4E00\u6837\u4F60\u4E5F\u8BF4\u4E0D\u4E0A\u6765\uFF0C"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 7
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u54EA\u91CC\u4E0D\u4E00\u6837\u5462\uFF1F\u96BE\u9053\u662F\u773C\u82B1\u4E86\uFF1F
+      \u4E0D\u3001\u4E0D\u662F\u773C\u82B1\uFF0C\u662F\u786E\u5B9E\uFF0C\u8DDF\u521A\u624D\u4E0D\u4E00\u6837\u4E86\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 8
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F46\u662F\u5230\u5E95\u54EA\u91CC\u4E0D\u4E00\u6837\u4F60\u4E5F\u8BF4\u4E0D\u4E0A\u6765\uFF0C"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 9
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C31\u5728\u6B64\u65F6\uFF0C\u4F60\u611F\u89C9\u5230\u524D\u65B9\u7684\u7A7A\u6C14\u5FFD\u7136\u5F00\u59CB\u632F\u52A8\u3001\u538B\u7F29\u3001\u7136\u540E\u4F60\u773C\u7741\u7741\u5730\u770B\u7740\u7A7A\u6C14\u91CC\u51FA\u73B0\u4E86\u4E00\u4E2A\u4F60\u4ECE\u672A\u89C1\u8FC7\u7684\u5C0F\u52A8\u7269\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_1
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 10
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD9\u5C0F\u4E1C\u897F\u957F\u5F97\u8FD8\u633A\u53EF\u7231\u2026\u2026\u4E0D\u5BF9\uFF01\u8FD9\u662F\u4E2A\u5565\uFF1F"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_1
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 11
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u548C\u98D8\u5728\u4F60\u9762\u524D\u7684\u5C0F\u52A8\u7269\u5927\u773C\u77AA\u5C0F\u773C\uFF0C\u8111\u5B50\u56E0\u4E3A\u8FC7\u4E8E\u9707\u60CA\u53CD\u800C\u663E\u51FA\u4E00\u79CD\u53E4\u602A\u7684\u5E73\u9759\uFF0C\u4F60\u5C45\u7136\u8FD8\u80FD\u62BD\u7A7A\u89C9\u5F97\u5C0F\u52A8\u7269\u957F\u5F97\u8FD8\u4E0D\u9519\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_1
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 12
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u7942\u793A\u610F\u4F60\u5F80\u540E\u770B\uFF0C\u7942\u7ED5\u7740\u4F60\u8EAB\u540E\u724C\u574A\u8FB9\u88AB\u680F\u6746\u56F4\u8D77\u6765\u7684\u77F3\u9E92\u9E9F\u98DE\u4E86\u4E00\u5708\uFF0C\u81EA\u8C6A\u5730\u8E72\u5728\u4E86\u77F3\u96D5\u8111\u888B\u9876\u4E0A\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 13
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u4F60\u662F\u8BF4\u2026\u2026\u4F60\u662F\u77F3\u9E92\u9E9F\uFF1F\u4F46\u4F60\u4FE9\u957F\u5F97\u4E00\u70B9\u513F\u4E0D\u50CF\u554A\uFF01\u201D"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_2
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 14
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u770B\u5230\u77F3\u9E92\u9E9F\u5F88\u5ACC\u5F03\u5730\u7FFB\u4E86\u4E2A\u767D\u773C\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 15
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u5F80\u524D\u770B\u53BB\uFF0C\u770B\u5230\u201C\u4E94\u4ED9\u53E4\u89C2\u201D\u7684\u724C\u533E\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 16
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u51DD\u795E\u7EC6\u770B\uFF0C\u8D6B\u7136\u770B\u5230\u77F3\u533E\u9644\u8FD1\u6D6E\u52A8\u4E00\u884C\u5C0F\u5B57\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_3
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 17
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u5251\u6C14\u5CE5\u5D58\u591C\u63D2\u5929\uFF0C\u745E\u5149\u660E\u706D\u5230\u9EC4\u6E7E\u3002\u5750\u770B\u65F8\u8C37\u6D6E\u91D1\u6655\uFF0C\u9065\u60F3\u94B1\u5858\u6D8C\u96EA\u5C71\u3002\""
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 18
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u5DF2\u89C9\u82CD\u51C9\u82CF\u75C5\u9AA8\uFF0C\u66F4\u70E6\u6C86\u7023\u6D17\u8870\u989C\u3002\u5FFD\u60CA\u9E1F\u52A8\u884C\u4EBA\u8D77\uFF0C\u98DE\u4E0A\u5343\u5CF0\u7D2B\u7FE0\u95F4\u2026\u2026\u8FD9\u4E0D\u662F\u82CF\u8F7C\u7684\u8BD7\u4E48\uFF1F\u201D"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 19
+    xiansuos: 00
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u4E0D\u89E3\u5176\u610F\uFF0C\u4F46\u4F60\u8FD8\u662F\u628A\u5B83\u8BB0\u4E86\u4E0B\u6765\uFF0C\u5C0F\u5B57\u968F\u5373\u6D88\u5931\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_4
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 20
+    xiansuos: 00
+    type: 1
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u62FF\u5934\u62F1\u62F1\u4F60\uFF0C\u793A\u610F\u4F60\u8FDB\u53BB\uFF0C\u4F60\u6DF1\u5438\u4E00\u53E3\u6C14\uFF0C\u8FC8\u6B65\u8E0F\u5165\u89C2\u5185\u2014\u2014"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 21
+    xiansuos: 00
+    type: 2
+    isNoshow: 1
+    lihui: 
+    info: 
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: daoju
+    isguochangskip: 0
+  - id: 22
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u56DB\u5468\u5149\u7EBF\u6D6E\u52A8\uFF0C\u7A7A\u6C14\u5FAE\u5FAE\u626D\u66F2\uFF0C\u7136\u540E\uFF0C\u4F60\u770B\u5230\u4E86\u5979\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_6
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 23
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6EE1\u9762\u54C0\u6101\u7684\u53E4\u88C5\u5C11\u5973\u60CA\u9E3F\u4E00\u73B0\uFF0C\u968F\u5373\u6D88\u5931\u5728\u89C2\u5185\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_6
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 24
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F46\u4F60\u9690\u7EA6\u770B\u89C1\uFF0C\u5979\u7684\u5F71\u5B50\u91CC\uFF0C\u6709\u4EC0\u4E48\u4E1C\u897F\u5728\u52A8\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: task_6
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 25
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E00\u56E2\u4E00\u56E2\u7684\u96FE\u6C14\u4ECE\u4F60\u811A\u5E95\u65E0\u58F0\u65E0\u606F\u7684\u5F25\u6F2B\uFF0C\u6574\u4E2A\u4E94\u4ED9\u89C2\u88AB\u8FF7\u96FE\u7B3C\u7F69\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 1
+    guochang: 
+    isguochangskip: 0
+  - id: 26
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u5FFD\u7136\u610F\u8BC6\u5230\uFF0C\u504C\u5927\u7684\u4E94\u4ED9\u89C2\uFF0C\u5BC2\u9759\u65E0\u58F0\uFF0C\u53EA\u6709\u4F60\u4E00\u4E2A\u4EBA\u3002
+      \u2014\u2014\u4E5F\u8BB8\u51FA\u4E0D\u53BB\u4E86\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 1
+    guochang: 
+    isguochangskip: 0
+  - id: 27
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD9\u4E2A\u65E0\u7531\u7684\u5FF5\u5934\u51FA\u73B0\u5728\u4F60\u7684\u8111\u6D77\u4E2D\u3002"
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 1
+    guochang: 
+    isguochangskip: 0
+  - id: 28
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5E8F\u7AE0\u7ED3\u675F"
+    info2: 
+    bgName: dialogbg
+    imgName: one_end2
+    taskcheck: 
+    centerName: one_end
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 1
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0

+ 8 - 0
Assets/AssetData/Excel/AutoCreateAsset/task0.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7b4d63229f6944f4ea1f8e85fcfac40d
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 2588 - 0
Assets/AssetData/Excel/AutoCreateAsset/task1.asset

@@ -0,0 +1,2588 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4182afbe5a32c49dca2581d60c66652c, type: 3}
+  m_Name: task1
+  m_EditorClassIdentifier: 
+  items:
+  - id: 1
+    xiansuos: 
+    type: 2
+    isNoshow: 1
+    lihui: 
+    info: 
+    info2: 
+    bgName: dialogbg
+    imgName: dialogbg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 2
+    isguochangskip: 0
+  - id: 2
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u7684\u9884\u611F\u5B9E\u73B0\u4E86\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 3
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u65E0\u8BBA\u5982\u4F55\u4E5F\u8D70\u4E0D\u51FA\u8FD9\u56E2\u8FF7\u96FE\u3002\u8FF7\u96FE\u4E2D\u7684\u666F\u7269\u4E0E\u5EFA\u7B51\u5F62\u6001\u5728\u4F60\u7684\u89C6\u91CE\u8FB9\u7F18\u6447\u66F3\u4E0D\u5B9A\uFF0C\u4F46\u5F53\u4F60\u4ED4\u7EC6\u770B\u53BB\uFF0C\u53C8\u4E00\u52A8\u4E0D\u52A8\uFF0C\u4E00\u65E6\u79FB\u5F00\u89C6\u7EBF\uFF0C\u53C8\u5F00\u59CB\u6084\u7136\u53D8\u5316\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 4
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD9\u91CC\u6709\u53E4\u602A\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 0.7
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 5
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u624B\u673A\u6BEB\u65E0\u4FE1\u53F7\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_7
+    centersize: 0.7
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 6
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u884C\u5427\uFF0C\u9B3C\u6253\u5899\u6216\u8005\u5F02\u4E16\u754C\u4F20\u8BF4\u9009\u4E00\u6837\u662F\u5427\uFF1F"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_7
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 7
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u90A3\u7CFB\u7EDF\u5462\uFF1F\u6309\u5957\u8DEF\u8FD9\u65F6\u5019\u8BE5\u51FA\u6765\u4E00\u4E2A\u7CFB\u7EDF\u4E86\u5427\uFF1F\u4E0D\u6C42\u91D1\u624B\u6307\u5F00\u6302\uFF0C\u603B\u5F97\u7ED9\u70B9\u65B0\u624B\u5F15\u5BFC\u5427\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_7
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 8
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u6B63\u60F3\u7740\uFF0C\u77F3\u9E92\u9E9F\u62FF\u5934\u63A8\u4E86\u63A8\u4F60\uFF0C\u8BA9\u4F60\u8DDF\u7740\u7942\u8D70\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_7
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 9
+    xiansuos: 
+    type: 2
+    isNoshow: 1
+    lihui: 
+    info: 
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: main
+    isguochangskip: 0
+  - id: 10
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u8DDF\u7740\u7942\u8D70\u5230\u77F3\u7F8A\u524D\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 11
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u7F8A\u524D\u6709\u4E00\u5C42\u82E5\u9690\u82E5\u73B0\u7684\u8FF7\u96FE\uFF0C\u65E0\u8BBA\u5982\u4F55\u4F60\u90FD\u8FC7\u4E0D\u53BB\uFF0C\u4F60\u4ED4\u7EC6\u5F80\u524D\u770B\uFF0C\u9690\u9690\u7EA6\u7EA6\u770B\u5230\u5185\u91CC\u4F3C\u6709\u4E2A\u8EAB\u7740\u53E4\u88C5\u7684\u6F47\u6D12\u7537\u5B50\u6B63\u63D0\u7B14\u5728\u4E00\u5757\u533E\u989D\u4E0A\u5199\u5B57\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 12
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u533E\u989D\u4E0A\u4F60\u52C9\u5F3A\u770B\u5230\u662F\u201C\u516D\u6995\u201D\u4E24\u4E2A\u5B57\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 13
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u7136\u540E\u4F60\u9762\u524D\u662F\u4E00\u4E2A\u51ED\u7A7A\u51FA\u73B0\u7684\u4E66\u6848\uFF0C\u4E00\u5F20\u5BA3\u7EB8\uFF0C\u4E0A\u9762\u662F\u521D\u5B66\u8005\u4E60\u5B57\u7684\u5927\u5927\u4E24\u4E2A\u7C73\u5B57\u683C\uFF0C\u65C1\u8FB9\u653E\u7740\u7B14\u58A8\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 14
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u8FD9\u610F\u601D\u662F\uFF0C\u5F97\u5199\u4EC0\u4E48\u5BF9\u5417\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 15
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u6211\u8BE5\u5199\u4EC0\u4E48\u5462\u2026\u2026\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 16
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD9\u91CC\u770B\u8D77\u6765\u8981\u5199\u4E24\u4E2A\u5B57\uFF0C\u53EF\u5199\u4EC0\u4E48\u5462\uFF1F\u8FD9\u5730\u513F\u8981\u662F\u8FD8\u8BB2\u7406\uFF0C\u90A3\u4E4B\u524D\u80AF\u5B9A\u6709\u7EBF\u7D22\u7ED9\u4F60\u586B\u8FD9\u4E2A\u7A7A\uFF0C\u4F60\u60F3\u4E86\u60F3\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 17
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u4EBA\u3001\u516D\u6995\u3001\u533E\u989D\u2026\u2026\u5636\uFF0C\u611F\u89C9\u8111\u5B50\u8981\u957F\u51FA\u6765\u4E86\uFF0C\u4F46\u8FD8\u5DEE\u70B9\u4EC0\u4E48\u2026\u2026\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 18
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u554A\uFF0C\u5BF9\uFF0C\u90A3\u9996\u8BD7\uFF01\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 19
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u60F3\u8D77\u4E4B\u524D\u5728\u77F3\u533E\u9644\u8FD1\u770B\u5230\u7684\u90A3\u9996\u8BD7\uFF0C\u90A3\u662F\u82CF\u8F7C\u5728\u5E7F\u5DDE\u6E38\u89C8\u5357\u6D77\u795E\u5E99\u6D74\u65E5\u4EAD\u6240\u5199\u7684\u300A\u5357\u6D77\u6D74\u65E5\u4EAD\u300B\uFF0C\u52A0\u4E0A\u4F60\u521A\u624D\u770B\u5230\u7684\u5E7B\u8C61"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_8
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 20
+    xiansuos: 
+    type: 6
+    isNoshow: 0
+    lihui: 
+    info: "\u5386\u53F2\u4E0A\u7ED9\u516D\u6995\u5BFA\u9898\u533E\u989D\u7684\u4E5F\u662F\u82CF\u8F7C\uFF0C\u8FD9\u4E9B\u662F\u4E0D\u662F\u5C31\u662F\u7EBF\u7D22\u2014\u2014\u7BA1\u4ED6\u5462\uFF0C\u8BD5\u4E00\u8BD5\uFF0C\u5C31\u5199\u82CF\u8F7C\u8BD5\u8BD5\uFF01"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: "\u82CF\u8F7C"
+    centerName: task_9
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 21
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u5199\u4E0A\u201C\u82CF\u8F7C\u201D\u4E8C\u5B57\u7684\u77AC\u95F4\uFF0C\u77F3\u7F8A\u5468\u56F4\u7684\u8FF7\u96FE\u6D88\u6563\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_11
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 22
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0B\u4E00\u6B65\u8BE5\u505A\u4EC0\u4E48\uFF1F\u4F60\u6B63\u7422\u78E8\uFF0C\u77F3\u9E92\u9E9F\u62FF\u5934\u78B0\u78B0\u4F60\u7684\u624B\u673A\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 23
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u662F\u8981\u6211\u7528\u624B\u673A\u626B\u4E00\u626B\u8FD9\u4E00\u7247\uFF1F\u201D\u77F3\u9E92\u9E9F\u53C8\u4ECE\u53CD\u65B9\u5411\u62FF\u5934\u78B0\u78B0\u624B\u673A\uFF0C\u4F60\u60F3\u4E86\u4E00\u4E0B\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 1
+  - id: 24
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u662F\u8981\u6211\u626B\u5B8C\u4E4B\u540E\u5C31\u9000\u51FA\u6765\u770B\u770B\uFF0C\u5BF9\u5427\uFF0C\u8FD9\u610F\u601D\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 25
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u7528\u529B\u70B9\u5934\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 26
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5F88\u597D\uFF0C\u626B\u4E00\u4E0B\u770B\u770B\u6709\u5565\uFF0C\u518D\u9000\u51FA\u6765\u770B\u5267\u60C5\u2014\u2014\u975E\u5E38\u6807\u51C6\u5267\u60C5\u63A8\u8FDB\u6A21\u5F0F\uFF0C\u516B\u6210\u662F\u7A7F\u6E38\u620F\u91CC\u4E86\u3002
+      \u4F60\u638F\u51FA\u624B\u673A\u626B\u63CF\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 27
+    xiansuos: 
+    type: 4
+    isNoshow: 0
+    lihui: 
+    info: "\u8BF7\u5C06\u6444\u50CF\u5934\u5BF9\u51C6\u5927\u6BBF\u5DE6\u4FA7\u77F3\u7F8A                                                                                                                                  
+      \u65C1\u8FB9\u7684\u77F3\u9E92\u9E9F\u56FE\u7247"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 1
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 28
+    xiansuos: 
+    type: 4
+    isNoshow: 0
+    lihui: 
+    info: "\u900F\u8FC7\u6444\u50CF\u5934\uFF0C\u4F60\u770B\u5230\u624B\u673A\u5C4F\u5E55\u4E0A\u51FA\u73B0\u4E86\u4E00\u679A\u73B0\u5B9E\u4E2D\u5E76\u4E0D\u5B58\u5728\u7684\u516D\u9762\u94DC\u5370\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 29
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5BF9\u4E8E\u8FD9\u4E2A\u53EA\u80FD\u5728\u624B\u673A\u5C4F\u5E55\u4E0A\u624D\u80FD\u770B\u5230\u7684\u4E1C\u897F\uFF0C\u4F60\u5DF2\u7ECF\u9EBB\u4E86\uFF0C\u9E92\u9E9F\u90FD\u80FD\u51FA\u73B0\u4E86\uFF0C\u4E0D\u51FA\u70B9\u8D85\u73B0\u5B9E\u7684\u610F\u5916\u624D\u662F\u610F\u5916\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_13
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 30
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u6B63\u8981\u7EC6\u770B\uFF0C\u5FFD\u7136\u77A5\u5230\u4E00\u9762\u73BB\u7483\u955C\u6EDA\u843D\u5728\u5730\u788E\u6210\u4E00\u7247\uFF0C\u77F3\u9E92\u9E9F\u8DF3\u5230\u788E\u7247\u4E0A\u62FF\u9F3B\u5B50\u62F1\u4E86\u62F1\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 31
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u8FD9\u662F\u8981\u6211\u2026\u2026\u62FC\u8D77\u6765\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 32
+    xiansuos: 
+    type: 3
+    isNoshow: 1
+    lihui: 
+    info: pintu
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 33
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E00\u67C4\u534E\u4E3D\u7684\u73D0\u7405\u73BB\u7483\u955C\u51FA\u73B0\u5728\u4F60\u9762\u524D\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_15
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 34
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u78B0\u78B0\u955C\u5B50\uFF0C\u793A\u610F\u4F60\u62FF\u8D77\u6765\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 1
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 35
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u50CF\u662F\u6323\u8131\u4E86\u4EC0\u4E48\u675F\u7F1A\u4E00\u6837\uFF0C\u77F3\u9E92\u9E9F\u5728\u5730\u4E0A\u6EDA\u4E86\u4E00\u5708\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_17
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 36
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u7EC8\u4E8E\u80FD\u8BF4\u8BDD\u4E86\uFF01\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 37
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u6211\u4E43\u9E92\u9E9F\u795E\u517D\uFF0C\u4E13\u53F8\u62A4\u6301\u6B64\u4E94\u4ED9\u53E4\u89C2\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 38
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u800C\u4F60\u2014\u2014\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 39
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u7A7F\u8D8A\u4E86\u2014\u2014\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 40
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u2026\u2026\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 41
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u5BF9\u4F60\u7684\u62A2\u7B54\u6B32\u8A00\u53C8\u6B62\uFF0C\u6DF1\u6DF1\u5438\u4E86\u53E3\u6C14\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 42
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u4F60\u8FD9\u4E48\u7406\u89E3\uFF0C\u4F60\u8BEF\u5165\u4E86\u67D0\u4E2A\u6545\u4E8B\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 43
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u61C2\uFF0C\u6240\u4EE5\u7CFB\u7EDF\u5728\u54EA\u91CC\uFF0C\u5916\u6302\u53C8\u5728\u54EA\u91CC\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 44
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u770B\u8D77\u6765\u633A\u60F3\u6253\u4F60\u7684\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 45
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u7942\u4F3C\u4E4E\u91CD\u65B0\u5E73\u590D\u4E86\u4E00\u4E0B\u60C5\u7EEA\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 46
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u2026\u2026\u8FD9\u4E2A\u6545\u4E8B\u88AB\u67D0\u79CD\u529B\u91CF\u626D\u66F2\uFF0C\u4F60\u60F3\u8981\u79BB\u5F00\u8FD9\u91CC\uFF0C\u5C31\u5F97\u628A\u8FD9\u4E2A\u6545\u4E8B\u4FEE\u590D\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 47
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u90A3\u4E3A\u4EC0\u4E48\u662F\u6211\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 48
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u6CA1\u6709\u56DE\u7B54\u4F60\u8FD9\u4E2A\u95EE\u9898\uFF0C\u7942\u6B63\u8981\u8BF4\u8BDD\uFF0C\u5FFD\u7136\u773C\u795E\u4E00\u53D8\uFF0C\u5B9A\u5B9A\u770B\u5411\u4F60\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 49
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0D\u3001\u4F60\u610F\u8BC6\u5230\u7942\u4E0D\u662F\u5728\u770B\u4F60\uFF0C\u7942\u662F\u900F\u8FC7\u4F60\uFF0C\u5728\u770B\u7740\u4F60\u80CC\u540E\u2014\u2014"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 50
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u2014\u2014\uFF01\uFF01\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 51
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u2014\u2014\u4F60\u7684\u80CC\u540E\u6709\u4E1C\u897F\u2014\u2014"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 52
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u610F\u8BC6\u5230\u5F3A\u5927\u3001\u9ED1\u6697\u3001\u51B0\u51B7\u7684\u67D0\u79CD\u4E1C\u897F\u5C31\u5728\u4F60\u8EAB\u540E\uFF01"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 53
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u2014\u2014\u90A3\u4E2A\u4E1C\u897F\u6B63\u5728\u770B\u7740\u4F60\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 54
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u987F\u65F6\u6BDB\u9AA8\u609A\u7136\uFF0C\u4F46\u4E0E\u6B64\u540C\u65F6\uFF0C\u4F60\u672C\u80FD\u5730\u77E5\u9053\uFF0C\u4E0D\u80FD\u56DE\u5934\uFF0C\u51B3\u4E0D\u80FD\u56DE\u5934\uFF01"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 55
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u4E00\u52A8\u4E0D\u6562\u52A8\uFF0C\u76F4\u5230\u90A3\u80A1\u5982\u8292\u523A\u5728\u80CC\u7684\u611F\u89C9\u6162\u6162\u6D88\u9000\uFF0C\u4F60\u671B\u7740\u9E92\u9E9F\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 56
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u2026\u2026\u521A\u624D\u54EA\u662F\u4E2A\u4EC0\u4E48\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 57
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u5C31\u662F\u5B83\u626D\u66F2\u4E86\u6545\u4E8B\u3002\u4F46\u6211\u4E0D\u77E5\u9053\u5B83\u662F\u4EC0\u4E48\uFF0C\u54B1\u4EEC\u5F97\u5148\u77E5\u9053\u5B83\u662F\u4EC0\u4E48\uFF0C\u9664\u6389\u5B83\uFF0C\u624D\u80FD\u8BF4\u4FEE\u590D\u6545\u4E8B\u7684\u4E8B\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 58
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u2026\u2026\u4F60\u8BA9\u6211\u7A7A\u624B\u5BF9\u4ED8\u90A3\u4E1C\u897F\uFF1F\u5927\u54E5\u4E0D\u662F\u5427\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 59
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u5728\u8FD9\u91CC\u90A3\u4E1C\u897F\u6CA1\u4EC0\u4E48\u672C\u4E8B\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 60
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u2026\u2026\u90A3\u8FD9\u610F\u601D\u662F\uFF0C\u90A3\u73A9\u610F\u513F\u5176\u5B9E\u76F8\u5F53\u6709\u672C\u4E8B\u5570\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 61
+    xiansuos: 
+    type: 5
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u5FCD\u8010\u4E00\u822C\u53F9\u4E86\u53E3\u6C14\uFF0C\u793A\u610F\u4F60\u6362\u4E0A\u65C1\u8FB9\u5ECA\u4E0B\u667E\u7740\u7684\u51E0\u5957\u5BBD\u888D\u5927\u8896\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 62
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u9009\u4E86\u4E00\u5957\u4E2D\u610F\u7684\u6362\u4E0A\u3002"
+    info2: "\u4F60\u5F88\u662F\u5ACC\u90A3\u4E9B\u5BBD\u888D\u5927\u8896\u9EBB\u70E6\u3002"
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 63
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u8FD8\u633A\u597D\u770B\u7684\u3002\u201D"
+    info2: "\u4F60\uFF1A\u201C\u4E0D\u6362\u4E0D\u6362\uFF0C\u4E00\u4F1A\u513F\u4E07\u4E00\u8981\u8DD1\u8DEF\u6362\u8FD9\u8EAB\u8FD8\u4E0D\u5F97\u6454\u4E2A\u8DDF\u5934\u3002\u201D"
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 64
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u597D\u5566\u597D\u5566\uFF0C\u8D76\u7D27\u8FDB\u53BB\u5427\u3002\u201D"
+    info2: "\u77F3\u9E92\u9E9F\u770B\u8D77\u6765\u5FCD\u4E86\u53C8\u5FCD\u3002                                                                                    
+      \u77F3\u9E92\u9E9F\uFF1A\u201C\u2026\u2026\u884C\u5427\uFF0C\u90A3\u4E00\u4F1A\u513F\u4F60\u53EF\u522B\u54ED\u7740\u8DD1\u51FA\u6765\u6362\u8863\u670D\u3002\u201D"
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 65
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\uFF1A\u201C\u8BB0\u7740\u554A\uFF0C\u4F60\u5728\u624B\u673A\u91CC\u770B\u5230\u7684\u4E1C\u897F\uFF0C\u5173\u4E86\u6444\u50CF\u5934\u5C31\u6CA1\u4E86\uFF0C\u8981\u60F3\u518D\u770B\uFF0C\u5C31\u5F97\u56DE\u4F60\u521A\u624D\u7684\u4F4D\u7F6E\u4ECE\u5934\u6765\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_16
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 66
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u77F3\u9E92\u9E9F\u5F15\u4F60\u8FC8\u5165\u6B63\u6BBF\uFF0C\u90A3\u4E2A\u65B9\u624D\u4F60\u60CA\u9E3F\u4E00\u77A5\u7684\u5C11\u5973\uFF0C\u6B63\u8DEA\u5728\u96D5\u50CF\u524D\uFF0C\u8654\u8BDA\u7948\u7977\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 67
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5979\u7684\u5F71\u5B50\u4E00\u534A\u5728\u6BBF\u5185\uFF0C\u4E00\u534A\u5728\u6BBF\u5916\uFF0C\u7EC6\u5C0F\u7684\u9ED1\u6697\u5728\u6BBF\u5916\u90A3\u4E00\u534A\u7684\u5F71\u5B50\u91CC\u8F7B\u5FAE\u8815\u52A8\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 68
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD8\u662F\u522B\u6253\u6270\u5979\u5427\uFF0C\u77F3\u9E92\u9E9F\u8BA9\u4F60\u5F80\u5DE6\u8FB9\u7A7A\u65E0\u4E00\u7269\u7684\u684C\u5B50\u4E0A\u770B\uFF0C\u4F60\u9690\u7EA6\u770B\u5230\u4E0A\u9762\u4F3C\u4E4E\u6709\u4EC0\u4E48\u5947\u602A\u7684\u82B1\u7EB9\uFF0C\u8FD9\u56DE\u4F60\u5B66\u4E56\u4E86\uFF0C\u8E51\u624B\u8E51\u811A\u5730\u4E3B\u52A8\u4E3E\u8D77\u624B\u673A\u626B\u63CF\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 1
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 69
+    xiansuos: 
+    type: 4
+    isNoshow: 0
+    lihui: 
+    info: "\u8BF7\u5C06\u6444\u50CF\u5934\u5BF9\u51C6\u4E94\u4ED9\u96D5\u50CF\u5DE6\u4FA7                                 
+      \u6728\u684C\u4E0A\u7684\u7965\u4E91\u56FE\u6848:"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 1
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 70
+    xiansuos: 
+    type: 4
+    isNoshow: 1
+    lihui: 
+    info: 
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 71
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0E\u6B64\u540C\u65F6\uFF0C\u4E00\u4E32\u73E0\u4E32\u843D\u5728\u5730\u4E0A\u3002"
+    info2: 
+    bgName: Two_BG_in
+    imgName: Two_BG_in
+    taskcheck: 
+    centerName: task_18
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 72
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0E\u6B64\u540C\u65F6\uFF0C\u4E00\u4E32\u73E0\u4E32\u843D\u5728\u5730\u4E0A\u3002"
+    info2: 
+    bgName: Two_BG_in
+    imgName: Two_BG_in
+    taskcheck: 
+    centerName: task_19
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 73
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u73E0\u4E32\u5760\u5730\u54CD\u52A8\u60CA\u52A8\u5C11\u5973\uFF0C\u770B\u5230\u4F60\u7684\u77AC\u95F4\uFF0C\u5979\u9762\u4E0A\u9732\u51FA\u60CA\u8BE7\u795E\u8272\uFF0C\u5F20\u53E3\u6B32\u8BF4\u4EC0\u4E48\uFF0C\u5374\u6CA1\u6709\u53D1\u51FA\u4E00\u70B9\u58F0\u97F3\uFF0C\u5979\u75DB\u82E6\u5730\u6309\u4F4F\u81EA\u5DF1\u5589\u5499\uFF0C\u8FDE\u8FDE\u540E\u9000\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 74
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u6E05\u695A\u5730\u770B\u5230\uFF0C\u5979\u5F71\u5B50\u91CC\u90A3\u4E9B\u8815\u52A8\u7684\u9ED1\u6697\u52A0\u901F\u4E86\u7FFB\u6D8C\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 75
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5F97\u62FF\u624B\u8FB9\u7684\u4E1C\u897F\u505A\u4E9B\u4EC0\u4E48\uFF0C\u4F60\u98DE\u5FEB\u601D\u8003\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 76
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u3010\u5C06\u73D0\u7405\u955C\u62D6\u62FD\u81F3\u4E94\u4ED9\u96D5\u50CF\u4E0A\u3011"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 1
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 0
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 77
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u73D0\u7405\u955C\u7EFD\u51FA\u4E00\u56E2\u5149\u534E\uFF0C\u5C06\u4E94\u4ED9\u96D5\u5851\u7B3C\u4F4F\uFF0C\u81EA\u5DF1\u5374\u788E\u4E3A\u9F51\u7C89\u2014\u2014"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_20
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 78
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u60CA\u8BB6\u5730\u770B\u5230\u4E94\u4ED9\u96D5\u5851\u5728\u6C24\u6C32\u955C\u5149\u4E0B\u9C9C\u6D3B\u4E86\u8D77\u6765\uFF0C\u4ED6\u4EEC\u52A8\u4E86\uFF01"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 79
+    xiansuos: 
+    type: 2
+    isNoshow: 1
+    lihui: 
+    info: end2
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 01
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 80
+    xiansuos: 0000
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5176\u4E2D\u4E00\u540D\u4ED9\u4EBA\u8D70\u4E0B\u795E\u6848\uFF0C\u6765\u5230\u5C11\u5973\u8EAB\u524D\uFF0C\u5C11\u5973\u77AA\u5927\u53CC\u773C\uFF0C\u4ED9\u4EBA\u9762\u542B\u65E0\u9650\u6148\u60B2\uFF0C\u624B\u4E2D\u8C37\u7A57\u5F80\u5979\u8EAB\u4E0A\u4E00\u62C2\uFF0C"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 81
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\u5F71\u4E2D\u5347\u817E\u8D77\u4E00\u80A1\u9ED1\u70DF\uFF0C\u4F60\u6E05\u695A\u5730\u542C\u5230\u90A3\u4E9B\u5728\u5979\u5F71\u5B50\u91CC\u8815\u52A8\u7684\u9ED1\u6697\u53D1\u51FA\u4E86\u65E0\u58F0\u60E8\u53EB"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 82
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4ED9\u4EBA\u8EAB\u5F71\u6D88\u5931\uFF0C\u8896\u95F4\u9690\u9690\u6709\u4E00\u9875\u6B8B\u7EB8\u98D8\u843D\uFF0C\u88AB\u4F60\u98DE\u5FEB\u6361\u8D77\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 83
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\u4E0D\u53EF\u7F6E\u4FE1\u5730\u770B\u770B\u96D5\u50CF\uFF0C\u53C8\u770B\u770B\u4F60\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: task_21
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 84
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\uFF1A\u201C\u2026\u2026\u4F60\u2014\u2014\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 85
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8270\u96BE\u5730\u5410\u51FA\u4E00\u4E2A\u5B57\uFF0C\u5C11\u5973\u60CA\u5F02\u5730\u629A\u6478\u81EA\u5DF1\u5589\u5499\uFF0C\u4E0D\u518D\u540E\u9000\uFF0C\u770B\u4F60\u7684\u773C\u795E\u4E5F\u6CA1\u90A3\u4E48\u8B66\u60D5\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 86
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5979\u54B3\u55FD\u51E0\u58F0\uFF0C\u4F3C\u662F\u5E73\u590D\u4E86\u4E00\u4E0B\u60C5\u7EEA\uFF0C\u5BF9\u4F60\u8BF4\u7684\u7B2C\u4E00\u53E5\u8BDD\u662F\uFF1A"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 87
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\uFF1A\u201C\u4F60\u3001\u4F60\u4E5F\u770B\u5F97\u5230\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 88
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\u867D\u7136\u6EE1\u9762\u60CA\u7591\uFF0C\u4F46\u4F9D\u7136\u4F18\u96C5\u655B\u8896\u4E3A\u793C\uFF0C\u67D4\u67D4\u81F4\u610F\u3002"
+    info2: "\u5C11\u5973\u770B\u7740\u4F60\u4E00\u8EAB\u660E\u663E\u4E0D\u5408\u65F6\u4EE3\u7684\u201C\u5947\u88C5\u5F02\u670D\u201D\uFF0C\u590D\u53C8\u795E\u8272\u6212\u5907\u5730\u5F80\u540E\u9000\u4E86\u4E00\u6B65\u3002 "
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 89
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5C11\u5973\uFF1A\u201C\u5974\u5BB6\u57CE\u5317\u4EFB\u6C0F\uFF0C\u6765\u4E94\u4ED9\u89C2\u4E0A\u9999\u7948\u798F\uFF0C\u521A\u624D\u793C\u4EEA\u4E0D\u5468\uFF0C\u591A\u6709\u5F97\u7F6A\u3002\u201D"
+    info2: "\u5C11\u5973\uFF1A\u201C\u2026\u2026\u4F60\u4E0D\u77E5\u9053\u4ECA\u65E5\u4E94\u4ED9\u89C2\u88AB\u6211\u4EFB\u5BB6\u5305\u4E86\u4E48\uFF1F\u201D\u4F60\u5FC3\u91CC\u53EB\u82E6\uFF0C\u540E\u6094\u6CA1\u542C\u9E92\u9E9F\u7684\u8BDD\uFF0C\u5F80\u540E\u9000\u4E86\u4E00\u6B65\u4E3E\u8D77\u53CC\u624B\uFF0C\u793A\u610F\u81EA\u5DF1\u6CA1\u6709\u6076\u610F\uFF0C\u5C11\u5973\u795E\u8272\u7A0D\u5B89\u3002 "
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 90
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u60F3\u8BA9\u9E92\u9E9F\u51FA\u6765\u4F5C\u8BC1\u4F60\u4E0D\u662F\u574F\u4EBA\uFF0C\u56DE\u5934\u4E00\u770B\u9E92\u9E9F\u4E0D\u77E5\u9053\u4EC0\u4E48\u65F6\u5019\u4E0D\u89C1\u4E86\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 91
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8FD9\u53EF\u771F\u662F\u9E9F\u5230\u7528\u65F6\u5C31\u4E0D\u89C1\u554A\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 92
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u8BE5\u600E\u4E48\u964D\u4F4E\u4EFB\u5C0F\u59D0\u5BF9\u4F60\u7684\u6000\u7591\u5462\uFF1F"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 93
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u8111\u4E2D\u98DE\u8F6C\uFF0C\u60F3\u8D77\u524D\u9762\u4EFB\u5C0F\u59D0\u95EE\u8BDD\uFF0C\u4F60\u6B63\u8272\u9053\uFF1A"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 94
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u662F\u7684\uFF0C\u6211\u770B\u5F97\u89C1\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 95
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4EFB\u5C0F\u59D0\u795E\u8272\u4E00\u52A8\uFF0C\u4E00\u77AC\u95F4\u5979\u4F3C\u4E4E\u5FC3\u601D\u767E\u8F6C\u5343\u56DE\uFF0C\u6700\u540E\u67D4\u67D4\u5BF9\u4F60\u53C8\u884C\u4E86\u4E00\u793C\uFF1A\u201C\u5974\u5BB6\u5C0F\u5B57\u89C2\u7167\uFF0C\u60A8\u53EB\u6211\u963F\u7167\u5C31\u597D\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 96
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u4EFB\u5C0F\u59D0\uFF0C\u6211\u771F\u4E0D\u662F\u4EC0\u4E48\u53EF\u7591\u7684\u4EBA\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 97
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u9664\u4E86\u4F60\u662F\u4E2A\u73B0\u4EE3\u4EBA\u8FD9\u4E00\u8282\uFF0C\u4F60\u7AF9\u7B52\u5012\u8C46\u5B50\u4E00\u822C\u628A\u4F60\u600E\u4E48\u8BEF\u5165\u4E94\u4ED9\u89C2\uFF0C\u73B0\u5728\u51FA\u4E0D\u53BB\u4E86\u7684\u4E8B\u5168\u8DDF\u4EFB\u5C0F\u59D0\u8BF4\u4E86\u3002
+      \u4F60\u6EE1\u6000\u5E0C\u671B\u5730\u770B\u5979\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 98
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u4EFB\u5C0F\u59D0\uFF0C\u73B0\u5728\u662F\u4EC0\u4E48\u65F6\u5019\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 99
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4EFB\u5C0F\u59D0\uFF1A\u201C\u5927\u5510\u8D1E\u5143\u5E74\u95F4\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 100
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u54E6\uFF0C\u73B0\u5728\u662F\u5510\u671D\uFF0C\u4F46\u2026\u2026\u4E0D\u5BF9\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 101
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u60F3\u8D77\u6765\u5728\u95E8\u53E3\u770B\u5230\u7684\u6E05\u671D\u7684\u77F3\u533E\u3001\u660E\u4EE3\u7684\u77F3\u7F8A\uFF0C\u8FD8\u6709\u90A3\u9996\u5B8B\u671D\u82CF\u8F7C\u5199\u7684\u8BD7\u2026\u2026\u8FD9\u4E9B\u53EF\u90FD\u5728\u5510\u671D\u540E\u9762\u554A\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 102
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E0D\u5BF9\uFF0C\u4E8B\u60C5\u53EF\u80FD\u4E0D\u662F\u9E92\u9E9F\u8BF4\u7684\u90A3\u6837\uFF0C\u6050\u6015\u91CC\u9762\u8FD8\u6709\u66F4\u6DF1\u7684\u4E8B\u513F\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 103
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\u5140\u81EA\u60F3\u7740\uFF0C\u95EE\u9053\uFF1A"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 104
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4F60\uFF1A\u201C\u4EFB\u5C0F\u59D0\uFF0C\u4F60\u77E5\u9053\u521A\u624D\u90A3\u4E2A\u9ED1\u5F71\uFF0C\u662F\u4EC0\u4E48\u5417\uFF1F\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 105
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u963F\u7167\u7709\u5934\u8F7B\u8E59\uFF0C\u5979\u6293\u7740\u8863\u8896\uFF0C\u8F7B\u8F7B\u6447\u5934\uFF0C\u4F4E\u58F0\u9053\uFF1A"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 106
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4EFB\u5C0F\u59D0\uFF1A\u201C\u90A3\u662F\u2026\u2026\u592A\u9634\u5C06\u519B\u3002\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 107
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4EFB\u5C0F\u59D0\uFF1A\u201C\u2026\u2026\u4E00\u5207\u90FD\u662F\u4ECE\u5341\u5E74\u524D\uFF0C\u7236\u4EB2\u9047\u5230\u90A3\u4E2A\u5947\u602A\u7684\u6D77\u5916\u65B9\u58EB\u5F00\u59CB\u7684\u2026\u2026\u201D"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 2
+    texiao: 
+    guochang: 
+    isguochangskip: 0

+ 8 - 0
Assets/AssetData/Excel/AutoCreateAsset/task1.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 483f2bb60eb224acba7a860fd22797ab
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 548 - 0
Assets/AssetData/Excel/AutoCreateAsset/task2.asset

@@ -0,0 +1,548 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4182afbe5a32c49dca2581d60c66652c, type: 3}
+  m_Name: task2
+  m_EditorClassIdentifier: 
+  items:
+  - id: 1
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u90A3\u662F\u5341\u5E74\u524D\u7684\u4E94\u6708\u521D\u4E94\uFF0C\u6211\u8BB0\u5F97\u5F88\u6E05\u695A\uFF0C\u6211\u90A3\u65F6\u5019\u4E03\u5C81\uFF0C\u8FD8\u662F\u8DB4\u5728\u963F\u5A18\u819D\u4E0A\u5435\u7740\u8981\u5403\u6885\u82B1\u9165\u7684\u5E74\u7EAA\u3002
+      \u90A3\u5929\u963F\u7239\u96BE\u5F97\u559C\u6C14\u6D0B\u6D0B\u5730\u56DE\u6765\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 2
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6211\u5BB6\u662F\u505A\u8239\u8FD0\u751F\u610F\u7684\uFF0C\u5F53\u65F6\u7B97\u4E2D\u7B49\u5546\u6237\uFF0C\u6709\u4E24\u8258\u5927\u8239\uFF0C\u4E94\u8258\u5C0F\u8239\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 3
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u5927\u8239\u4E00\u8258\u8DD1\u5927\u98DF\u7684\u7EBF\uFF0C\u4E00\u8258\u8DD1\u65E5\u672C\uFF0C\u5C0F\u8239\u5219\u628A\u5E26\u56DE\u6765\u7684\u5916\u56FD\u8D27\u8FD0\u5230\u957F\u5B89\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 4
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u963F\u5A18\u6E29\u67D4\uFF0C\u963F\u7239\u52E4\u52C9\uFF0C\u4ED6\u4EEC\u90FD\u975E\u5E38\u75BC\u6211\uFF0C\u6211\u4EEC\u4E00\u5BB6\u4EBA\u548C\u548C\u6C14\u6C14\uFF0C\u65E5\u5B50\u8FC7\u5F97\u7EA2\u7EA2\u706B\u706B\u2014\u2014\u76F4\u5230\u5341\u5E74\u524D\u7684\u5143\u6708\u521D\u4E94\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 5
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u963F\u7239\u5728\u6E2F\u53E3\u7FD8\u9996\u4EE5\u76FC\u3001\u7406\u5E94\u5982\u5F80\u5E38\u4E00\u6837\uFF0C\u6EE1\u8F7D\u73BB\u7483\u3001\u739B\u7459\u3001\u4E73\u9999\u3001\u6CA1\u836F\u3001\u5730\u6BEF\u3001\u5BB6\u5177\u8FD9\u4E9B\u8D27\u7269\u7684\u5546\u8239\u6CA1\u6709\u56DE\u6765\uFF0C\u56DE\u6765\u7684\u522B\u5BB6\u5546\u8239\u634E\u6765\u7684\u4FE1\u606F\uFF1A\u6211\u5BB6\u7684\u8239\uFF0C\u6C89\u4E86\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 6
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u963F\u7239\u5728\u6E2F\u53E3\u7FD8\u9996\u4EE5\u76FC\u3001\u7406\u5E94\u5982\u5F80\u5E38\u4E00\u6837\uFF0C\u6EE1\u8F7D\u73BB\u7483\u3001\u739B\u7459\u3001\u4E73\u9999\u3001\u6CA1\u836F\u3001\u5730\u6BEF\u3001\u5BB6\u5177\u8FD9\u4E9B\u8D27\u7269\u7684\u5546\u8239\u6CA1\u6709\u56DE\u6765\uFF0C\u56DE\u6765\u7684\u522B\u5BB6\u5546\u8239\u634E\u6765\u7684\u4FE1\u606F\uFF1A\u6211\u5BB6\u7684\u8239\uFF0C\u6C89\u4E86\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 7
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6240\u6709\u8239\u5458\u548C\u8D27\u7269\uFF0C\u5168\u90E8\u88AB\u98D3\u98CE\u57CB\u846C\u5728\u4E86\u6D77\u5E95\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 8
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u90A3\u5929\u6211\u8DDF\u5F80\u5E38\u4E00\u6837\uFF0C\u5728\u963F\u7239\u56DE\u5BB6\u7684\u65F6\u5019\u6251\u5230\u4ED6\u8EAB\u4E0A\uFF0C\u5411\u4ED6\u8BA8\u70B9\u5FC3\u5403\uFF0C\u7ED3\u679C\u88AB\u4ED6\u4E00\u628A\u63A8\u5F00\u2014\u2014
+      \u6211\u7684\u5BB6\uFF0C\u5728\u90A3\u4E00\u5929\u8F70\u7136\u5012\u584C\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 9
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6211\u5BB6\u6240\u6709\u7684\u8239\u90FD\u88AB\u6765\u8BA8\u503A\u7684\u503A\u4E3B\u4E00\u62A2\u800C\u5149\uFF0C\u6BCF\u5929\u90FD\u6709\u4EBA\u4E0A\u95E8\u8BA8\u503A\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 10
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6211\u5BB6\u95E8\u4E0A\u88AB\u4EBA\u6CFC\u732A\u8840\u3001\u963F\u7239\u88AB\u503A\u4E3B\u5835\u5728\u8857\u4E0A\u6253\uFF0C\u5BB6\u91CC\u7684\u4EC6\u5987\u90FD\u9063\u6563\uFF0C\u5C31\u5269\u51E0\u4E2A\u767D\u53D1\u82CD\u82CD\u7684\u8001\u4EC6\u3002 "
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 11
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6211\u8DDF\u7740\u963F\u5A18\u5B66\u6D17\u8863\u670D\u3001\u5B66\u505A\u996D\uFF0C\u963F\u5A18\u51FA\u95E8\u90FD\u8981\u62FF\u5E37\u5E3D\u76D6\u4F4F\u8138\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 12
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u800C\u963F\u7239\u53D8\u5F97\u8D8A\u6765\u8D8A\u66B4\u8E81\uFF0C\u6211\u5C31\u662F\u5728\u90A3\u65F6\u5019\uFF0C\u56E0\u4E3A\u4E0D\u614E\u6454\u4E86\u7897\uFF0C\u6328\u4E86\u751F\u5E73\u7B2C\u4E00\u987F\u6253\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 13
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: " \u6328\u6253\u90A3\u5929\uFF0C\u6211\u5E26\u7740\u6EE1\u624B\u7684\u8840\u6CE1\u5728\u88AB\u5B50\u91CC\u54ED\uFF0C\u963F\u5A18\u62B1\u7740\u6211\u4E5F\u54ED\uFF0C\u4E00\u76F4\u54ED\u5230\u5929\u4EAE\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 14
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u6211\u4EE5\u4E3A\u8FD9\u822C\u843D\u9B44\u7EDD\u671B\u7684\u65E5\u5B50\u5C31\u8981\u8FC7\u4E00\u8F88\u5B50\u4E86\uFF0C\u76F4\u5230\u7AEF\u5348\u90A3\u4E00\u5929\uFF0C\u963F\u7239\u7834\u5929\u8352\u5730\u7B11\u7740\u56DE\u6765\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 15
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4ED6\u53C8\u662F\u6211\u8BB0\u5FC6\u4E2D\u90A3\u4E2A\u6E29\u67D4\u7684\u7236\u4EB2\u4E86\u3002
+      \u4ED6\u628A\u6211\u62B1\u5728\u6000\u91CC\uFF0C\u4ECE\u8896\u5B50\u91CC\u638F\u51FA\u4E00\u9897\u7CD6\u7ED9\u6211\u5403\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 16
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u539F\u6765\uFF0C\u4ED6\u9047\u5230\u4E86\u4E00\u4E2A\u6D77\u5916\u6765\u7684\u65B9\u58EB\uFF0C\u90A3\u4EBA\u6388\u4E86\u4ED6\u4E00\u4E9B\u673A\u5B9C\uFF0C\u4ED6\u5728\u65B9\u58EB\u6307\u70B9\u7684\u5730\u65B9\u6316\u51FA\u4E86\u4E00\u952D\u8D64\u91D1\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 17
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u963F\u7239\u62FF\u90A3\u952D\u8D64\u91D1\u5F53\u672C\u94B1\uFF0C\u505A\u4E86\u5C0F\u672C\u751F\u610F\uFF0C\u65B9\u58EB\u7EE7\u7EED\u70B9\u62E8\uFF0C\u963F\u7239\u6323\u5F97\u8D8A\u6765\u8D8A\u591A\uFF0C\u5BB6\u91CC\u4E5F\u6709\u4E86\u6B22\u7B11\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 18
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u76F4\u5230\u67D0\u5929\uFF0C\u65B9\u58EB\u5BF9\u963F\u7239\u8BF4\uFF0C\u8FD9\u73ED\u7D27\u5DF4\u5DF4\u7684\u751F\u610F\u4E5F\u5C31\u7CCA\u53E3\uFF0C\u82E5\u60F3\u4E1C\u5C71\u518D\u8D77\uFF0C\u4ED6\u6709\u4E00\u4E2A\u4E00\u52B3\u6C38\u9038\u7684\u6CD5\u5B50\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 19
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u4E8E\u662F\uFF0C\u963F\u7239\u5728\u4E00\u4E2A\u6DF1\u591C\uFF0C\u5192\u7740\u5BB5\u7981\u98CE\u9669\uFF0C\u4EB2\u81EA\u62B1\u56DE\u4E86\u4E00\u5C0A\u4ECE\u65B9\u58EB\u90A3\u91CC\u8FCE\u56DE\u7684\u795E\u50CF\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 20
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u65B9\u58EB\u544A\u8BC9\u963F\u7239\uFF0C\u53EA\u8981\u4F9B\u5949\u8FD9\u5C0A\u795E\u50CF\uFF0C\u4ED6\u5C31\u4F1A\u8D22\u6E90\u6EDA\u6EDA\uFF0C\u4E0D\u51FA\u4E00\u4E24\u5E74\u5C31\u6BD4\u4EE5\u524D\u8FD8\u8981\u5174\u65FA\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 1
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 21
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u795E\u50CF\u5C31\u6B64\u88AB\u4F9B\u5949\u5728\u963F\u7239\u4E66\u623F\u6697\u5BA4\u4E4B\u5185\u3002\u9664\u4E86\u963F\u7239\uFF0C\u6CA1\u6709\u4EFB\u4F55\u4E00\u4E2A\u4EBA\u89C1\u8FC7\u90A3\u5C0A\u795E\u50CF\u3002
+      \u90A3\u5C0A\u795E\u50CF\u7684\u540D\u5B57\u53EB\u2014\u2014\u592A\u9634\u5C06\u519B\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_main_bg2
+    taskcheck: 
+    centerName: 
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 0
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0
+  - id: 22
+    xiansuos: 
+    type: 0
+    isNoshow: 0
+    lihui: 
+    info: "\u795E\u50CF\u5C31\u6B64\u88AB\u4F9B\u5949\u5728\u963F\u7239\u4E66\u623F\u6697\u5BA4\u4E4B\u5185\u3002\u9664\u4E86\u963F\u7239\uFF0C\u6CA1\u6709\u4EFB\u4F55\u4E00\u4E2A\u4EBA\u89C1\u8FC7\u90A3\u5C0A\u795E\u50CF\u3002
+      \u90A3\u5C0A\u795E\u50CF\u7684\u540D\u5B57\u53EB\u2014\u2014\u592A\u9634\u5C06\u519B\u3002"
+    info2: 
+    bgName: two_main_bg
+    imgName: two_end
+    taskcheck: 
+    centerName: one_end
+    centersize: 1
+    lihuisize: 1
+    perbName: 
+    isClose: 1
+    isTuo: 0
+    daojus: 
+    isClosebtShow: 0
+    isTextNext: 1
+    isARSao: 0
+    arid: 0
+    texiao: 
+    guochang: 
+    isguochangskip: 0

+ 8 - 0
Assets/AssetData/Excel/AutoCreateAsset/task2.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bb136aeb0824747fdbc2cbf036365c9c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 25 - 0
Assets/AutoPlayer.cs

@@ -0,0 +1,25 @@
+using Nfynt;
+using UnityEngine;
+
+public class AutoPlayer : MonoBehaviour
+{
+	public NVideoPlayer VidPlayer = null;
+	public string url = "";
+	// Start is called once before the first execution of Update after the MonoBehaviour is created
+	void Start()
+    {
+		//Invoke("SetSourceUrl",3f);
+    }
+
+	public void SetSourceUrl()
+	{
+		VidPlayer.Stop();
+		VidPlayer.Config.VideoSrcPath = "https://wx-model-1317557471.cos.ap-shanghai.myqcloud.com/unity6test/StreamingAssets/" +url+".mp4";
+		Invoke("PlayPauseBtn", 1f);
+	}
+
+	public void PlayPauseBtn()
+	{
+		VidPlayer.Play();
+	}
+}

+ 1 - 1
Packages/com.ghz.avideoplayer/Editor/Scripts/MediaReferenceEditor.cs.meta → Assets/AutoPlayer.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 56fb02c4efc59ef4a8b6328867f1a0bc
+guid: 7c44286f6731e4b27ab62ae0a406264b
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/macOS/AVProVideo.bundle/Contents.meta → Assets/Editor.meta 2

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 10782480ad6dd3947941d3f86e050d69
+guid: 3fb20d3584629438498d9f91e55b8a67
 folderAsset: yes
 DefaultImporter:
   externalObjects: {}

+ 1 - 1
Packages/com.ghz.avideoplayer/Runtime/Plugins/iOS/AVProVideo.xcframework/Info.plist.meta → Assets/Editor.meta 2.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: fa6c2ef45a33c45789b51b4fe9e5519d
+guid: 4a815eb96b92948b4915764a1d3bc2e6
 DefaultImporter:
   externalObjects: {}
   userData: 

+ 267 - 0
Assets/Editor/BuildExcelEditor.cs

@@ -0,0 +1,267 @@
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+public class BuildExcelWindow : EditorWindow
+{
+    // 定义一个静态变量来持有选中的ScriptableObject引用
+    public static TaskConfig selectedObject;
+    [MenuItem("MyTools/addexcel")]
+    public static void ExportScriptableObjectToExcel()
+    {
+        string path = EditorUtility.OpenFilePanel("Select File", "", "");
+        if (!string.IsNullOrEmpty(path))
+        {
+            string pp = path.Split('/')[path.Split('/').Length - 2] +"/"+ path.Split('/')[path.Split('/').Length - 1];
+            Debug.Log("Selected file: " + pp);
+            var obj = AssetDatabase.LoadAssetAtPath<TaskConfig>(pp);
+            if (obj != null)
+            {
+                Selection.activeObject = obj;
+                Debug.Log("Selected MyScriptableObject: " + obj.name);
+                StringBuilder csv = new StringBuilder();
+
+                // 添加标题行
+                //   csv.AppendLine("Name,Number");
+
+                for (int i = 0; i < obj.TaskList.Count; i++)
+                {
+                    string xs = "";
+                    if (obj.TaskList[i].xiansuos != null && obj.TaskList[i].xiansuos.Length > 0)
+                    {
+                        for (int j = 0; j < obj.TaskList[i].xiansuos.Length; j++)
+                        {
+                            if (j >= obj.TaskList[i].xiansuos.Length - 1)
+                            {
+                                xs += obj.TaskList[i].xiansuos[j];
+
+                            }
+                            else
+                            {
+                                xs += obj.TaskList[i].xiansuos[j] + "|";
+
+                            }
+                        }
+                    }
+                    string dj = "";
+                    if (obj.TaskList[i].daojus != null && obj.TaskList[i].daojus.Length > 0)
+                    {
+                        for (int j = 0; j < obj.TaskList[i].daojus.Length; j++)
+                        {
+                            if (j >= obj.TaskList[i].daojus.Length - 1)
+                            {
+                                dj += obj.TaskList[i].daojus[j];
+
+                            }
+                            else
+                            {
+                                dj += obj.TaskList[i].daojus[j] + "|";
+
+                            }
+                        }
+                    }
+
+                    // 添加数据行
+                    csv.AppendLine($"{i + 1},{obj.TaskList[i].info},{obj.TaskList[i].info2}" +
+                        $",{xs}" +
+                        $",{obj.TaskList[i].type}" +
+                        $",{obj.TaskList[i].isNoshow}" +
+                        $",{obj.TaskList[i].bgName}" +
+                        $",{obj.TaskList[i].imgName}" +
+                        $",{obj.TaskList[i].taskcheck}" +
+                        $",{obj.TaskList[i].centerName}" +
+                        $",{obj.TaskList[i].lihui}" +
+                        $",{obj.TaskList[i].texiao}" +
+                        $",{obj.TaskList[i].guochang}" +
+                        $",{obj.TaskList[i].isguochangskip}" +
+                        $",{obj.TaskList[i].lihuisize}" +
+                        $",{obj.TaskList[i].centersize}" +
+                        $",{obj.TaskList[i].perbName}" +
+                        $",{obj.TaskList[i].isClose}" +
+                        $",{obj.TaskList[i].isTuo}" +
+                        $",{dj}" +
+                        $",{obj.TaskList[i].isClosebtShow}" +
+                        $",{obj.TaskList[i].isTextNext}" +
+                        $",{obj.TaskList[i].isARSao}" +
+                        $",{obj.TaskList[i].arid}");
+                }
+
+                string nameWithoutExtension = GetFileNameWithoutExtension(path);
+                Debug.Log(nameWithoutExtension);
+                // 写入文件
+                File.WriteAllText(Application.streamingAssetsPath + "/" + nameWithoutExtension + ".csv", csv.ToString());
+            }
+        }
+    }
+    public static string GetFileNameWithoutExtension(string filePath)
+    {
+        return Path.GetFileNameWithoutExtension(filePath);
+    }
+    [MenuItem("MyTools/Excel Window",priority = 100)]
+    public static void ShowReadExcelWindow()
+    {
+        BuildExcelWindow window = GetWindow<BuildExcelWindow>(true);
+        window.Show();
+        window.minSize = new Vector2(475,475);
+    }
+
+    //Excel读取路径,绝对路径,放在Assets同级路径
+    private static string excelReadAbsolutePath;
+
+    //自动生成C#类文件路径,绝对路径
+    private static string scriptSaveAbsolutePath;
+    private static string scriptSaveRelativePath;
+    //自动生成Asset文件路径,相对路径
+    private static string assetSaveRelativePath;
+
+    private List<string> fileNameList = new List<string>();
+    private List<string> filePathList = new List<string>();
+
+    private void Awake()
+    {
+        titleContent.text = "Excel配置表读取";
+
+        excelReadAbsolutePath = Application.dataPath.Replace("Assets","Excel");
+        scriptSaveAbsolutePath = Application.dataPath + CheckEditorPath("/Script/Excel/AutoCreateCSCode");
+        scriptSaveRelativePath = CheckEditorPath("Assets/Script/Excel/AutoCreateCSCode");
+        assetSaveRelativePath = CheckEditorPath("Assets/AssetData/Excel/AutoCreateAsset");
+    }
+
+    private void OnEnable()
+    {
+        RefreshExcelFile();
+    }
+
+    private void OnDisable()
+    {
+        fileNameList.Clear();
+        filePathList.Clear();
+    }
+
+    private Vector2 scrollPosition = Vector2.zero;
+    private void OnGUI()
+    {
+        GUILayout.Space(10);
+
+        scrollPosition = GUILayout.BeginScrollView(scrollPosition,GUILayout.Width(position.width),GUILayout.Height(position.height));
+
+        //展示路径
+        GUILayout.BeginHorizontal(GUILayout.Height(20));
+        if(GUILayout.Button("Excel读取路径",GUILayout.Width(100)))
+        {
+            EditorUtility.OpenWithDefaultApp(excelReadAbsolutePath);
+            Debug.Log(excelReadAbsolutePath);
+        }
+        if(GUILayout.Button("Script保存路径",GUILayout.Width(100)))
+        {
+            SelectObject(scriptSaveRelativePath);
+        }
+        if(GUILayout.Button("Asset保存路径",GUILayout.Width(100)))
+        {
+            SelectObject(assetSaveRelativePath);
+        }
+        GUILayout.EndHorizontal();
+
+        GUILayout.Space(5);
+
+        //Excel列表
+
+        GUILayout.Label("Excel列表:");
+        for(int i = 0; i < fileNameList.Count; i++)
+        {
+            GUILayout.BeginHorizontal("Box",GUILayout.Height(40));
+
+            GUILayout.Label($"{i}:","Titlebar Foldout",GUILayout.Width(30),GUILayout.Height(35));
+            GUILayout.Box(fileNameList[i],"MeTransitionBlock",GUILayout.MinWidth(200),GUILayout.Height(35));
+            GUILayout.Space(10);
+
+            //生成CS代码
+            if(GUILayout.Button("Create Script",GUILayout.Width(100),GUILayout.Height(30)))
+            {
+                ExcelDataReader.ReadOneExcelToCode(filePathList[i],scriptSaveAbsolutePath);
+            }
+            //生成Asset文件
+            if(GUILayout.Button("Create Asset",GUILayout.Width(100),GUILayout.Height(30)))
+            {
+                ExcelDataReader.CreateOneExcelAsset(filePathList[i],assetSaveRelativePath);
+            }
+
+            GUILayout.EndHorizontal();
+            GUILayout.Space(5);
+        }
+        GUILayout.Space(10);
+
+        //一键处理所有Excel
+
+        GUILayout.Label("一键操作:");
+        GUILayout.BeginHorizontal("Box",GUILayout.Height(40));
+
+        GUILayout.Label("all","Titlebar Foldout",GUILayout.Width(30),GUILayout.Height(35));
+        GUILayout.Box("All Excel","MeTransitionBlock",GUILayout.MinWidth(200),GUILayout.Height(35));
+        GUILayout.Space(10);
+
+        if(GUILayout.Button("Create Script",GUILayout.Width(100),GUILayout.Height(30)))
+        {
+            ExcelDataReader.ReadAllExcelToCode(excelReadAbsolutePath,scriptSaveAbsolutePath);
+        }
+        if(GUILayout.Button("Create Asset",GUILayout.Width(100),GUILayout.Height(30)))
+        {
+            ExcelDataReader.CreateAllExcelAsset(excelReadAbsolutePath,assetSaveRelativePath);
+        }
+        GUILayout.EndHorizontal();
+
+        //
+        GUILayout.Space(20);
+        //
+        GUILayout.EndScrollView();
+    }
+
+    //读取指定路径下的Excel文件名
+    private void RefreshExcelFile()
+    {
+        fileNameList.Clear();
+        filePathList.Clear();
+
+        if(!Directory.Exists(excelReadAbsolutePath))
+        {
+            Debug.LogError("无效路径:" + excelReadAbsolutePath);
+            return;
+        }
+        string[] excelFileFullPaths = Directory.GetFiles(excelReadAbsolutePath,"*.xlsx");
+
+        if(excelFileFullPaths == null || excelFileFullPaths.Length == 0)
+        {
+            Debug.LogError(excelReadAbsolutePath + "路径下没有找到Excel文件");
+            return;
+        }
+
+        filePathList.AddRange(excelFileFullPaths);
+        for(int i = 0; i < filePathList.Count; i++)
+        {
+            fileNameList.Add(Path.GetFileName(filePathList[i]));
+        }
+        Debug.Log("找到Excel文件:" + fileNameList.Count + "个");
+    }
+
+    private void SelectObject(string targetPath)
+    {
+        Object targetObj = AssetDatabase.LoadAssetAtPath<Object>(targetPath);
+        EditorGUIUtility.PingObject(targetObj);
+        Selection.activeObject = targetObj;
+        Debug.Log(targetPath);
+    }
+
+    private static string CheckEditorPath(string path)
+    {
+#if UNITY_EDITOR_WIN
+        return path.Replace("/","\\");
+#elif UNITY_EDITOR_OSX
+        return path.Replace("\\","/");
+#else
+        return path;
+#endif
+    }
+}

+ 1 - 1
Packages/com.ghz.avideoplayer/Editor/Scripts/PostProcessBuild_Android.cs.meta → Assets/Editor/BuildExcelEditor.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 532847372d6add8498ce0da18f7a619e
+guid: 5b9eab2150a524245878230ffd5dcadc
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 438 - 0
Assets/Editor/ExcelCodeCreater.cs

@@ -0,0 +1,438 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Text;
+using System.Linq;
+using System;
+
+public class ExcelCodeCreater
+{
+
+    //创建代码,生成数据C#类
+    public static string CreateCodeStrByExcelData(ExcelMediumData excelMediumData)
+    {
+        if(excelMediumData == null)
+            return null;
+
+        //行数据类名
+        string itemClassName = excelMediumData.excelName + "ExcelItem";
+        //整体数据类名
+        string dataClassName = excelMediumData.excelName + "ExcelData";
+
+        //开始生成类
+        StringBuilder classSource = new StringBuilder();
+        classSource.AppendLine("/*Auto Create, Don't Edit !!!*/");
+        classSource.AppendLine();
+        //添加引用
+        classSource.AppendLine("using UnityEngine;");
+        classSource.AppendLine("using System.Collections.Generic;");
+        classSource.AppendLine("using System;");
+        classSource.AppendLine("using System.IO;");
+        classSource.AppendLine();
+        //生成CSharp数据类
+        if(excelMediumData.isCreateCSharp)
+        {
+            //生成行数据类,记录每行数据
+            classSource.AppendLine(CreateExcelRowItemClass(itemClassName,excelMediumData));
+            classSource.AppendLine();
+            //生成整体数据类,记录整个Excel的所有行数据
+            classSource.AppendLine(CreateExcelAllDataClass(dataClassName,itemClassName,excelMediumData));
+            classSource.AppendLine();
+        }
+        //生成Asset创建类
+        if(excelMediumData.isCreateAssignment)
+        {
+            //生成Asset操作类,用于自动创建Excel对应的Asset文件并赋值
+            classSource.AppendLine(CreateExcelAssetClass(excelMediumData));
+            classSource.AppendLine();
+        }
+        //
+        return classSource.ToString();
+    }
+
+    //----------
+
+    //生成行数据类
+    private static string CreateExcelRowItemClass(string itemClassName,ExcelMediumData excelMediumData)
+    {
+        //生成Excel行数据类
+        StringBuilder classSource = new StringBuilder();
+        //类名
+        classSource.AppendLine("[Serializable]");
+        classSource.AppendLine($"public class {itemClassName} : ExcelItemBase");
+        classSource.AppendLine("{");
+        //声明所有字段
+        for(int i = 0; i < excelMediumData.propertyNameArray.Length; i++)
+        {
+            //跳过注释字段
+            if(excelMediumData.annotationColList.Contains(i))
+                continue;
+
+            //添加注释
+            if(i < excelMediumData.propertyNodeArray.Length)
+            {
+                string propertyNode = excelMediumData.propertyNodeArray[i];
+                if(!string.IsNullOrEmpty(propertyNode))
+                {
+                    classSource.AppendLine("\t/// <summary>");
+                    classSource.AppendLine($"\t/// {propertyNode}");
+                    classSource.AppendLine("\t/// </summary>>");
+                }
+            }
+
+            //声明行数据类的字段
+            string propertyName = excelMediumData.propertyNameArray[i];
+            string propertyType = excelMediumData.propertyTypeArray[i];
+            string typeStr = GetPropertyType(propertyType);
+            classSource.AppendLine($"\tpublic {typeStr} {propertyName};");
+        }
+        classSource.AppendLine("}");
+        return classSource.ToString();
+    }
+
+    //----------
+
+    //生成整体数据类
+    private static string CreateExcelAllDataClass(string dataClassName,string itemClassName,ExcelMediumData excelMediumData)
+    {
+        StringBuilder classSource = new StringBuilder();
+        //类名
+        classSource.AppendLine($"public class {dataClassName} : ExcelDataBase<{itemClassName}>");
+        classSource.AppendLine("{");
+        //声明字段,行数据类数组
+        classSource.AppendLine($"\tpublic {itemClassName}[] items;");
+        classSource.AppendLine();
+        //id字段类型
+        string idTypeStr = GetPropertyType(excelMediumData.propertyTypeArray[0]);
+        //声明字典
+        classSource.AppendLine($"\tpublic Dictionary<{idTypeStr},{itemClassName}> itemDic = new Dictionary<{idTypeStr},{itemClassName}>();");
+        classSource.AppendLine();
+        //字段初始化方法
+        classSource.AppendLine("\tpublic void Init()");
+        classSource.AppendLine("\t{");
+        classSource.AppendLine("\t\titemDic.Clear();");
+        classSource.AppendLine("\t\tif(items != null && items.Length > 0)");
+        classSource.AppendLine("\t\t{");
+        classSource.AppendLine("\t\t\tfor(int i = 0; i < items.Length; i++)");
+        classSource.AppendLine("\t\t\t{");
+        classSource.AppendLine("\t\t\t\titemDic.Add(items[i].id, items[i]);");
+        classSource.AppendLine("\t\t\t}");
+        classSource.AppendLine("\t\t}");
+        classSource.AppendLine("\t}");
+        classSource.AppendLine();
+        //字典获取方法
+        classSource.AppendLine($"\tpublic {itemClassName} Get{itemClassName}({idTypeStr} id)");
+        classSource.AppendLine("\t{");
+        classSource.AppendLine("\t\tif(itemDic.ContainsKey(id))");
+        classSource.AppendLine("\t\t\treturn itemDic[id];");
+        classSource.AppendLine("\t\telse");
+        classSource.AppendLine("\t\t\treturn null;");
+        classSource.AppendLine("\t}");
+
+        //每个字段Get函数
+        classSource.AppendLine("\t#region --- Get Method ---");
+        classSource.AppendLine();
+
+        for(int i = 1; i < excelMediumData.propertyNameArray.Length; i++)
+        {
+            if(excelMediumData.annotationColList.Contains(i))
+                continue;
+            string propertyName = excelMediumData.propertyNameArray[i];
+            string propertyType = excelMediumData.propertyTypeArray[i];
+            //每个字段Get函数
+            classSource.AppendLine(CreateCodePropertyMethod(itemClassName,idTypeStr,propertyName,propertyType));
+        }
+        classSource.AppendLine("\t#endregion");
+        classSource.AppendLine("}");
+        return classSource.ToString();
+    }
+
+    //生成数据字段对应Get方法
+    private static string CreateCodePropertyMethod(string itemClassName,string idTypeStr,string propertyName,string propertyType)
+    {
+        StringBuilder methodBuilder = new StringBuilder();
+        string itemNameStr = propertyName.FirstOrDefault().ToString().ToUpper() + propertyName.Substring(1);
+        string itemTypeStr = GetPropertyType(propertyType);
+        //字段Get函数
+        methodBuilder.AppendLine($"\tpublic {itemTypeStr} Get{itemNameStr}({idTypeStr} id)");
+        methodBuilder.AppendLine("\t{");
+        methodBuilder.AppendLine($"\t\tvar item = Get{itemClassName}(id);");
+        methodBuilder.AppendLine("\t\tif(item == null)");
+        methodBuilder.AppendLine("\t\t\treturn default;");
+        methodBuilder.AppendLine($"\t\treturn item.{propertyName};");
+        methodBuilder.AppendLine("\t}");
+        //如果是一维数组
+        if(propertyType.Contains("[]"))
+        {
+            //typeStr:int[]或IntArr[] ,返回值:int或IntArr
+            //string itemTypeStr1d = GetPropertyType(propertyType.Replace("[]",""));
+            string itemTypeStr1d = itemTypeStr.Replace("[]","");
+            methodBuilder.AppendLine($"\tpublic {itemTypeStr1d} Get{itemNameStr}({idTypeStr} id, int index)");
+            methodBuilder.AppendLine("\t{");
+            methodBuilder.AppendLine($"\t\tvar item0 = Get{itemClassName} (id);");
+            methodBuilder.AppendLine("\t\tif(item0 == null)");
+            methodBuilder.AppendLine("\t\t\treturn default;");
+            methodBuilder.AppendLine($"\t\tvar item1 = item0.{propertyName};");
+            methodBuilder.AppendLine("\t\tif(item1 == null || index < 0 || index >= item1.Length)");
+            methodBuilder.AppendLine("\t\t\treturn default;");
+            methodBuilder.AppendLine("\t\treturn item1[index];");
+            methodBuilder.AppendLine("\t}");
+        }
+        //如果是二维数组
+        if(propertyType.Contains("[][]"))
+        {
+            //propertyType:int[][], 返回值:int
+            string itemTypeStr1d = GetPropertyType(propertyType.Replace("[][]",""));
+            methodBuilder.AppendLine($"\tpublic {itemTypeStr1d} Get{itemNameStr}({idTypeStr} id, int index1, int index2)");
+            methodBuilder.AppendLine("\t{");
+            methodBuilder.AppendLine($"\t\tvar item0 = Get{itemClassName}(id);");
+            methodBuilder.AppendLine("\t\tif(item0 == null)");
+            methodBuilder.AppendLine("\t\t\treturn default;");
+            methodBuilder.AppendLine($"\t\tvar item1 = item0.{propertyName};");
+            methodBuilder.AppendLine("\t\tif(item1 == null || index1 < 0 || index1 >= item1.Length)");
+            methodBuilder.AppendLine("\t\t\treturn default;");
+            methodBuilder.AppendLine("\t\tvar item2 = item1[index1];");
+            methodBuilder.AppendLine("\t\tif(item2.array == null || index2 < 0 || index2 >= item2.array.Length)");
+            methodBuilder.AppendLine("\t\t\treturn default;");
+            methodBuilder.AppendLine("\t\treturn item2.array[index2];");
+            methodBuilder.AppendLine("\t}");
+        }
+        //
+        return methodBuilder.ToString();
+    }
+
+    //----------
+
+    //生成Asset创建类
+    private static string CreateExcelAssetClass(ExcelMediumData excelMediumData)
+    {
+        string itemClassName = excelMediumData.excelName + "ExcelItem";
+        string dataClassName = excelMediumData.excelName + "ExcelData";
+        string assignmentClassName = excelMediumData.excelName + "AssetAssignment";
+
+        StringBuilder classSource = new StringBuilder();
+        classSource.AppendLine("#if UNITY_EDITOR");
+        //类名
+        classSource.AppendLine($"public class {assignmentClassName}");
+        classSource.AppendLine("{");
+        //方法名
+        classSource.AppendLine("\tpublic static bool CreateAsset(ExcelMediumData excelMediumData, string excelAssetPath)");
+        //方法体,若有需要可加入try/catch
+        classSource.AppendLine("\t{");
+        classSource.AppendLine("\t\tvar allRowItemDicList = excelMediumData.GetAllRowItemDicList();");
+        classSource.AppendLine("\t\tif(allRowItemDicList == null || allRowItemDicList.Count == 0)");
+        classSource.AppendLine("\t\t\treturn false;");
+        classSource.AppendLine();
+        classSource.AppendLine("\t\tint rowCount = allRowItemDicList.Count;");
+        classSource.AppendLine($"\t\t{dataClassName} excelDataAsset = ScriptableObject.CreateInstance<{dataClassName}>();");
+        classSource.AppendLine($"\t\texcelDataAsset.items = new {itemClassName}[rowCount];");
+        classSource.AppendLine();
+        classSource.AppendLine("\t\tfor(int i = 0; i < rowCount; i++)");
+        classSource.AppendLine("\t\t{");
+        classSource.AppendLine("\t\t\tvar itemRowDic = allRowItemDicList[i];");
+        classSource.AppendLine($"\t\t\texcelDataAsset.items[i] = new {itemClassName}();");
+
+        for(int i = 0; i < excelMediumData.propertyNameArray.Length; i++)
+        {
+            if(excelMediumData.annotationColList.Contains(i))
+                continue;
+            string propertyName = excelMediumData.propertyNameArray[i];
+            string propertyType = excelMediumData.propertyTypeArray[i];
+            classSource.Append($"\t\t\texcelDataAsset.items[i].{propertyName} = ");
+            classSource.Append(AssignmentCodeProperty(propertyName,propertyType));
+            classSource.AppendLine(";");
+        }
+        classSource.AppendLine("\t\t}");
+        classSource.AppendLine("\t\tif(!Directory.Exists(excelAssetPath))");
+        classSource.AppendLine("\t\t\tDirectory.CreateDirectory(excelAssetPath);");
+        classSource.AppendLine($"\t\tstring fullPath = Path.Combine(excelAssetPath,typeof({dataClassName}).Name) + \".asset\";");
+        classSource.AppendLine("\t\tUnityEditor.AssetDatabase.DeleteAsset(fullPath);");
+        classSource.AppendLine("\t\tUnityEditor.AssetDatabase.CreateAsset(excelDataAsset,fullPath);");
+        classSource.AppendLine("\t\tUnityEditor.AssetDatabase.Refresh();");
+        classSource.AppendLine("\t\treturn true;");
+        classSource.AppendLine("\t}");
+        //          
+        classSource.AppendLine("}");
+        classSource.AppendLine("#endif");
+        return classSource.ToString();
+    }
+
+    //声明Asset操作类字段
+    private static string AssignmentCodeProperty(string propertyName,string propertyType)
+    {
+        string stringValue = $"itemRowDic[\"{propertyName}\"]";
+        string typeStr = GetPropertyType(propertyType);
+        switch(typeStr)
+        {
+            //字段
+            case "int":
+                return "StringUtility.StringToInt(" + stringValue + ")";
+            case "float":
+                return "StringUtility.StringToFloat(" + stringValue + ")";
+            case "bool":
+                return "StringUtility.StringToBool(" + stringValue + ")";
+            case "Vector2":
+                return "StringUtility.StringToVector2(" + stringValue + ")";
+            case "Vector3":
+                return "StringUtility.StringToVector3(" + stringValue + ")";
+            case "Vector2Int":
+                return "StringUtility.StringToVector2Int(" + stringValue + ")";
+            case "Vector3Int":
+                return "StringUtility.StringToVector3Int(" + stringValue + ")";
+            case "Color":
+                return "StringUtility.StringToColor(" + stringValue + ")";
+            case "Color32":
+                return "StringUtility.StringToColor32(" + stringValue + ")";
+            case "string":
+                return stringValue;
+            //一维
+            case "int[]":
+                return "StringUtility.StringToIntArray(" + stringValue + ")";
+            case "float[]":
+                return "StringUtility.StringToFloatArray(" + stringValue + ")";
+            case "bool[]":
+                return "StringUtility.StringToBoolArray(" + stringValue + ")";
+            case "Vector2[]":
+                return "StringUtility.StringToVector2Array(" + stringValue + ")";
+            case "Vector3[]":
+                return "StringUtility.StringToVector3Array(" + stringValue + ")";
+            case "Vector2Int[]":
+                return "StringUtility.StringToVector2IntArray(" + stringValue + ")";
+            case "Vector3Int[]":
+                return "StringUtility.StringToVector3IntArray(" + stringValue + ")";
+            case "Color[]":
+                return "StringUtility.StringToColorArray(" + stringValue + ")";
+            case "Color32[]":
+                return "StringUtility.StringToColor32Array(" + stringValue + ")";
+            case "string[]":
+                return "StringUtility.StringToStringArray(" + stringValue + ")";
+            //二维
+            case "IntArr[]":
+                return "StringUtility.StringToIntArray2D(" + stringValue + ")";
+            case "FloatArr[]":
+                return "StringUtility.StringToFloatArray2D(" + stringValue + ")";
+            case "BoolArr[]":
+                return "StringUtility.StringToBoolArray2D(" + stringValue + ")";
+            case "Vector2Arr[]":
+                return "StringUtility.StringToVector2Array2D(" + stringValue + ")";
+            case "Vector3Arr[]":
+                return "StringUtility.StringToVector3Array2D(" + stringValue + ")";
+            case "Vector2IntArr[]":
+                return "StringUtility.StringToVector2IntArray2D(" + stringValue + ")";
+            case "Vector3IntArr[]":
+                return "StringUtility.StringToVector3IntArray2D(" + stringValue + ")";
+            case "ColorArr[]":
+                return "StringUtility.StringToColorArray2D(" + stringValue + ")";
+            case "Color32Arr[]":
+                return "StringUtility.StringToColor32Array2D(" + stringValue + ")";
+            case "StringArr[]":
+                return "StringUtility.StringToStringArray2D(" + stringValue + ")";
+            default:
+                //枚举
+                if(propertyType.StartsWith("enum"))
+                {
+                    string enumType = propertyType.Split('|').FirstOrDefault();
+                    string enumName = propertyType.Split('|').LastOrDefault();
+                    if(enumType == "enum")
+                        return "StringUtility.StringToEnum<" + enumName + ">(" + stringValue + ")";
+                    else if(enumType == "enum[]")
+                        return "StringUtility.StringToEnumArray<" + enumName + ">(" + stringValue + ")";
+                    else if(enumType == "enum[][]")
+                        return "StringUtility.StringToEnumArray2D<" + enumName + ">(" + stringValue + ")";
+                }
+                return stringValue;
+        }
+    }
+
+    //判断字段类型
+    private static string GetPropertyType(string propertyType)
+    {
+        string lowerType = propertyType.ToLower();
+        switch(lowerType)
+        {
+            case "int":
+                return "int";
+            case "int[]":
+                return "int[]";
+            case "int[][]":
+                return "IntArr[]";
+            case "float":
+                return "float";
+            case "float[]":
+                return "float[]";
+            case "float[][]":
+                return "FloatArr[]";
+            case "bool":
+                return "bool";
+            case "bool[]":
+                return "bool[]";
+            case "bool[][]":
+                return "BoolArr[]";
+            case "string":
+                return "string";
+            case "string[]":
+                return "string[]";
+            case "string[][]":
+                return "StringArr[]";
+
+            case "vector2":
+                return "Vector2";
+            case "vector2[]":
+                return "Vector2[]";
+            case "vector2[][]":
+                return "Vector2Arr[]";
+            case "vector2int":
+                return "Vector2Int";
+            case "vector2int[]":
+                return "Vector2Int[]";
+            case "vector2int[][]":
+                return "Vector2IntArr[]";
+
+            case "vector3":
+                return "Vector3";
+            case "vector3[]":
+                return "Vector3[]";
+            case "vector3[][]":
+                return "Vector3Arr[]";
+            case "vector3int":
+                return "Vector3Int";
+            case "vector3int[]":
+                return "Vector3Int[]";
+            case "vector3int[][]":
+                return "Vector3IntArr[]";
+
+            case "color":
+                return "Color";
+            case "color[]":
+                return "Color[]";
+            case "color[][]":
+                return "ColorArr[]";
+            case "color32":
+                return "Color32";
+            case "color32[]":
+                return "Color32[]";
+            case "color32[][]":
+                return "Color32Arr[]";
+
+            default:
+                if(propertyType.StartsWith("enum"))
+                {
+                    string enumType = propertyType.Split('|').FirstOrDefault();
+                    string enumName = propertyType.Split('|').LastOrDefault();
+                    switch(enumType)
+                    {
+                        case "enum":
+                            return enumName;
+                        case "enum[]":
+                            return $"{enumName}[]";
+                        case "enum[][]":
+                            return $"EnumArr<{enumName}>[]";
+                        default:
+                            break;
+                    }
+                }
+                return "string";
+        }
+    }
+
+}

+ 1 - 1
Packages/com.ghz.avideoplayer/Editor/Scripts/PostProcessBuild_macOS.cs.meta → Assets/Editor/ExcelCodeCreater.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: b5e7d0eecf59540cca67bfad3855cef1
+guid: 027f261844ae0c943afd1d7dfe839018
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 341 - 0
Assets/Editor/ExcelDataReader.cs

@@ -0,0 +1,341 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.IO;
+using Excel;
+using System.Reflection;
+using System;
+using System.Linq;
+
+public class ExcelDataReader
+{
+    //Excel第1行对应特殊标记
+    private const int specialSignRow = 0;
+    //Excel第2行对应中文说明
+    private const int excelNodeRow = 1;
+    //Excel第3行对应字段名称
+    private const int excelNameRow = 2;
+    //Excel第4行对应字段类型
+    private const int excelTypeRow = 3;
+    //Excel第5行及以后对应字段值
+    private const int excelDataRow = 4;
+
+    //标记注释行/列
+    private const string annotationSign = "//";
+
+    #region --- Read Excel ---
+
+    //创建Excel对应的C#类
+    public static void ReadAllExcelToCode(string allExcelPath,string codeSavePath)
+    {
+        //读取所有Excel文件
+        //指定目录中与指定的搜索模式和选项匹配的文件的完整名称(包含路径)的数组;如果未找到任何文件,则为空数组。
+        string[] excelFileFullPaths = Directory.GetFiles(allExcelPath,"*.xlsx");
+        if(excelFileFullPaths == null || excelFileFullPaths.Length == 0)
+        {
+            Debug.Log("Excel file count == 0");
+            return;
+        }
+        //遍历所有Excel,创建C#类
+        for(int i = 0; i < excelFileFullPaths.Length; i++)
+        {
+            ReadOneExcelToCode(excelFileFullPaths[i],codeSavePath);
+        }
+    }
+
+    //创建Excel对应的C#类
+    public static void ReadOneExcelToCode(string excelFullPath,string codeSavePath)
+    {
+        //解析Excel获取中间数据
+        ExcelMediumData excelMediumData = CreateClassCodeByExcelPath(excelFullPath);
+        if(excelMediumData == null)
+        {
+            Debug.LogError($"读取Excel失败 : {excelFullPath}");
+            return;
+        }
+        if(!excelMediumData.isValid)
+        {
+            Debug.LogError($"读取Excel失败,Excel标记失效 : {excelMediumData.excelName}");
+            return;
+        }
+
+        if(!excelMediumData.isCreateCSharp && !excelMediumData.isCreateAssignment)
+        {
+            Debug.LogError($"读取Excel失败,Excel不允许生成CSCode : {excelMediumData.excelName}");
+            return;
+        }
+
+        //根据数据生成C#脚本
+        string classCodeStr = ExcelCodeCreater.CreateCodeStrByExcelData(excelMediumData);
+        if(string.IsNullOrEmpty(classCodeStr))
+        {
+            Debug.LogError($"解析Excel失败 : {excelMediumData.excelName}");
+            return;
+        }
+
+        //检查导出路径
+        if(!Directory.Exists(codeSavePath))
+            Directory.CreateDirectory(codeSavePath);
+        //类名
+        string codeFileName = excelMediumData.excelName + "ExcelData";
+        //写文件,生成CS类文件
+        StreamWriter sw = new StreamWriter($"{codeSavePath}/{codeFileName}.cs");
+        sw.WriteLine(classCodeStr);
+        sw.Close();
+        //
+        UnityEditor.AssetDatabase.SaveAssets();
+        UnityEditor.AssetDatabase.Refresh();
+        //
+        Debug.Log($"生成Excel的CS成功 : {excelMediumData.excelName}");
+    }
+
+    #endregion
+
+    #region --- Create Asset ---
+
+    //创建Excel对应的Asset数据文件
+    public static void CreateAllExcelAsset(string allExcelPath,string assetSavePath)
+    {
+        //读取所有Excel文件
+        //指定目录中与指定的搜索模式和选项匹配的文件的完整名称(包含路径)的数组;如果未找到任何文件,则为空数组。
+        string[] excelFileFullPaths = Directory.GetFiles(allExcelPath,"*.xlsx");
+        if(excelFileFullPaths == null || excelFileFullPaths.Length == 0)
+        {
+            Debug.Log("Excel file count == 0");
+            return;
+        }
+        //遍历所有Excel,创建Asset
+        for(int i = 0; i < excelFileFullPaths.Length; i++)
+        {
+            CreateOneExcelAsset(excelFileFullPaths[i],assetSavePath);
+        }
+    }
+
+    //创建Excel对应的Asset数据文件
+    public static void CreateOneExcelAsset(string excelFullPath,string assetSavePath)
+    {
+        //解析Excel获取中间数据
+        ExcelMediumData excelMediumData = CreateClassCodeByExcelPath(excelFullPath);
+        if(excelMediumData == null)
+        {
+            Debug.LogError($"读取Excel失败 : {excelFullPath}");
+            return;
+        }
+        if(!excelMediumData.isValid)
+        {
+            Debug.LogError($"读取Excel失败,Excel标记失效 : {excelMediumData.excelName}");
+            return;
+        }
+
+        if(!excelMediumData.isCreateAsset)
+        {
+            Debug.LogError($"读取Excel失败,Excel不允许生成Asset : {excelMediumData.excelName}");
+            return;
+        }
+
+        ////获取当前程序集
+        //Assembly assembly = Assembly.GetExecutingAssembly();
+        ////创建类的实例,返回为 object 类型,需要强制类型转换,assembly.CreateInstance("类的完全限定名(即包括命名空间)");
+        //object class0bj = assembly.CreateInstance(excelMediumData.excelName + "Assignment",true);
+
+        //必须遍历所有程序集来获得类型。当前在Assembly-CSharp-Editor中,目标类型在Assembly-CSharp中,不同程序将无法获取类型
+        Type assignmentType = null;
+        string assetAssignmentName = excelMediumData.excelName + "AssetAssignment";
+        foreach(var asm in AppDomain.CurrentDomain.GetAssemblies())
+        {
+            //查找目标类型
+            Type tempType = asm.GetType(assetAssignmentName);
+            if(tempType != null)
+            {
+                assignmentType = tempType;
+                break;
+            }
+        }
+        if(assignmentType == null)
+        {
+            Debug.LogError($"创界Asset失败,未找到Asset生成类 : {excelMediumData.excelName}");
+            return;
+        }
+
+        //反射获取方法
+        MethodInfo methodInfo = assignmentType.GetMethod("CreateAsset");
+        if(methodInfo == null)
+        {
+            if(assignmentType == null)
+            {
+                Debug.LogError($"创界Asset失败,未找到Asset创建函数 : {excelMediumData.excelName}");
+                return;
+            }
+        }
+
+        methodInfo.Invoke(null,new object[] { excelMediumData,assetSavePath , excelFullPath });
+        //创建Asset文件成功
+        Debug.Log($"生成Excel的Asset成功 : {excelMediumData.excelName}"+ excelFullPath);
+    }
+
+    #endregion
+
+    #region --- private ---
+
+    //解析Excel,创建中间数据
+    private static ExcelMediumData CreateClassCodeByExcelPath(string excelFileFullPath)
+    {
+        if(string.IsNullOrEmpty(excelFileFullPath))
+            return null;
+
+        excelFileFullPath = excelFileFullPath.Replace("\\","/");
+        //读取Excel
+        FileStream stream = File.Open(excelFileFullPath,FileMode.Open,FileAccess.Read);
+        if(stream == null)
+            return null;
+        //解析Excel
+        IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
+        //无效Excel
+        if(excelReader == null || !excelReader.IsValid)
+        {
+            Debug.Log("Invalid excel : " + excelFileFullPath);
+            return null;
+        }
+
+        Debug.Log("开始解析Excel : " + excelReader.Name);
+
+        //记录Excel数据
+        ExcelMediumData excelMediumData = new ExcelMediumData();
+
+        //Excel名字
+        excelMediumData.excelName = excelReader.Name;
+
+        //当前遍历的行
+        int curRowIndex = 0;
+        //开始读取,按行遍历
+        while(excelReader.Read())
+        {
+            //这一行没有读取到数据,视为无效行数据
+            if(excelReader.FieldCount <= 0)
+            {
+                curRowIndex++;
+                continue;
+            }
+            //读取每一行的完整数据
+            string[] datas = new string[excelReader.FieldCount];
+            for(int j = 0; j < excelReader.FieldCount; ++j)
+            {
+                //可以直接读取指定类型数据,不过只支持有限数据类型,这里统一读取string,然后再数据转化
+                //excelReader.GetInt32(j); excelReader.GetFloat(j);
+
+                //读取每一个单元格数据
+                datas[j] = excelReader.GetString(j);
+            }
+
+            switch(curRowIndex)
+            {
+                case specialSignRow:
+                    //特殊标记行
+                    string specialSignStr = datas[0];
+                    if(specialSignStr.Length >= 4)
+                    {
+                        excelMediumData.isValid = specialSignStr[0] == 'T';
+                        excelMediumData.isCreateCSharp = specialSignStr[1] == 'T';
+                        excelMediumData.isCreateAssignment = specialSignStr[2] == 'T';
+                        excelMediumData.isCreateAsset = specialSignStr[3] == 'T';
+                    }
+                    else
+                    {
+                        Debug.LogError("未解析到特殊标记");
+                    }
+                    break;
+                case excelNodeRow:
+                    //数据注释行
+                    excelMediumData.propertyNodeArray = datas;
+                    break;
+                case excelNameRow:
+                    //数据名称行
+                    excelMediumData.propertyNameArray = datas;
+                    //注释列号
+                    for(int i = 0; i < datas.Length; i++)
+                    {
+                        if(string.IsNullOrEmpty(datas[i]) || datas[i].StartsWith(annotationSign))
+                            excelMediumData.annotationColList.Add(i);
+                    }
+                    break;
+                case excelTypeRow:
+                    //数据类型行
+                    excelMediumData.propertyTypeArray = datas;
+                    break;
+                default:
+                    //数据内容行
+                    excelMediumData.allRowItemList.Add(datas);
+                    //注释行号
+                    if(string.IsNullOrEmpty(datas[0]) || datas[0].StartsWith(annotationSign))
+                        excelMediumData.annotationRowList.Add(excelMediumData.allRowItemList.Count - 1);
+                    break;
+            }
+            //
+            curRowIndex++;
+        }
+
+        if(CheckExcelMediumData(ref excelMediumData))
+        {
+            Debug.Log("读取Excel成功");
+            return excelMediumData;
+        }
+        else
+        {
+            Debug.LogError("读取Excel失败");
+            return null;
+        }
+    }
+
+    //校验Excel数据
+    private static bool CheckExcelMediumData(ref ExcelMediumData mediumData)
+    {
+        if(mediumData == null)
+            return false;
+
+        //检查数据有效性
+
+        if(!mediumData.isValid)
+        {
+            Debug.LogError("Excel被标记无效");
+            return false;
+        }
+
+        if(string.IsNullOrEmpty(mediumData.excelName))
+        {
+            Debug.LogError("Excel名字为空");
+            return false;
+        }
+
+        if(mediumData.propertyNameArray == null || mediumData.propertyNameArray.Length == 0)
+        {
+            Debug.LogError("未解析到数据名称");
+            return false;
+        }
+        if(mediumData.propertyTypeArray == null || mediumData.propertyTypeArray.Length == 0)
+        {
+            Debug.LogError("未解析到数据类型");
+            return false;
+        }
+        if(mediumData.propertyNameArray.Length != mediumData.propertyTypeArray.Length)
+        {
+            Debug.LogError("数据名称与数据类型数量不一致");
+            return false;
+        }
+        if(mediumData.allRowItemList.Count == 0)
+        {
+            Debug.LogError("数据内容为空");
+            return false;
+        }
+
+        if(mediumData.propertyNameArray[0] != "id")
+        {
+            Debug.LogError("第一个字段必须是id字段");
+            return false;
+        }
+
+        return true;
+    }
+
+    #endregion
+
+}

+ 1 - 1
Packages/com.ghz.avideoplayer/Resources/Scripts/Internal/Players/PlatformMediaPlayer+Native.cs.meta → Assets/Editor/ExcelDataReader.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 0bf374b5848b649e6b3840fe1dc03cd2
+guid: 714b762f76ccb7049b62ebbf5e5941d6
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 13 - 0
Assets/Editor/MyObject.cs

@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.IO;
+using System.Text;
+using UnityEditor;
+
+
+public  class ScriptableObjectToExcelExporter
+{
+}
+// 使用方法示例
+// MyObject myObject = ... 从某处获取或创建MyObject实例
+// string filePath = "path/to/your/file.csv";
+// ScriptableObjectToExcelExporter.ExportScriptableObjectToExcel(myObject, filePath);

+ 11 - 0
Assets/Editor/MyObject.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cf189053df65c4091bd86001537a12bf
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 20 - 0
Assets/GetAVProTexture.cs

@@ -0,0 +1,20 @@
+
+using UnityEngine;
+using UnityEngine.UI;
+
+public class GetAVProTexture : MonoBehaviour
+{
+    // Start is called once before the first execution of Update after the MonoBehaviour is created
+    void Start()
+    {
+        
+    }
+    private void OnEnable()
+    {
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+    }
+}

+ 11 - 0
Assets/GetAVProTexture.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6f8c692477ee248bfb1ff7af575d70d5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/NaughtyAttributes/Samples/DemoScene/DemoScene.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5c0413f3f8f354d35819cc20313b2c09
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/LightingData.asset


+ 8 - 0
Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/LightingData.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 40c734c4f63db48a997df6f28794a4ef
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 112000000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/ReflectionProbe-0.exr


+ 156 - 0
Assets/NaughtyAttributes/Samples/DemoScene/DemoScene/ReflectionProbe-0.exr.meta

@@ -0,0 +1,156 @@
+fileFormatVersion: 2
+guid: 352cf1281c76e4e8b8ba587fa815eefb
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 1
+  seamlessCubemap: 1
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 2
+    aniso: 0
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 2
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 4
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 100
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: VisionOS
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    customData: 
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    spriteCustomMetadata:
+      entries: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Plugins.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 302cc5acc066545548ba350648dfa3d1
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Plugins/Excel.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cb2313020c59a488b882521a7d17403f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Plugins/Excel/EPPlus.dll


+ 7 - 6
Packages/com.ghz.avideoplayer/Runtime/Plugins/Android/media3-common.aar.meta → Assets/Plugins/Excel/EPPlus.dll.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 986510c1836944327b3ba213758af502
+guid: 2f5522d50c034ff4c9ac27c61d5d4cb2
 PluginImporter:
   externalObjects: {}
   serializedVersion: 2
@@ -12,21 +12,22 @@ PluginImporter:
   validateReferences: 1
   platformData:
   - first:
-      Android: Android
+      Any: 
     second:
       enabled: 1
       settings: {}
   - first:
-      Any: 
+      Editor: Editor
     second:
       enabled: 0
-      settings: {}
+      settings:
+        DefaultValueInitialized: true
   - first:
-      Editor: Editor
+      Windows Store Apps: WindowsStoreApps
     second:
       enabled: 0
       settings:
-        DefaultValueInitialized: true
+        CPU: AnyCPU
   userData: 
   assetBundleName: 
   assetBundleVariant: 

BIN
Assets/Plugins/Excel/Excel.dll


+ 7 - 6
Packages/com.ghz.avideoplayer/Runtime/Plugins/Android/media3-container.aar.meta → Assets/Plugins/Excel/Excel.dll.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 986510c1836933327b3ba213753af503
+guid: 918ec49ab2fed4f46a71e09023583622
 PluginImporter:
   externalObjects: {}
   serializedVersion: 2
@@ -12,21 +12,22 @@ PluginImporter:
   validateReferences: 1
   platformData:
   - first:
-      Android: Android
+      Any: 
     second:
       enabled: 1
       settings: {}
   - first:
-      Any: 
+      Editor: Editor
     second:
       enabled: 0
-      settings: {}
+      settings:
+        DefaultValueInitialized: true
   - first:
-      Editor: Editor
+      Windows Store Apps: WindowsStoreApps
     second:
       enabled: 0
       settings:
-        DefaultValueInitialized: true
+        CPU: AnyCPU
   userData: 
   assetBundleName: 
   assetBundleVariant: 

BIN
Assets/Plugins/Excel/ICSharpCode.SharpZipLib.dll


+ 1 - 1
Assets/TriLib/TriLibCore/Plugins/Dependencies/ICSharpCode.SharpZipLib.dll.meta → Assets/Plugins/Excel/ICSharpCode.SharpZipLib.dll.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 8eb5133163e28314cb861b11e3c11e43
+guid: 3cc59df2fb4976d44a6e745a2f655ded
 PluginImporter:
   externalObjects: {}
   serializedVersion: 2

File diff suppressed because it is too large
+ 43 - 150
Assets/Scenes/Game.unity


+ 8 - 0
Assets/Script.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b890fd3db49c5461f87f635889c49564
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Script/Excel.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3d2c84ac617f243efa69ab7f63599fa8
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Script/Excel/AutoCreateCSCode.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4187a013b4d33e146b516cf70ba3efd1
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 322 - 0
Assets/Script/Excel/AutoCreateCSCode/TestConfigExcelData.cs

@@ -0,0 +1,322 @@
+/*Auto Create, Don't Edit !!!*/
+
+using UnityEngine;
+using System.Collections.Generic;
+using System;
+using System.IO;
+using System.Text;
+using UnityEditor;
+
+[Serializable]
+public class TestConfigExcelItem : ExcelItemBase
+{
+	public int id;
+	public bool[] xiansuos;
+	public TaskType type;
+	public bool isNoshow;
+	public string lihui;
+	public string info;
+	public string info2;
+	public string bgName;
+	public string imgName;
+	public string taskcheck;
+	public string centerName;
+	public float centersize = 1;
+	public float lihuisize = 1;
+	public string perbName;
+	public bool isClose;
+	public bool isTuo;
+	public bool[] daojus;
+	public bool isClosebtShow;
+	public bool isTextNext = true;
+	public bool isARSao = true;
+	public int arid;
+	public string texiao;
+	public string guochang;
+	public bool isguochangskip;
+}
+
+
+
+
+public enum TaskType
+{
+	Dialogue,
+	Xiansuo,
+	SkipSence,
+	GameTask,
+	ARTask,
+	ChooseTask,
+	InputTask,
+	Other
+}
+public class TestConfigExcelData : ExcelDataBase<TestConfigExcelItem>
+{
+	public TestConfigExcelItem[] items;
+
+	public Dictionary<int,TestConfigExcelItem> itemDic = new Dictionary<int,TestConfigExcelItem>();
+
+	public void Init()
+	{
+		itemDic.Clear();
+		if(items != null && items.Length > 0)
+		{
+			for(int i = 0; i < items.Length; i++)
+			{
+				itemDic.Add(items[i].id, items[i]);
+			}
+		}
+	}
+
+	public TestConfigExcelItem GetTestConfigExcelItem(int id)
+	{
+		if(itemDic.ContainsKey(id))
+			return itemDic[id];
+		else
+			return null;
+	}
+	#region --- Get Method ---
+
+	public string GetInfo(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.info;
+	}
+	public string Getlihui(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.lihui;
+	}
+
+	public string Gettexiao(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.texiao;
+	}
+
+	public string Getguochang(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.guochang;
+	}
+
+	public float Getlihuisize(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.lihuisize;
+	}
+
+	public bool Getisguochangskip(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isguochangskip;
+	}
+
+	public string GetInfo2(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if(item == null)
+			return default;
+		return item.info2;
+	}
+
+	public bool Getxiansuos(int id, int index)
+	{
+		var item0 = GetTestConfigExcelItem(id);
+		if (item0 == null)
+			return default;
+		var item1 = item0.xiansuos;
+		if (item1 == null || index < 0 || index >= item1.Length)
+			return default;
+		return item1[index];
+	}
+
+	public bool Getdaojus(int id, int index)
+	{
+		var item0 = GetTestConfigExcelItem(id);
+		if (item0 == null)
+			return default;
+		var item1 = item0.daojus;
+		if (item1 == null || index < 0 || index >= item1.Length)
+			return default;
+		return item1[index];
+	}
+
+	public TaskType GetType(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if(item == null)
+			return default;
+		return item.type;
+	}
+	public bool GetisNoshow(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isNoshow;
+	}
+	public bool GetisClosebtShow(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isClosebtShow;
+	}
+	public bool GetisTextNext(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isTextNext;
+	}
+	public bool GetisARSao(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isARSao;
+	}
+	public bool GetisClose(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isClose;
+	}
+	public bool GetisTuo(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.isTuo;
+	}
+	public int Getarid(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.arid;
+	}
+
+	public string GetbgName(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.bgName;
+	}
+	public string GetimgName(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.imgName;
+	}
+	public string Gettaskcheck(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.taskcheck;
+	}
+	public string GetcenterName(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.centerName;
+	}
+	public string GetperbName(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.perbName;
+	}
+	public float Getcentersize(int id)
+	{
+		var item = GetTestConfigExcelItem(id);
+		if (item == null)
+			return default;
+		return item.centersize;
+	}
+
+
+	#endregion
+}
+
+
+#if UNITY_EDITOR
+public class TestConfigAssetAssignment
+{
+	public static string GetFileNameWithoutExtension(string filePath)
+	{
+		return Path.GetFileNameWithoutExtension(filePath);
+	}
+	public static bool CreateAsset(ExcelMediumData excelMediumData, string excelAssetPath,string xlxspath)
+	{
+		var allRowItemDicList = excelMediumData.GetAllRowItemDicList();
+		if(allRowItemDicList == null || allRowItemDicList.Count == 0)
+			return false;
+
+		int rowCount = allRowItemDicList.Count;
+		TestConfigExcelData excelDataAsset = ScriptableObject.CreateInstance<TestConfigExcelData>();
+		excelDataAsset.items = new TestConfigExcelItem[rowCount];
+
+		for(int i = 0; i < rowCount; i++)
+		{
+			var itemRowDic = allRowItemDicList[i];
+			excelDataAsset.items[i] = new TestConfigExcelItem();
+			excelDataAsset.items[i].id = StringUtility.StringToInt(itemRowDic["id"]);
+			excelDataAsset.items[i].info =itemRowDic["info"];
+			excelDataAsset.items[i].info2 = itemRowDic["info2"];
+			excelDataAsset.items[i].lihui = itemRowDic["lihui"];
+			excelDataAsset.items[i].texiao = itemRowDic["texiao"];
+			excelDataAsset.items[i].guochang = itemRowDic["guochang"];
+			excelDataAsset.items[i].isguochangskip = StringUtility.StringToBool(itemRowDic["isguochangskip"]);
+			excelDataAsset.items[i].lihuisize = StringUtility.StringToFloat(itemRowDic["lihuisize"]);
+			excelDataAsset.items[i].xiansuos = StringUtility.StringToBoolArray(itemRowDic["xiansuos"]);
+			excelDataAsset.items[i].type = StringUtility.StringToEnum<TaskType>(itemRowDic["type"]);
+			excelDataAsset.items[i].isNoshow = StringUtility.StringToBool(itemRowDic["isNoshow"]);
+			excelDataAsset.items[i].bgName = itemRowDic["bgName"];
+			excelDataAsset.items[i].imgName = itemRowDic["imgName"];
+			excelDataAsset.items[i].taskcheck = itemRowDic["taskcheck"];
+			excelDataAsset.items[i].centerName = itemRowDic["centerName"];
+			excelDataAsset.items[i].centersize = StringUtility.StringToFloat(itemRowDic["centersize"]);
+			excelDataAsset.items[i].perbName = itemRowDic["perbName"];
+			excelDataAsset.items[i].isClose = StringUtility.StringToBool(itemRowDic["isClose"]);
+			excelDataAsset.items[i].isTuo = StringUtility.StringToBool(itemRowDic["isTuo"]);
+			excelDataAsset.items[i].daojus = StringUtility.StringToBoolArray(itemRowDic["daojus"]);
+			excelDataAsset.items[i].isClosebtShow = StringUtility.StringToBool(itemRowDic["isClosebtShow"]);
+			excelDataAsset.items[i].isTextNext = StringUtility.StringToBool(itemRowDic["isTextNext"]);
+			excelDataAsset.items[i].isARSao = StringUtility.StringToBool(itemRowDic["isARSao"]);
+			excelDataAsset.items[i].isguochangskip = StringUtility.StringToBool(itemRowDic["isguochangskip"]);
+			excelDataAsset.items[i].arid = StringUtility.StringToInt(itemRowDic["arid"]);
+		}
+		Debug.Log(excelAssetPath);
+		if(!Directory.Exists(excelAssetPath))
+			Directory.CreateDirectory(excelAssetPath);
+		string fullPath = Path.Combine(excelAssetPath, GetFileNameWithoutExtension(xlxspath)) + ".asset";
+		UnityEditor.AssetDatabase.DeleteAsset(fullPath);
+		UnityEditor.AssetDatabase.CreateAsset(excelDataAsset,fullPath);
+		UnityEditor.AssetDatabase.Refresh();
+		return true;
+	}
+}
+#endif
+
+
+

+ 11 - 0
Assets/Script/Excel/AutoCreateCSCode/TestConfigExcelData.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4182afbe5a32c49dca2581d60c66652c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 14 - 0
Assets/Script/Excel/ExcelDataBase.cs

@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Linq;
+
+public class ExcelDataBase<T> : ScriptableObject where T : ExcelItemBase
+{
+
+}
+
+public class ExcelItemBase
+{
+
+}

+ 11 - 0
Assets/Script/Excel/ExcelDataBase.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1dfd14395898c6a41a4ac51690e55d0c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 68 - 0
Assets/Script/Excel/ExcelItemArrArr.cs

@@ -0,0 +1,68 @@
+//**************************************************
+//* FileName:          ExcelItemArrArr.cs
+//* Author:            ZCS
+//* Version:           1.0
+//* CreateTime:        2021/05/15 23:53:34
+//**************************************************
+
+using System;
+using UnityEngine;
+
+[Serializable]
+public struct StringArr
+{
+    public string[] array;
+}
+[Serializable]
+public struct IntArr
+{
+    public int[] array;
+}
+[Serializable]
+public struct FloatArr
+{
+    public float[] array;
+}
+[Serializable]
+public struct BoolArr
+{
+    public bool[] array;
+}
+
+[Serializable]
+public struct Vector2Arr
+{
+    public Vector2[] array;
+}
+[Serializable]
+public struct Vector3Arr
+{
+    public Vector3[] array;
+}
+[Serializable]
+public struct Vector2IntArr
+{
+    public Vector2Int[] array;
+}
+[Serializable]
+public struct Vector3IntArr
+{
+    public Vector3Int[] array;
+}
+[Serializable]
+public struct ColorArr
+{
+    public Color[] array;
+}
+[Serializable]
+public struct Color32Arr
+{
+    public Color32[] array;
+}
+
+////不支持泛型枚举序列化
+//[Serializable]
+//public struct EnumArr<T> where T : Enum
+//{
+//    public T[] array;
+//}

+ 11 - 0
Assets/Script/Excel/ExcelItemArrArr.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e25bccf70c2ee460581bc1979063f640
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 71 - 0
Assets/Script/Excel/ExcelMediumData.cs

@@ -0,0 +1,71 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+//Excel中间数据
+public class ExcelMediumData
+{
+    //Excel名字
+    public string excelName;
+
+    //Excel是否有效
+    public bool isValid = false;
+    //是否生成CSharp数据类
+    public bool isCreateCSharp = false;
+    //是否生成Asset创建类
+    public bool isCreateAssignment = false;
+    //是否生成Asset文件
+    public bool isCreateAsset = false;
+
+    //数据注释
+    public string[] propertyNodeArray = null;
+    //数据名称
+    public string[] propertyNameArray = null;
+    //数据类型
+    public string[] propertyTypeArray = null;
+    //List<每行数据内容>
+    public List<string[]> allRowItemList = new List<string[]>();
+
+    //注释行号
+    public List<int> annotationRowList = new List<int>();
+    //注释列号
+    public List<int> annotationColList = new List<int>();
+
+    //List<每行数据>,List<Dictionary<单元格字段名称, 单元格字段值>>
+    public List<Dictionary<string,string>> GetAllRowItemDicList()
+    {
+        if(propertyNameArray == null || propertyNameArray.Length == 0)
+            return null;
+        if(allRowItemList.Count == 0)
+            return null;
+
+        List<Dictionary<string,string>> allRowItemDicList = new List<Dictionary<string,string>>(allRowItemList.Count);
+
+        for(int i = 0; i < allRowItemList.Count; i++)
+        {
+            string[] rowArray = allRowItemList[i];
+            //跳过空数据
+            if(rowArray == null || rowArray.Length == 0)
+                continue;
+            //跳过注释数据
+            if(annotationRowList.Contains(i))
+                continue;
+
+            //每行数据,对应字段名称和字段值
+            Dictionary<string,string> rowDic = new Dictionary<string,string>();
+            for(int j = 0; j < propertyNameArray.Length; j++)
+            {
+                //跳过注释字段
+                if(annotationColList.Contains(j))
+                    continue;
+
+                string propertyName = propertyNameArray[j];
+                string propertyValue = j < rowArray.Length ? rowArray[j] : null;
+                rowDic[propertyName] = propertyValue;
+            }
+            allRowItemDicList.Add(rowDic);
+        }
+        return allRowItemDicList;
+    }
+
+}

+ 11 - 0
Assets/Script/Excel/ExcelMediumData.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 779c59abfe7cf8e40b40e89c0ee4ec72
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 824 - 0
Assets/Script/StringUtility.cs

@@ -0,0 +1,824 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System.Text.RegularExpressions;
+using System;
+using System.Text;
+using System.Linq;
+using System.Runtime.CompilerServices;
+
+public static class StringUtility
+{
+
+    #region --- AddColor ---
+
+    public static string AddColor(object obj,Color color)
+    {
+        return AddColor(obj,color);
+    }
+    public static string AddColor(this string str,Color color)
+    {
+        //把颜色转换为16进制字符串,添加到富文本
+        return string.Format("<color=#{0}>{1}</color>",ColorUtility.ToHtmlStringRGBA(color),str);
+    }
+    public static string AddColor(string str1,string str2,Color color)
+    {
+        return AddColor(str1 + str2,color);
+    }
+    public static string AddColor(string str1,string str2,string str3,Color color)
+    {
+        return AddColor(str1 + str2 + str3,color);
+    }
+
+    #endregion
+
+    #region --- string length ---
+
+    /// <summary>
+    /// 化简字符串长度
+    /// </summary>
+    /// <param name="targetStr"></param>
+    /// <param name="targetLength">目标长度,英文字符==1,中文字符==2</param>
+    /// <returns></returns>
+    public static string AbbrevStringWithinLength(string targetStr,int targetLength,string abbrevPostfix)
+    {
+        //C#实际统计:一个中文字符长度==1,英文字符长度==1
+        //UI显示要求:一个中文字符长度==2,英文字符长度==1
+
+        //校验参数
+        if(string.IsNullOrEmpty(targetStr) || targetLength <= 0)
+            return targetStr;
+        //字符串长度 * 2 <= 目标长度,即使是全中文也在长度范围内
+        if(targetStr.Length * 2 <= targetLength)
+            return targetStr;
+        //遍历字符
+        char[] chars = targetStr.ToCharArray();
+        int curLen = 0;
+        for(int i = 0; i < chars.Length; i++)
+        {
+            //累加字符串长度
+            if(chars[i] >= 0x4e00 && chars[i] <= 0x9fbb)
+                curLen += 2;
+            else
+                curLen += 1;
+
+            //如果当前位置累计长度超过目标长度,取0~i-1,即Substring(0,i)
+            if(curLen > targetLength)
+                return targetStr.Substring(0,i) + abbrevPostfix;
+        }
+        return targetStr;
+    }
+
+    #endregion
+
+    #region --- String To Array ---
+
+    //string
+
+    public static byte StringToByte(string valueStr)
+    {
+        byte value;
+        if(byte.TryParse(valueStr,out value))
+            return value;
+        else
+            return 0;
+    }
+
+    public static string[] StringToStringArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        return valueStr.Split(splitSign);
+    }
+
+    public static StringArr[] StringToStringArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        StringArr[] arrArr = new StringArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new StringArr()
+            {
+                array = strArr1[i].Split(splitSign2)
+            };
+
+        }
+        return arrArr;
+    }
+
+    //int
+
+    public static int StringToInt(string valueStr)
+    {
+        int value;
+        if(int.TryParse(valueStr,out value))
+            return value;
+        else
+            return 0;
+    }
+
+    public static int[] StringToIntArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] valueArr = valueStr.Split(splitSign);
+        if(valueArr == null || valueArr.Length == 0)
+            return null;
+
+        int[] intArr = new int[valueArr.Length];
+        for(int i = 0; i < valueArr.Length; i++)
+        {
+            intArr[i] = StringToInt(valueArr[i]);
+        }
+        return intArr;
+    }
+
+    public static IntArr[] StringToIntArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        IntArr[] arrArr = new IntArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new IntArr()
+            {
+                array = StringToIntArray(strArr1[i],splitSign2)
+            };
+
+        }
+        return arrArr;
+    }
+
+    //float
+
+    public static float StringToFloat(string valueStr)
+    {
+        float value;
+        if(float.TryParse(valueStr,out value))
+            return value;
+        else
+            return 0;
+    }
+
+    public static float[] StringToFloatArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] valueArr = valueStr.Split(splitSign);
+        if(valueArr == null || valueArr.Length == 0)
+            return null;
+
+        float[] floatArr = new float[valueArr.Length];
+        for(int i = 0; i < valueArr.Length; i++)
+        {
+            floatArr[i] = StringToFloat(valueArr[i]);
+        }
+        return floatArr;
+    }
+
+    public static FloatArr[] StringToFloatArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        FloatArr[] arrArr = new FloatArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new FloatArr()
+            {
+                array = StringToFloatArray(strArr1[i],splitSign2)
+            };
+
+        }
+        return arrArr;
+    }
+
+    //bool
+
+    public static bool StringToBool(string valueStr)
+    {
+        bool value;
+        if(bool.TryParse(valueStr,out value))
+            return value;
+        else
+            return false;
+    }
+
+    public static bool[] StringToBoolArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] valueArr = valueStr.Split(splitSign);
+        if(valueArr == null || valueArr.Length == 0)
+            return null;
+
+        bool[] boolArr = new bool[valueArr.Length];
+        for(int i = 0; i < valueArr.Length; i++)
+        {
+            boolArr[i] = StringToBool(valueArr[i]);
+        }
+        return boolArr;
+    }
+
+    public static BoolArr[] StringToBoolArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        BoolArr[] arrArr = new BoolArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new BoolArr()
+            {
+                array = StringToBoolArray(strArr1[i],splitSign2)
+            };
+
+        }
+        return arrArr;
+    }
+
+    //enum
+
+    public static T StringToEnum<T>(string valueStr) where T : Enum
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return (T)default;
+
+        //先校验字符串是否为枚举值
+        int intValue;
+        if(int.TryParse(valueStr,out intValue))
+        {
+            if(Enum.IsDefined(typeof(T),intValue))
+                return (T)Enum.ToObject(typeof(T),intValue);
+        }
+        //如果不是枚举值,当做枚举名处理
+        try
+        {
+            T t = (T)Enum.Parse(typeof(T),valueStr);
+            if(Enum.IsDefined(typeof(T),t))
+                return t;
+        }
+        catch(Exception e)
+        {
+            Debug.LogError(e);
+        }
+        Debug.LogError(string.Format("解析枚举错误 {0} : {1}",typeof(T),valueStr));
+        return (T)default;
+    }
+
+    public static T[] StringToEnumArray<T>(string valueStr,char splitSign = '|') where T : Enum
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] valueArr = valueStr.Split(splitSign);
+        if(valueArr == null || valueArr.Length == 0)
+            return null;
+
+        T[] enumArr = new T[valueArr.Length];
+        for(int i = 0; i < valueArr.Length; i++)
+        {
+            enumArr[i] = StringToEnum<T>(valueArr[i]);
+        }
+        return enumArr;
+    }
+
+    ////不支持泛型枚举序列化
+    //public static EnumArr<T>[] StringToEnumArray2D<T>(string valueStr,char splitSign1 = '&',char splitSign2 = '|') where T : Enum
+    //{
+    //    if(string.IsNullOrEmpty(valueStr))
+    //        return null;
+    //    string[] strArr1 = valueStr.Split(splitSign1);
+    //    if(strArr1.Length == 0)
+    //        return null;
+
+    //    EnumArr<T>[] arrArr = new EnumArr<T>[strArr1.Length];
+    //    for(int i = 0; i < strArr1.Length; i++)
+    //    {
+    //        arrArr[i] = new EnumArr<T>()
+    //        {
+    //            array = StringToEnumArray<T>(strArr1[i],splitSign2)
+    //        };
+
+    //    }
+    //    return arrArr;
+    //}
+
+    //vector2
+
+    public static Vector2 StringToVector2(string valueStr,char splitSign = ',')
+    {
+        Vector2 value = Vector2.zero;
+        if(!string.IsNullOrEmpty(valueStr))
+        {
+            string[] stringArray = valueStr.Split(splitSign);
+            if(stringArray != null && stringArray.Length >= 2)
+            {
+                value.x = StringToFloat(stringArray[0]);
+                value.y = StringToFloat(stringArray[1]);
+                return value;
+            }
+        }
+        Debug.LogWarning("String to Vector2 error");
+        return value;
+    }
+
+    public static Vector2[] StringToVector2Array(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Vector2[] vector2s = new Vector2[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            vector2s[i] = StringToVector2(stringArray[i]);
+        }
+        return vector2s;
+    }
+
+    public static Vector2Arr[] StringToVector2Array2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        Vector2Arr[] arrArr = new Vector2Arr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new Vector2Arr()
+            {
+                array = StringToVector2Array(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+
+    //vector3
+
+    public static Vector3 StringToVector3(string valueStr,char splitSign = ',')
+    {
+        Vector3 value = Vector3.zero;
+        if(!string.IsNullOrEmpty(valueStr))
+        {
+            string[] stringArray = valueStr.Split(splitSign);
+            if(stringArray.Length >= 3)
+            {
+                value.x = StringToFloat(stringArray[0]);
+                value.y = StringToFloat(stringArray[1]);
+                value.z = StringToFloat(stringArray[2]);
+                return value;
+            }
+        }
+        Debug.LogWarning("String to Vector3 error");
+        return value;
+    }
+
+    public static Vector3[] StringToVector3Array(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Vector3[] vector3s = new Vector3[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            vector3s[i] = StringToVector3(stringArray[i]);
+        }
+        return vector3s;
+    }
+
+    public static Vector3Arr[] StringToVector3Array2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        Vector3Arr[] arrArr = new Vector3Arr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new Vector3Arr()
+            {
+                array = StringToVector3Array(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+
+    //vector2Int
+
+    public static Vector2Int StringToVector2Int(string valueStr,char splitSign = ',')
+    {
+        Vector2Int value = Vector2Int.zero;
+        if(!string.IsNullOrEmpty(valueStr))
+        {
+            string[] stringArray = valueStr.Split(splitSign);
+            if(stringArray != null && stringArray.Length >= 2)
+            {
+                value.x = StringToInt(stringArray[0]);
+                value.y = StringToInt(stringArray[1]);
+                return value;
+            }
+        }
+        Debug.LogWarning("String to Vector2Int error");
+        return value;
+    }
+
+    public static Vector2Int[] StringToVector2IntArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Vector2Int[] vector2Ints = new Vector2Int[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            vector2Ints[i] = StringToVector2Int(stringArray[i]);
+        }
+        return vector2Ints;
+    }
+
+    public static Vector2IntArr[] StringToVector2IntArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        Vector2IntArr[] arrArr = new Vector2IntArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new Vector2IntArr()
+            {
+                array = StringToVector2IntArray(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+
+    //vector3Int
+
+    public static Vector3Int StringToVector3Int(string valueStr,char splitSign = ',')
+    {
+        Vector3Int value = Vector3Int.zero;
+        if(!string.IsNullOrEmpty(valueStr))
+        {
+            string[] stringArray = valueStr.Split(splitSign);
+            if(stringArray.Length >= 3)
+            {
+                value.x = StringToInt(stringArray[0]);
+                value.y = StringToInt(stringArray[1]);
+                value.z = StringToInt(stringArray[2]);
+                return value;
+            }
+        }
+        Debug.LogWarning("String to Vector3 error");
+        return value;
+    }
+
+    public static Vector3Int[] StringToVector3IntArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Vector3Int[] vector3Ints = new Vector3Int[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            vector3Ints[i] = StringToVector3Int(stringArray[i]);
+        }
+        return vector3Ints;
+    }
+
+    public static Vector3IntArr[] StringToVector3IntArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        Vector3IntArr[] arrArr = new Vector3IntArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new Vector3IntArr()
+            {
+                array = StringToVector3IntArray(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+
+    //color
+
+    public static Color StringToColor(string valueStr,char splitSign = ',')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return Color.white;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray.Length < 3)
+            return Color.white;
+
+        Color color = new Color()
+        {
+            r = StringToFloat(stringArray[0]),
+            g = StringToFloat(stringArray[1]),
+            b = StringToFloat(stringArray[2]),
+            a = stringArray.Length < 4 ? 1 : StringToFloat(stringArray[3])
+        };
+        return color;
+    }
+    public static Color32 StringToColor32(string valueStr,char splitSign = ',')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return Color.white;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray.Length < 3)
+            return Color.white;
+
+        Color32 color = new Color32()
+        {
+            r = StringToByte(stringArray[0]),
+            g = StringToByte(stringArray[1]),
+            b = StringToByte(stringArray[2]),
+            a = stringArray.Length < 4 ? (byte)1 : StringToByte(stringArray[3])
+        };
+        return color;
+    }
+
+    public static Color[] StringToColorArray(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Color[] colors = new Color[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            colors[i] = StringToColor(stringArray[i]);
+        }
+        return colors;
+    }
+
+    public static Color32[] StringToColor32Array(string valueStr,char splitSign = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+
+        string[] stringArray = valueStr.Split(splitSign);
+        if(stringArray == null || stringArray.Length == 0)
+            return null;
+
+        Color32[] colors = new Color32[stringArray.Length];
+        for(int i = 0; i < stringArray.Length; i++)
+        {
+            colors[i] = StringToColor32(stringArray[i]);
+        }
+        return colors;
+    }
+
+    public static ColorArr[] StringToColorArray2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        ColorArr[] arrArr = new ColorArr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new ColorArr()
+            {
+                array = StringToColorArray(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+    public static Color32Arr[] StringToColor32Array2D(string valueStr,char splitSign1 = '&',char splitSign2 = '|')
+    {
+        if(string.IsNullOrEmpty(valueStr))
+            return null;
+        string[] strArr1 = valueStr.Split(splitSign1);
+        if(strArr1.Length == 0)
+            return null;
+
+        Color32Arr[] arrArr = new Color32Arr[strArr1.Length];
+        for(int i = 0; i < strArr1.Length; i++)
+        {
+            arrArr[i] = new Color32Arr()
+            {
+                array = StringToColor32Array(strArr1[i],splitSign2)
+            };
+        }
+        return arrArr;
+    }
+
+    #endregion
+
+    #region MyRegion
+
+    public static string GetRandomString(int length)
+    {
+        StringBuilder builder = new StringBuilder();
+        string abc = "abcdefghijklmnopqrstuvwxyzo0123456789QWERTYUIOPASDFGHJKLZXCCVBMN";
+        for(int i = 0; i < length; i++)
+        {
+            builder.Append(abc[UnityEngine.Random.Range(0,abc.Length - 1)]);
+        }
+        return builder.ToString();
+    }
+
+    public static string Join<T>(T[] arr,string join = ",")
+    {
+        if(arr == null || arr.Length == 0)
+            return null;
+
+        StringBuilder builder = new StringBuilder();
+        for(int i = 0; i < arr.Length; i++)
+        {
+            builder.Append(arr[i]);
+            if(i < arr.Length - 1)
+                builder.Append(join);
+        }
+        return builder.ToString();
+    }
+
+    /// <summary>
+    /// 中文逗号转英文逗号
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public static string ToDBC(string input)
+    {
+        char[] c = input.ToCharArray();
+        for(int i = 0; i < c.Length; i++)
+        {
+            if(c[i] == 12288)
+            {
+                c[i] = (char)32;
+                continue;
+            }
+            if(c[i] > 65280 && c[i] < 65375)
+                c[i] = (char)(c[i] - 65248);
+        }
+        return new string(c);
+    }
+
+    /// <summary>
+    /// 字符转 ascii 码 
+    /// </summary>
+    /// <param name="character"></param>
+    /// <returns></returns>
+    public static int Asc(string character)
+    {
+        if(character.Length == 1)
+        {
+            System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
+            int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
+            return (intAsciiCode);
+        }
+        Debug.LogError("Character is not valid.");
+        return -1;
+    }
+
+    /// <summary>
+    /// ascii码转字符
+    /// </summary>
+    /// <param name="asciiCode"></param>
+    /// <returns></returns>
+    public static string Chr(int asciiCode)
+    {
+        if(asciiCode >= 0 && asciiCode <= 255)
+        {
+            System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
+            byte[] byteArray = new byte[] { (byte)asciiCode };
+            string strCharacter = asciiEncoding.GetString(byteArray);
+            return (strCharacter);
+        }
+        Debug.LogError("ASCII Code is not valid.");
+        return string.Empty;
+    }
+
+    /// <summary>
+    /// 过滤掉表情符号
+    /// </summary>
+    /// <returns>The emoji.</returns>
+    /// <param name="str">String.</param>
+    public static string FilterEmoji(string str)
+    {
+        List<string> patten = new List<string>() { @"\p{Cs}",@"\p{Co}",@"\p{Cn}",@"[\u2702-\u27B0]" };
+        for(int i = 0; i < patten.Count; i++)
+        {
+            str = Regex.Replace(str,patten[i],"");//屏蔽emoji   
+        }
+        return str;
+    }
+
+    /// <summary>
+    /// 过滤掉表情符号
+    /// </summary>
+    /// <returns>The emoji.</returns>
+    /// <param name="str">String.</param>
+    public static bool IsFilterEmoji(string str)
+    {
+        bool bEmoji = false;
+        List<string> patten = new List<string>() { @"\p{Cs}",@"\p{Co}",@"\p{Cn}",@"[\u2702-\u27B0]" };
+        for(int i = 0; i < patten.Count; i++)
+        {
+            bEmoji = Regex.IsMatch(str,patten[i]);
+            if(bEmoji)
+            {
+                break;
+            }
+        }
+        return bEmoji;
+    }
+
+    #endregion
+
+    #region StringObjectDictionaryExtensions
+
+    /// <summary>
+    /// 针对字典中包含以下键值进行结构:mctid0=xxx;mccount0=1,mctid1=kn2,mccount=2。将其前缀去掉,数字后缀变为键,如{后缀,(去掉前后缀的键,值)},注意后缀可能是空字符串即没有后缀
+    /// </summary>
+    /// <param name="dic"></param>
+    /// <param name="prefix">前缀,可以是空引用或空字符串,都表示没有前缀。</param>
+    [MethodImpl(MethodImplOptions.AggressiveInlining)]
+    public static IEnumerable<IGrouping<string,(string, object)>> GetValuesWithoutPrefix(this IReadOnlyDictionary<string,object> dic,string prefix = null)
+    {
+        //prefix ??= string.Empty;
+        prefix = prefix ?? string.Empty;
+
+        var coll = from tmp in dic.Where(c => c.Key.StartsWith(prefix)) //仅针对指定前缀的键值
+                   let p3 = tmp.Key.Get3Segment(prefix)
+                   group (p3.Item2, tmp.Value) by p3.Item3;
+        return coll;
+    }
+
+    /// <summary>
+    /// 分解字符串为三段,前缀,词根,数字后缀(字符串形式)。
+    /// </summary>
+    /// <param name="str"></param>
+    /// <param name="prefix">前缀,可以是空引用或空字符串,都表示没有前缀。</param>
+    /// <returns></returns>
+    [MethodImpl(MethodImplOptions.AggressiveInlining)]
+    public static (string, string, string) Get3Segment(this string str,string prefix = null)
+    {
+        //prefix ??= string.Empty;
+        prefix = prefix ?? string.Empty;
+
+        //最后十进制数字尾串的长度
+        int suffixLen = Enumerable.Reverse(str).TakeWhile(c => char.IsDigit(c)).Count();
+        //获取十进制数字后缀
+        //string suufix = str[^suffixLen..];     //^suffixLen:倒序下标;suffixLen..:从指定位置开始直到末尾
+        string suufix = str.Substring(str.Length - suffixLen);
+
+        //return (prefix, str[prefix.Length..^suufix.Length], suufix);
+        string middle = str.Substring(prefix.Length,str.Length - prefix.Length - suufix.Length);
+        return (prefix, middle, suufix);
+    }
+
+    #endregion
+
+}

+ 11 - 0
Assets/Script/StringUtility.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a66b83578ca64434bab0fee7e8267448
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Settings.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 616db4b8968244fd09c25913bc964b30
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Settings/Build Profiles.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7addf18b5845342988ce76d4fff8089c
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 936 - 0
Assets/Settings/Build Profiles/New Web Profile.asset

@@ -0,0 +1,936 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 15003, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: New Web Profile
+  m_EditorClassIdentifier: 
+  m_AssetVersion: 1
+  m_BuildTarget: 20
+  m_Subtarget: 0
+  m_PlatformId: 84a3bb9e7420477f885e98145999eb20
+  m_PlatformBuildProfile:
+    rid: 6620760323640786946
+  m_OverrideGlobalSceneList: 1
+  m_Scenes:
+  - m_enabled: 1
+    m_path: Assets/Scenes/Game.unity
+  - m_enabled: 0
+    m_path: Assets/Samples/Examples/SampleScene.unity
+  m_ScriptingDefines: []
+  m_PlayerSettingsYaml:
+    m_Settings:
+    - line: '| PlayerSettings:'
+    - line: '|   m_ObjectHideFlags: 0'
+    - line: '|   serializedVersion: 28'
+    - line: '|   productGUID: 0ccdce129772e42d5b96ce6187bc394d'
+    - line: '|   AndroidProfiler: 0'
+    - line: '|   AndroidFilterTouchesWhenObscured: 0'
+    - line: '|   AndroidEnableSustainedPerformanceMode: 0'
+    - line: '|   defaultScreenOrientation: 4'
+    - line: '|   targetDevice: 2'
+    - line: '|   useOnDemandResources: 0'
+    - line: '|   accelerometerFrequency: 60'
+    - line: '|   companyName: DefaultCompany'
+    - line: '|   productName: "\u4E94\u4ED9\u89C2\u5947\u8C08"'
+    - line: '|   defaultCursor: {instanceID: 0}'
+    - line: '|   cursorHotspot: {x: 0, y: 0}'
+    - line: '|   m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b:
+        0.1254902, a: 1}'
+    - line: '|   m_ShowUnitySplashScreen: 1'
+    - line: '|   m_ShowUnitySplashLogo: 1'
+    - line: '|   m_SplashScreenOverlayOpacity: 1'
+    - line: '|   m_SplashScreenAnimation: 1'
+    - line: '|   m_SplashScreenLogoStyle: 1'
+    - line: '|   m_SplashScreenDrawMode: 0'
+    - line: '|   m_SplashScreenBackgroundAnimationZoom: 1'
+    - line: '|   m_SplashScreenLogoAnimationZoom: 1'
+    - line: '|   m_SplashScreenBackgroundLandscapeAspect: 1'
+    - line: '|   m_SplashScreenBackgroundPortraitAspect: 1'
+    - line: '|   m_SplashScreenBackgroundLandscapeUvs:'
+    - line: '|     serializedVersion: 2'
+    - line: '|     x: 0'
+    - line: '|     y: 0'
+    - line: '|     width: 1'
+    - line: '|     height: 1'
+    - line: '|   m_SplashScreenBackgroundPortraitUvs:'
+    - line: '|     serializedVersion: 2'
+    - line: '|     x: 0'
+    - line: '|     y: 0'
+    - line: '|     width: 1'
+    - line: '|     height: 1'
+    - line: '|   m_SplashScreenLogos: []'
+    - line: '|   m_VirtualRealitySplashScreen: {instanceID: 0}'
+    - line: '|   m_HolographicTrackingLossScreen: {instanceID: 0}'
+    - line: '|   defaultScreenWidth: 1920'
+    - line: '|   defaultScreenHeight: 1080'
+    - line: '|   defaultScreenWidthWeb: 960'
+    - line: '|   defaultScreenHeightWeb: 600'
+    - line: '|   m_StereoRenderingPath: 0'
+    - line: '|   m_ActiveColorSpace: 1'
+    - line: '|   unsupportedMSAAFallback: 0'
+    - line: '|   m_SpriteBatchMaxVertexCount: 65535'
+    - line: '|   m_SpriteBatchVertexThreshold: 300'
+    - line: '|   m_MTRendering: 1'
+    - line: '|   mipStripping: 0'
+    - line: '|   numberOfMipsStripped: 0'
+    - line: '|   numberOfMipsStrippedPerMipmapLimitGroup: {}'
+    - line: '|   m_StackTraceTypes: 010000000100000001000000010000000100000001000000'
+    - line: '|   iosShowActivityIndicatorOnLoading: -1'
+    - line: '|   androidShowActivityIndicatorOnLoading: -1'
+    - line: '|   iosUseCustomAppBackgroundBehavior: 0'
+    - line: '|   allowedAutorotateToPortrait: 1'
+    - line: '|   allowedAutorotateToPortraitUpsideDown: 1'
+    - line: '|   allowedAutorotateToLandscapeRight: 1'
+    - line: '|   allowedAutorotateToLandscapeLeft: 1'
+    - line: '|   useOSAutorotation: 1'
+    - line: '|   use32BitDisplayBuffer: 1'
+    - line: '|   preserveFramebufferAlpha: 0'
+    - line: '|   disableDepthAndStencilBuffers: 0'
+    - line: '|   androidStartInFullscreen: 1'
+    - line: '|   androidRenderOutsideSafeArea: 1'
+    - line: '|   androidUseSwappy: 1'
+    - line: '|   androidBlitType: 0'
+    - line: '|   androidResizeableActivity: 0'
+    - line: '|   androidDefaultWindowWidth: 1920'
+    - line: '|   androidDefaultWindowHeight: 1080'
+    - line: '|   androidMinimumWindowWidth: 400'
+    - line: '|   androidMinimumWindowHeight: 300'
+    - line: '|   androidFullscreenMode: 1'
+    - line: '|   androidAutoRotationBehavior: 1'
+    - line: '|   androidPredictiveBackSupport: 0'
+    - line: '|   androidApplicationEntry: 1'
+    - line: '|   defaultIsNativeResolution: 1'
+    - line: '|   macRetinaSupport: 1'
+    - line: '|   runInBackground: 1'
+    - line: '|   muteOtherAudioSources: 0'
+    - line: '|   Prepare IOS For Recording: 0'
+    - line: '|   Force IOS Speakers When Recording: 0'
+    - line: '|   deferSystemGesturesMode: 0'
+    - line: '|   hideHomeButton: 0'
+    - line: '|   submitAnalytics: 1'
+    - line: '|   usePlayerLog: 1'
+    - line: '|   dedicatedServerOptimizations: 0'
+    - line: '|   bakeCollisionMeshes: 0'
+    - line: '|   forceSingleInstance: 0'
+    - line: '|   useFlipModelSwapchain: 1'
+    - line: '|   resizableWindow: 0'
+    - line: '|   useMacAppStoreValidation: 0'
+    - line: '|   macAppStoreCategory: public.app-category.games'
+    - line: '|   gpuSkinning: 1'
+    - line: '|   meshDeformation: 2'
+    - line: '|   xboxPIXTextureCapture: 0'
+    - line: '|   xboxEnableAvatar: 0'
+    - line: '|   xboxEnableKinect: 0'
+    - line: '|   xboxEnableKinectAutoTracking: 0'
+    - line: '|   xboxEnableFitness: 0'
+    - line: '|   visibleInBackground: 1'
+    - line: '|   allowFullscreenSwitch: 1'
+    - line: '|   fullscreenMode: 1'
+    - line: '|   xboxSpeechDB: 0'
+    - line: '|   xboxEnableHeadOrientation: 0'
+    - line: '|   xboxEnableGuest: 0'
+    - line: '|   xboxEnablePIXSampling: 0'
+    - line: '|   metalFramebufferOnly: 0'
+    - line: '|   xboxOneResolution: 0'
+    - line: '|   xboxOneSResolution: 0'
+    - line: '|   xboxOneXResolution: 3'
+    - line: '|   xboxOneMonoLoggingLevel: 0'
+    - line: '|   xboxOneLoggingLevel: 1'
+    - line: '|   xboxOneDisableEsram: 0'
+    - line: '|   xboxOneEnableTypeOptimization: 0'
+    - line: '|   xboxOnePresentImmediateThreshold: 0'
+    - line: '|   switchQueueCommandMemory: 0'
+    - line: '|   switchQueueControlMemory: 16384'
+    - line: '|   switchQueueComputeMemory: 262144'
+    - line: '|   switchNVNShaderPoolsGranularity: 33554432'
+    - line: '|   switchNVNDefaultPoolsGranularity: 16777216'
+    - line: '|   switchNVNOtherPoolsGranularity: 16777216'
+    - line: '|   switchGpuScratchPoolGranularity: 2097152'
+    - line: '|   switchAllowGpuScratchShrinking: 0'
+    - line: '|   switchNVNMaxPublicTextureIDCount: 0'
+    - line: '|   switchNVNMaxPublicSamplerIDCount: 0'
+    - line: '|   switchMaxWorkerMultiple: 8'
+    - line: '|   switchNVNGraphicsFirmwareMemory: 32'
+    - line: '|   vulkanNumSwapchainBuffers: 3'
+    - line: '|   vulkanEnableSetSRGBWrite: 0'
+    - line: '|   vulkanEnablePreTransform: 1'
+    - line: '|   vulkanEnableLateAcquireNextImage: 0'
+    - line: '|   vulkanEnableCommandBufferRecycling: 1'
+    - line: '|   loadStoreDebugModeEnabled: 0'
+    - line: '|   visionOSBundleVersion: 1.0'
+    - line: '|   tvOSBundleVersion: 1.0'
+    - line: '|   bundleVersion: 0.1'
+    - line: '|   preloadedAssets: []'
+    - line: '|   metroInputSource: 0'
+    - line: '|   wsaTransparentSwapchain: 0'
+    - line: '|   m_HolographicPauseOnTrackingLoss: 1'
+    - line: '|   xboxOneDisableKinectGpuReservation: 1'
+    - line: '|   xboxOneEnable7thCore: 1'
+    - line: '|   vrSettings:'
+    - line: '|     enable360StereoCapture: 0'
+    - line: '|   isWsaHolographicRemotingEnabled: 0'
+    - line: '|   enableFrameTimingStats: 0'
+    - line: '|   enableOpenGLProfilerGPURecorders: 1'
+    - line: '|   allowHDRDisplaySupport: 0'
+    - line: '|   useHDRDisplay: 0'
+    - line: '|   hdrBitDepth: 0'
+    - line: '|   m_ColorGamuts: 00000000'
+    - line: '|   targetPixelDensity: 30'
+    - line: '|   resolutionScalingMode: 0'
+    - line: '|   resetResolutionOnWindowResize: 0'
+    - line: '|   androidSupportedAspectRatio: 1'
+    - line: '|   androidMaxAspectRatio: 2.1'
+    - line: '|   androidMinAspectRatio: 1'
+    - line: '|   applicationIdentifier: {}'
+    - line: '|   buildNumber:'
+    - line: '|     Standalone: 0'
+    - line: '|     VisionOS: 0'
+    - line: '|     iPhone: 0'
+    - line: '|     tvOS: 0'
+    - line: '|   overrideDefaultApplicationIdentifier: 0'
+    - line: '|   AndroidBundleVersionCode: 1'
+    - line: '|   AndroidMinSdkVersion: 23'
+    - line: '|   AndroidTargetSdkVersion: 0'
+    - line: '|   AndroidPreferredInstallLocation: 1'
+    - line: '|   aotOptions: '
+    - line: '|   stripEngineCode: 1'
+    - line: '|   iPhoneStrippingLevel: 0'
+    - line: '|   iPhoneScriptCallOptimization: 0'
+    - line: '|   ForceInternetPermission: 0'
+    - line: '|   ForceSDCardPermission: 0'
+    - line: '|   CreateWallpaper: 0'
+    - line: '|   androidSplitApplicationBinary: 0'
+    - line: '|   keepLoadedShadersAlive: 0'
+    - line: '|   StripUnusedMeshComponents: 1'
+    - line: '|   strictShaderVariantMatching: 0'
+    - line: '|   VertexChannelCompressionMask: 4054'
+    - line: '|   iPhoneSdkVersion: 988'
+    - line: '|   iOSSimulatorArchitecture: 0'
+    - line: '|   iOSTargetOSVersionString: 13.0'
+    - line: '|   tvOSSdkVersion: 0'
+    - line: '|   tvOSSimulatorArchitecture: 0'
+    - line: '|   tvOSRequireExtendedGameController: 0'
+    - line: '|   tvOSTargetOSVersionString: 13.0'
+    - line: '|   VisionOSSdkVersion: 0'
+    - line: '|   VisionOSTargetOSVersionString: 1.0'
+    - line: '|   uIPrerenderedIcon: 0'
+    - line: '|   uIRequiresPersistentWiFi: 0'
+    - line: '|   uIRequiresFullScreen: 1'
+    - line: '|   uIStatusBarHidden: 1'
+    - line: '|   uIExitOnSuspend: 0'
+    - line: '|   uIStatusBarStyle: 0'
+    - line: '|   appleTVSplashScreen: {instanceID: 0}'
+    - line: '|   appleTVSplashScreen2x: {instanceID: 0}'
+    - line: '|   tvOSSmallIconLayers: []'
+    - line: '|   tvOSSmallIconLayers2x: []'
+    - line: '|   tvOSLargeIconLayers: []'
+    - line: '|   tvOSLargeIconLayers2x: []'
+    - line: '|   tvOSTopShelfImageLayers: []'
+    - line: '|   tvOSTopShelfImageLayers2x: []'
+    - line: '|   tvOSTopShelfImageWideLayers: []'
+    - line: '|   tvOSTopShelfImageWideLayers2x: []'
+    - line: '|   iOSLaunchScreenType: 0'
+    - line: '|   iOSLaunchScreenPortrait: {instanceID: 0}'
+    - line: '|   iOSLaunchScreenLandscape: {instanceID: 0}'
+    - line: '|   iOSLaunchScreenBackgroundColor:'
+    - line: '|     serializedVersion: 2'
+    - line: '|     rgba: 0'
+    - line: '|   iOSLaunchScreenFillPct: 100'
+    - line: '|   iOSLaunchScreenSize: 100'
+    - line: '|   iOSLaunchScreeniPadType: 0'
+    - line: '|   iOSLaunchScreeniPadImage: {instanceID: 0}'
+    - line: '|   iOSLaunchScreeniPadBackgroundColor:'
+    - line: '|     serializedVersion: 2'
+    - line: '|     rgba: 0'
+    - line: '|   iOSLaunchScreeniPadFillPct: 100'
+    - line: '|   iOSLaunchScreeniPadSize: 100'
+    - line: '|   iOSLaunchScreenCustomStoryboardPath: '
+    - line: '|   iOSLaunchScreeniPadCustomStoryboardPath: '
+    - line: '|   iOSDeviceRequirements: []'
+    - line: '|   iOSURLSchemes: []'
+    - line: '|   macOSURLSchemes: []'
+    - line: '|   iOSBackgroundModes: 0'
+    - line: '|   iOSMetalForceHardShadows: 0'
+    - line: '|   metalEditorSupport: 1'
+    - line: '|   metalAPIValidation: 1'
+    - line: '|   metalCompileShaderBinary: 0'
+    - line: '|   iOSRenderExtraFrameOnPause: 0'
+    - line: '|   iosCopyPluginsCodeInsteadOfSymlink: 0'
+    - line: '|   appleDeveloperTeamID: '
+    - line: '|   iOSManualSigningProvisioningProfileID: '
+    - line: '|   tvOSManualSigningProvisioningProfileID: '
+    - line: '|   VisionOSManualSigningProvisioningProfileID: '
+    - line: '|   iOSManualSigningProvisioningProfileType: 0'
+    - line: '|   tvOSManualSigningProvisioningProfileType: 0'
+    - line: '|   VisionOSManualSigningProvisioningProfileType: 0'
+    - line: '|   appleEnableAutomaticSigning: 0'
+    - line: '|   iOSRequireARKit: 0'
+    - line: '|   iOSAutomaticallyDetectAndAddCapabilities: 1'
+    - line: '|   appleEnableProMotion: 0'
+    - line: '|   shaderPrecisionModel: 0'
+    - line: '|   clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea'
+    - line: '|   templatePackageId: com.unity.template.3d@8.1.1'
+    - line: '|   templateDefaultScene: Assets/Scenes/SampleScene.unity'
+    - line: '|   useCustomMainManifest: 0'
+    - line: '|   useCustomLauncherManifest: 0'
+    - line: '|   useCustomMainGradleTemplate: 0'
+    - line: '|   useCustomLauncherGradleManifest: 0'
+    - line: '|   useCustomBaseGradleTemplate: 0'
+    - line: '|   useCustomGradlePropertiesTemplate: 0'
+    - line: '|   useCustomGradleSettingsTemplate: 0'
+    - line: '|   useCustomProguardFile: 0'
+    - line: '|   AndroidTargetArchitectures: 1'
+    - line: '|   AndroidSplashScreenScale: 0'
+    - line: '|   androidSplashScreen: {instanceID: 0}'
+    - line: '|   AndroidKeystoreName: '
+    - line: '|   AndroidKeyaliasName: '
+    - line: '|   AndroidEnableArmv9SecurityFeatures: 0'
+    - line: '|   AndroidEnableArm64MTE: 0'
+    - line: '|   AndroidBuildApkPerCpuArchitecture: 0'
+    - line: '|   AndroidTVCompatibility: 0'
+    - line: '|   AndroidIsGame: 1'
+    - line: '|   AndroidEnableTango: 0'
+    - line: '|   androidEnableBanner: 1'
+    - line: '|   androidUseLowAccuracyLocation: 0'
+    - line: '|   androidUseCustomKeystore: 0'
+    - line: '|   m_AndroidBanners:'
+    - line: '|   - width: 320'
+    - line: '|     height: 180'
+    - line: '|     banner: {instanceID: 0}'
+    - line: '|   androidGamepadSupportLevel: 0'
+    - line: '|   AndroidMinifyRelease: 0'
+    - line: '|   AndroidMinifyDebug: 0'
+    - line: '|   AndroidValidateAppBundleSize: 1'
+    - line: '|   AndroidAppBundleSizeToValidate: 150'
+    - line: '|   AndroidReportGooglePlayAppDependencies: 1'
+    - line: '|   androidSymbolsSizeThreshold: 800'
+    - line: '|   m_BuildTargetIcons: []'
+    - line: '|   m_BuildTargetPlatformIcons:'
+    - line: '|   - m_BuildTarget: VisionOS'
+    - line: '|     m_Icons:'
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 1024'
+    - line: '|       m_Height: 1024'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|   - m_BuildTarget: Android'
+    - line: '|     m_Icons:'
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 432'
+    - line: '|       m_Height: 432'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 324'
+    - line: '|       m_Height: 324'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 216'
+    - line: '|       m_Height: 216'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 162'
+    - line: '|       m_Height: 162'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 108'
+    - line: '|       m_Height: 108'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 81'
+    - line: '|       m_Height: 81'
+    - line: '|       m_Kind: 2'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 192'
+    - line: '|       m_Height: 192'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 144'
+    - line: '|       m_Height: 144'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 96'
+    - line: '|       m_Height: 96'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 72'
+    - line: '|       m_Height: 72'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 48'
+    - line: '|       m_Height: 48'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 36'
+    - line: '|       m_Height: 36'
+    - line: '|       m_Kind: 1'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 192'
+    - line: '|       m_Height: 192'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 144'
+    - line: '|       m_Height: 144'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 96'
+    - line: '|       m_Height: 96'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 72'
+    - line: '|       m_Height: 72'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 48'
+    - line: '|       m_Height: 48'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|     - m_Textures: []'
+    - line: '|       m_Width: 36'
+    - line: '|       m_Height: 36'
+    - line: '|       m_Kind: 0'
+    - line: '|       m_SubKind: '
+    - line: '|   m_BuildTargetBatching:'
+    - line: '|   - m_BuildTarget: Standalone'
+    - line: '|     m_StaticBatching: 1'
+    - line: '|     m_DynamicBatching: 0'
+    - line: '|   - m_BuildTarget: tvOS'
+    - line: '|     m_StaticBatching: 1'
+    - line: '|     m_DynamicBatching: 0'
+    - line: '|   - m_BuildTarget: Android'
+    - line: '|     m_StaticBatching: 1'
+    - line: '|     m_DynamicBatching: 0'
+    - line: '|   - m_BuildTarget: iPhone'
+    - line: '|     m_StaticBatching: 1'
+    - line: '|     m_DynamicBatching: 0'
+    - line: '|   - m_BuildTarget: WebGL'
+    - line: '|     m_StaticBatching: 0'
+    - line: '|     m_DynamicBatching: 0'
+    - line: '|   m_BuildTargetShaderSettings: []'
+    - line: '|   m_BuildTargetGraphicsJobs:'
+    - line: '|   - m_BuildTarget: MacStandaloneSupport'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   - m_BuildTarget: Switch'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: MetroSupport'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: AppleTVSupport'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   - m_BuildTarget: BJMSupport'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: LinuxStandaloneSupport'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: PS4Player'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: iOSSupport'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   - m_BuildTarget: WindowsStandaloneSupport'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: XboxOnePlayer'
+    - line: '|     m_GraphicsJobs: 1'
+    - line: '|   - m_BuildTarget: LuminSupport'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   - m_BuildTarget: AndroidPlayer'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   - m_BuildTarget: WebGLSupport'
+    - line: '|     m_GraphicsJobs: 0'
+    - line: '|   m_BuildTargetGraphicsJobMode:'
+    - line: '|   - m_BuildTarget: PS4Player'
+    - line: '|     m_GraphicsJobMode: 0'
+    - line: '|   - m_BuildTarget: XboxOnePlayer'
+    - line: '|     m_GraphicsJobMode: 0'
+    - line: '|   m_BuildTargetGraphicsAPIs:'
+    - line: '|   - m_BuildTarget: AndroidPlayer'
+    - line: '|     m_APIs: 150000000b000000'
+    - line: '|     m_Automatic: 1'
+    - line: '|   - m_BuildTarget: iOSSupport'
+    - line: '|     m_APIs: 10000000'
+    - line: '|     m_Automatic: 1'
+    - line: '|   - m_BuildTarget: AppleTVSupport'
+    - line: '|     m_APIs: 10000000'
+    - line: '|     m_Automatic: 1'
+    - line: '|   - m_BuildTarget: WebGLSupport'
+    - line: '|     m_APIs: 0b000000'
+    - line: '|     m_Automatic: 1'
+    - line: '|   m_BuildTargetVRSettings:'
+    - line: '|   - m_BuildTarget: Standalone'
+    - line: '|     m_Enabled: 0'
+    - line: '|     m_Devices:'
+    - line: '|     - Oculus'
+    - line: '|     - OpenVR'
+    - line: '|   m_DefaultShaderChunkSizeInMB: 16'
+    - line: '|   m_DefaultShaderChunkCount: 0'
+    - line: '|   openGLRequireES31: 0'
+    - line: '|   openGLRequireES31AEP: 0'
+    - line: '|   openGLRequireES32: 0'
+    - line: '|   m_TemplateCustomTags:'
+    - line: '|     PRODUCT_DESCRIPTION: '
+    - line: '|   mobileMTRendering:'
+    - line: '|     Android: 1'
+    - line: '|     iPhone: 1'
+    - line: '|     tvOS: 1'
+    - line: '|   m_BuildTargetGroupLightmapEncodingQuality:'
+    - line: '|   - serializedVersion: 2'
+    - line: '|     m_BuildTarget: Android'
+    - line: '|     m_EncodingQuality: 1'
+    - line: '|   - serializedVersion: 2'
+    - line: '|     m_BuildTarget: iOS'
+    - line: '|     m_EncodingQuality: 1'
+    - line: '|   - serializedVersion: 2'
+    - line: '|     m_BuildTarget: tvOS'
+    - line: '|     m_EncodingQuality: 1'
+    - line: '|   m_BuildTargetGroupLightmapSettings: []'
+    - line: '|   m_BuildTargetGroupLoadStoreDebugModeSettings: []'
+    - line: '|   m_BuildTargetNormalMapEncoding:'
+    - line: '|   - m_BuildTarget: Android'
+    - line: '|     m_Encoding: 1'
+    - line: '|   - m_BuildTarget: iPhone'
+    - line: '|     m_Encoding: 1'
+    - line: '|   - m_BuildTarget: tvOS'
+    - line: '|     m_Encoding: 1'
+    - line: '|   m_BuildTargetDefaultTextureCompressionFormat:'
+    - line: '|   - serializedVersion: 3'
+    - line: '|     m_BuildTarget: Android'
+    - line: '|     m_Formats: 03000000'
+    - line: '|   - serializedVersion: 3'
+    - line: '|     m_BuildTarget: WebGL'
+    - line: '|     m_Formats: 05000000'
+    - line: '|   playModeTestRunnerEnabled: 0'
+    - line: '|   runPlayModeTestAsEditModeTest: 0'
+    - line: '|   actionOnDotNetUnhandledException: 1'
+    - line: '|   editorGfxJobOverride: 1'
+    - line: '|   enableInternalProfiler: 0'
+    - line: '|   logObjCUncaughtExceptions: 1'
+    - line: '|   enableCrashReportAPI: 0'
+    - line: '|   cameraUsageDescription: '
+    - line: '|   locationUsageDescription: '
+    - line: '|   microphoneUsageDescription: '
+    - line: '|   bluetoothUsageDescription: '
+    - line: '|   macOSTargetOSVersion: 11.0'
+    - line: '|   switchNMETAOverride: '
+    - line: '|   switchNetLibKey: '
+    - line: '|   switchSocketMemoryPoolSize: 6144'
+    - line: '|   switchSocketAllocatorPoolSize: 128'
+    - line: '|   switchSocketConcurrencyLimit: 14'
+    - line: '|   switchScreenResolutionBehavior: 2'
+    - line: '|   switchUseCPUProfiler: 0'
+    - line: '|   switchEnableFileSystemTrace: 0'
+    - line: '|   switchLTOSetting: 0'
+    - line: '|   switchApplicationID: 0x01004b9000490000'
+    - line: '|   switchNSODependencies: '
+    - line: '|   switchCompilerFlags: '
+    - line: '|   switchTitleNames_0: '
+    - line: '|   switchTitleNames_1: '
+    - line: '|   switchTitleNames_2: '
+    - line: '|   switchTitleNames_3: '
+    - line: '|   switchTitleNames_4: '
+    - line: '|   switchTitleNames_5: '
+    - line: '|   switchTitleNames_6: '
+    - line: '|   switchTitleNames_7: '
+    - line: '|   switchTitleNames_8: '
+    - line: '|   switchTitleNames_9: '
+    - line: '|   switchTitleNames_10: '
+    - line: '|   switchTitleNames_11: '
+    - line: '|   switchTitleNames_12: '
+    - line: '|   switchTitleNames_13: '
+    - line: '|   switchTitleNames_14: '
+    - line: '|   switchTitleNames_15: '
+    - line: '|   switchPublisherNames_0: '
+    - line: '|   switchPublisherNames_1: '
+    - line: '|   switchPublisherNames_2: '
+    - line: '|   switchPublisherNames_3: '
+    - line: '|   switchPublisherNames_4: '
+    - line: '|   switchPublisherNames_5: '
+    - line: '|   switchPublisherNames_6: '
+    - line: '|   switchPublisherNames_7: '
+    - line: '|   switchPublisherNames_8: '
+    - line: '|   switchPublisherNames_9: '
+    - line: '|   switchPublisherNames_10: '
+    - line: '|   switchPublisherNames_11: '
+    - line: '|   switchPublisherNames_12: '
+    - line: '|   switchPublisherNames_13: '
+    - line: '|   switchPublisherNames_14: '
+    - line: '|   switchPublisherNames_15: '
+    - line: '|   switchIcons_0: {instanceID: 0}'
+    - line: '|   switchIcons_1: {instanceID: 0}'
+    - line: '|   switchIcons_2: {instanceID: 0}'
+    - line: '|   switchIcons_3: {instanceID: 0}'
+    - line: '|   switchIcons_4: {instanceID: 0}'
+    - line: '|   switchIcons_5: {instanceID: 0}'
+    - line: '|   switchIcons_6: {instanceID: 0}'
+    - line: '|   switchIcons_7: {instanceID: 0}'
+    - line: '|   switchIcons_8: {instanceID: 0}'
+    - line: '|   switchIcons_9: {instanceID: 0}'
+    - line: '|   switchIcons_10: {instanceID: 0}'
+    - line: '|   switchIcons_11: {instanceID: 0}'
+    - line: '|   switchIcons_12: {instanceID: 0}'
+    - line: '|   switchIcons_13: {instanceID: 0}'
+    - line: '|   switchIcons_14: {instanceID: 0}'
+    - line: '|   switchIcons_15: {instanceID: 0}'
+    - line: '|   switchSmallIcons_0: {instanceID: 0}'
+    - line: '|   switchSmallIcons_1: {instanceID: 0}'
+    - line: '|   switchSmallIcons_2: {instanceID: 0}'
+    - line: '|   switchSmallIcons_3: {instanceID: 0}'
+    - line: '|   switchSmallIcons_4: {instanceID: 0}'
+    - line: '|   switchSmallIcons_5: {instanceID: 0}'
+    - line: '|   switchSmallIcons_6: {instanceID: 0}'
+    - line: '|   switchSmallIcons_7: {instanceID: 0}'
+    - line: '|   switchSmallIcons_8: {instanceID: 0}'
+    - line: '|   switchSmallIcons_9: {instanceID: 0}'
+    - line: '|   switchSmallIcons_10: {instanceID: 0}'
+    - line: '|   switchSmallIcons_11: {instanceID: 0}'
+    - line: '|   switchSmallIcons_12: {instanceID: 0}'
+    - line: '|   switchSmallIcons_13: {instanceID: 0}'
+    - line: '|   switchSmallIcons_14: {instanceID: 0}'
+    - line: '|   switchSmallIcons_15: {instanceID: 0}'
+    - line: '|   switchManualHTML: '
+    - line: '|   switchAccessibleURLs: '
+    - line: '|   switchLegalInformation: '
+    - line: '|   switchMainThreadStackSize: 1048576'
+    - line: '|   switchPresenceGroupId: '
+    - line: '|   switchLogoHandling: 0'
+    - line: '|   switchReleaseVersion: 0'
+    - line: '|   switchDisplayVersion: 1.0.0'
+    - line: '|   switchStartupUserAccount: 0'
+    - line: '|   switchSupportedLanguagesMask: 0'
+    - line: '|   switchLogoType: 0'
+    - line: '|   switchApplicationErrorCodeCategory: '
+    - line: '|   switchUserAccountSaveDataSize: 0'
+    - line: '|   switchUserAccountSaveDataJournalSize: 0'
+    - line: '|   switchApplicationAttribute: 0'
+    - line: '|   switchCardSpecSize: -1'
+    - line: '|   switchCardSpecClock: -1'
+    - line: '|   switchRatingsMask: 0'
+    - line: '|   switchRatingsInt_0: 0'
+    - line: '|   switchRatingsInt_1: 0'
+    - line: '|   switchRatingsInt_2: 0'
+    - line: '|   switchRatingsInt_3: 0'
+    - line: '|   switchRatingsInt_4: 0'
+    - line: '|   switchRatingsInt_5: 0'
+    - line: '|   switchRatingsInt_6: 0'
+    - line: '|   switchRatingsInt_7: 0'
+    - line: '|   switchRatingsInt_8: 0'
+    - line: '|   switchRatingsInt_9: 0'
+    - line: '|   switchRatingsInt_10: 0'
+    - line: '|   switchRatingsInt_11: 0'
+    - line: '|   switchRatingsInt_12: 0'
+    - line: '|   switchLocalCommunicationIds_0: '
+    - line: '|   switchLocalCommunicationIds_1: '
+    - line: '|   switchLocalCommunicationIds_2: '
+    - line: '|   switchLocalCommunicationIds_3: '
+    - line: '|   switchLocalCommunicationIds_4: '
+    - line: '|   switchLocalCommunicationIds_5: '
+    - line: '|   switchLocalCommunicationIds_6: '
+    - line: '|   switchLocalCommunicationIds_7: '
+    - line: '|   switchParentalControl: 0'
+    - line: '|   switchAllowsScreenshot: 1'
+    - line: '|   switchAllowsVideoCapturing: 1'
+    - line: '|   switchAllowsRuntimeAddOnContentInstall: 0'
+    - line: '|   switchDataLossConfirmation: 0'
+    - line: '|   switchUserAccountLockEnabled: 0'
+    - line: '|   switchSystemResourceMemory: 16777216'
+    - line: '|   switchSupportedNpadStyles: 22'
+    - line: '|   switchNativeFsCacheSize: 32'
+    - line: '|   switchIsHoldTypeHorizontal: 0'
+    - line: '|   switchSupportedNpadCount: 8'
+    - line: '|   switchEnableTouchScreen: 1'
+    - line: '|   switchSocketConfigEnabled: 0'
+    - line: '|   switchTcpInitialSendBufferSize: 32'
+    - line: '|   switchTcpInitialReceiveBufferSize: 64'
+    - line: '|   switchTcpAutoSendBufferSizeMax: 256'
+    - line: '|   switchTcpAutoReceiveBufferSizeMax: 256'
+    - line: '|   switchUdpSendBufferSize: 9'
+    - line: '|   switchUdpReceiveBufferSize: 42'
+    - line: '|   switchSocketBufferEfficiency: 4'
+    - line: '|   switchSocketInitializeEnabled: 1'
+    - line: '|   switchNetworkInterfaceManagerInitializeEnabled: 1'
+    - line: '|   switchDisableHTCSPlayerConnection: 0'
+    - line: '|   switchUseNewStyleFilepaths: 1'
+    - line: '|   switchUseLegacyFmodPriorities: 0'
+    - line: '|   switchUseMicroSleepForYield: 1'
+    - line: '|   switchEnableRamDiskSupport: 0'
+    - line: '|   switchMicroSleepForYieldTime: 25'
+    - line: '|   switchRamDiskSpaceSize: 12'
+    - line: '|   switchUpgradedPlayerSettingsToNMETA: 0'
+    - line: '|   ps4NPAgeRating: 12'
+    - line: '|   ps4NPTitleSecret: '
+    - line: '|   ps4NPTrophyPackPath: '
+    - line: '|   ps4ParentalLevel: 11'
+    - line: '|   ps4ContentID: ED1633-NPXX51362_00-0000000000000000'
+    - line: '|   ps4Category: 0'
+    - line: '|   ps4MasterVersion: 01.00'
+    - line: '|   ps4AppVersion: 01.00'
+    - line: '|   ps4AppType: 0'
+    - line: '|   ps4ParamSfxPath: '
+    - line: '|   ps4VideoOutPixelFormat: 0'
+    - line: '|   ps4VideoOutInitialWidth: 1920'
+    - line: '|   ps4VideoOutBaseModeInitialWidth: 1920'
+    - line: '|   ps4VideoOutReprojectionRate: 60'
+    - line: '|   ps4PronunciationXMLPath: '
+    - line: '|   ps4PronunciationSIGPath: '
+    - line: '|   ps4BackgroundImagePath: '
+    - line: '|   ps4StartupImagePath: '
+    - line: '|   ps4StartupImagesFolder: '
+    - line: '|   ps4IconImagesFolder: '
+    - line: '|   ps4SaveDataImagePath: '
+    - line: '|   ps4SdkOverride: '
+    - line: '|   ps4BGMPath: '
+    - line: '|   ps4ShareFilePath: '
+    - line: '|   ps4ShareOverlayImagePath: '
+    - line: '|   ps4PrivacyGuardImagePath: '
+    - line: '|   ps4ExtraSceSysFile: '
+    - line: '|   ps4NPtitleDatPath: '
+    - line: '|   ps4RemotePlayKeyAssignment: -1'
+    - line: '|   ps4RemotePlayKeyMappingDir: '
+    - line: '|   ps4PlayTogetherPlayerCount: 0'
+    - line: '|   ps4EnterButtonAssignment: 1'
+    - line: '|   ps4ApplicationParam1: 0'
+    - line: '|   ps4ApplicationParam2: 0'
+    - line: '|   ps4ApplicationParam3: 0'
+    - line: '|   ps4ApplicationParam4: 0'
+    - line: '|   ps4DownloadDataSize: 0'
+    - line: '|   ps4GarlicHeapSize: 2048'
+    - line: '|   ps4ProGarlicHeapSize: 2560'
+    - line: '|   playerPrefsMaxSize: 32768'
+    - line: '|   ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ'
+    - line: '|   ps4pnSessions: 1'
+    - line: '|   ps4pnPresence: 1'
+    - line: '|   ps4pnFriends: 1'
+    - line: '|   ps4pnGameCustomData: 1'
+    - line: '|   playerPrefsSupport: 0'
+    - line: '|   enableApplicationExit: 0'
+    - line: '|   resetTempFolder: 1'
+    - line: '|   restrictedAudioUsageRights: 0'
+    - line: '|   ps4UseResolutionFallback: 0'
+    - line: '|   ps4ReprojectionSupport: 0'
+    - line: '|   ps4UseAudio3dBackend: 0'
+    - line: '|   ps4UseLowGarlicFragmentationMode: 1'
+    - line: '|   ps4SocialScreenEnabled: 0'
+    - line: '|   ps4ScriptOptimizationLevel: 0'
+    - line: '|   ps4Audio3dVirtualSpeakerCount: 14'
+    - line: '|   ps4attribCpuUsage: 0'
+    - line: '|   ps4PatchPkgPath: '
+    - line: '|   ps4PatchLatestPkgPath: '
+    - line: '|   ps4PatchChangeinfoPath: '
+    - line: '|   ps4PatchDayOne: 0'
+    - line: '|   ps4attribUserManagement: 0'
+    - line: '|   ps4attribMoveSupport: 0'
+    - line: '|   ps4attrib3DSupport: 0'
+    - line: '|   ps4attribShareSupport: 0'
+    - line: '|   ps4attribExclusiveVR: 0'
+    - line: '|   ps4disableAutoHideSplash: 0'
+    - line: '|   ps4videoRecordingFeaturesUsed: 0'
+    - line: '|   ps4contentSearchFeaturesUsed: 0'
+    - line: '|   ps4CompatibilityPS5: 0'
+    - line: '|   ps4AllowPS5Detection: 0'
+    - line: '|   ps4GPU800MHz: 1'
+    - line: '|   ps4attribEyeToEyeDistanceSettingVR: 0'
+    - line: '|   ps4IncludedModules: []'
+    - line: '|   ps4attribVROutputEnabled: 0'
+    - line: '|   monoEnv: '
+    - line: '|   splashScreenBackgroundSourceLandscape: {instanceID: 0}'
+    - line: '|   splashScreenBackgroundSourcePortrait: {instanceID: 0}'
+    - line: '|   blurSplashScreenBackground: 1'
+    - line: '|   spritePackerPolicy: '
+    - line: '|   webGLMemorySize: 16'
+    - line: '|   webGLExceptionSupport: 2'
+    - line: '|   webGLNameFilesAsHashes: 0'
+    - line: '|   webGLShowDiagnostics: 0'
+    - line: '|   webGLDataCaching: 1'
+    - line: '|   webGLDebugSymbols: 0'
+    - line: '|   webGLEmscriptenArgs: '
+    - line: '|   webGLModulesDirectory: '
+    - line: '|   webGLTemplate: PROJECT:iTracker'
+    - line: '|   webGLAnalyzeBuildSize: 0'
+    - line: '|   webGLUseEmbeddedResources: 0'
+    - line: '|   webGLCompressionFormat: 1'
+    - line: '|   webGLWasmArithmeticExceptions: 0'
+    - line: '|   webGLLinkerTarget: 1'
+    - line: '|   webGLThreadsSupport: 0'
+    - line: '|   webGLDecompressionFallback: 1'
+    - line: '|   webGLInitialMemorySize: 512'
+    - line: '|   webGLMaximumMemorySize: 2048'
+    - line: '|   webGLMemoryGrowthMode: 2'
+    - line: '|   webGLMemoryLinearGrowthStep: 16'
+    - line: '|   webGLMemoryGeometricGrowthStep: 0.2'
+    - line: '|   webGLMemoryGeometricGrowthCap: 96'
+    - line: '|   webGLEnableWebGPU: 0'
+    - line: '|   webGLPowerPreference: 2'
+    - line: '|   webGLWebAssemblyTable: 0'
+    - line: '|   webGLWebAssemblyBigInt: 0'
+    - line: '|   webGLCloseOnQuit: 0'
+    - line: '|   webWasm2023: 0'
+    - line: '|   scriptingDefineSymbols:'
+    - line: '|     WebGL: '
+    - line: '|   additionalCompilerArguments: {}'
+    - line: '|   platformArchitecture: {}'
+    - line: '|   scriptingBackend: {}'
+    - line: '|   il2cppCompilerConfiguration: {}'
+    - line: '|   il2cppCodeGeneration: {}'
+    - line: '|   il2cppStacktraceInformation: {}'
+    - line: '|   managedStrippingLevel:'
+    - line: '|     EmbeddedLinux: 1'
+    - line: '|     GameCoreScarlett: 1'
+    - line: '|     GameCoreXboxOne: 1'
+    - line: '|     Nintendo Switch: 1'
+    - line: '|     PS4: 1'
+    - line: '|     PS5: 1'
+    - line: '|     QNX: 1'
+    - line: '|     Stadia: 1'
+    - line: '|     VisionOS: 1'
+    - line: '|     WebGL: 1'
+    - line: '|     Windows Store Apps: 1'
+    - line: '|     XboxOne: 1'
+    - line: '|     iPhone: 1'
+    - line: '|     tvOS: 1'
+    - line: '|   incrementalIl2cppBuild: {}'
+    - line: '|   suppressCommonWarnings: 1'
+    - line: '|   allowUnsafeCode: 0'
+    - line: '|   useDeterministicCompilation: 1'
+    - line: '|   additionalIl2CppArgs: '
+    - line: '|   scriptingRuntimeVersion: 1'
+    - line: '|   gcIncremental: 1'
+    - line: '|   gcWBarrierValidation: 0'
+    - line: '|   apiCompatibilityLevelPerPlatform: {}'
+    - line: '|   editorAssembliesCompatibilityLevel: 1'
+    - line: '|   m_RenderingPath: 1'
+    - line: '|   m_MobileRenderingPath: 1'
+    - line: '|   metroPackageName: WXGame'
+    - line: '|   metroPackageVersion: '
+    - line: '|   metroCertificatePath: '
+    - line: '|   metroCertificatePassword: '
+    - line: '|   metroCertificateSubject: '
+    - line: '|   metroCertificateIssuer: '
+    - line: '|   metroCertificateNotAfter: 0000000000000000'
+    - line: '|   metroApplicationDescription: WXGame'
+    - line: '|   wsaImages: {}'
+    - line: '|   metroTileShortName: '
+    - line: '|   metroTileShowName: 0'
+    - line: '|   metroMediumTileShowName: 0'
+    - line: '|   metroLargeTileShowName: 0'
+    - line: '|   metroWideTileShowName: 0'
+    - line: '|   metroSupportStreamingInstall: 0'
+    - line: '|   metroLastRequiredScene: 0'
+    - line: '|   metroDefaultTileSize: 1'
+    - line: '|   metroTileForegroundText: 2'
+    - line: '|   metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628,
+        a: 0}'
+    - line: '|   metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902,
+        b: 0.21568628, a: 1}'
+    - line: '|   metroSplashScreenUseBackgroundColor: 0'
+    - line: '|   syncCapabilities: 0'
+    - line: '|   platformCapabilities: {}'
+    - line: '|   metroTargetDeviceFamilies: {}'
+    - line: '|   metroFTAName: '
+    - line: '|   metroFTAFileTypes: []'
+    - line: '|   metroProtocolName: '
+    - line: '|   vcxProjDefaultLanguage: '
+    - line: '|   XboxOneProductId: '
+    - line: '|   XboxOneUpdateKey: '
+    - line: '|   XboxOneSandboxId: '
+    - line: '|   XboxOneContentId: '
+    - line: '|   XboxOneTitleId: '
+    - line: '|   XboxOneSCId: '
+    - line: '|   XboxOneGameOsOverridePath: '
+    - line: '|   XboxOnePackagingOverridePath: '
+    - line: '|   XboxOneAppManifestOverridePath: '
+    - line: '|   XboxOneVersion: 1.0.0.0'
+    - line: '|   XboxOnePackageEncryption: 0'
+    - line: '|   XboxOnePackageUpdateGranularity: 2'
+    - line: '|   XboxOneDescription: '
+    - line: '|   XboxOneLanguage:'
+    - line: '|   - enus'
+    - line: '|   XboxOneCapability: []'
+    - line: '|   XboxOneGameRating: {}'
+    - line: '|   XboxOneIsContentPackage: 0'
+    - line: '|   XboxOneEnhancedXboxCompatibilityMode: 0'
+    - line: '|   XboxOneEnableGPUVariability: 1'
+    - line: '|   XboxOneSockets: {}'
+    - line: '|   XboxOneSplashScreen: {instanceID: 0}'
+    - line: '|   XboxOneAllowedProductIds: []'
+    - line: '|   XboxOnePersistentLocalStorageSize: 0'
+    - line: '|   XboxOneXTitleMemory: 8'
+    - line: '|   XboxOneOverrideIdentityName: '
+    - line: '|   XboxOneOverrideIdentityPublisher: '
+    - line: '|   vrEditorSettings: {}'
+    - line: '|   cloudServicesEnabled:'
+    - line: '|     UNet: 1'
+    - line: '|   luminIcon:'
+    - line: '|     m_Name: '
+    - line: '|     m_ModelFolderPath: '
+    - line: '|     m_PortalFolderPath: '
+    - line: '|   luminCert:'
+    - line: '|     m_CertPath: '
+    - line: '|     m_SignPackage: 1'
+    - line: '|   luminIsChannelApp: 0'
+    - line: '|   luminVersion:'
+    - line: '|     m_VersionCode: 1'
+    - line: '|     m_VersionName: '
+    - line: '|   hmiPlayerDataPath: '
+    - line: '|   hmiForceSRGBBlit: 1'
+    - line: '|   embeddedLinuxEnableGamepadInput: 1'
+    - line: '|   hmiCpuConfiguration: '
+    - line: '|   hmiLogStartupTiming: 0'
+    - line: '|   qnxGraphicConfPath: '
+    - line: '|   apiCompatibilityLevel: 6'
+    - line: '|   captureStartupLogs: {}'
+    - line: '|   activeInputHandler: 2'
+    - line: '|   windowsGamepadBackendHint: 0'
+    - line: '|   cloudProjectId: 97f99545-7068-41b7-afe3-9040cfb8ee3c'
+    - line: '|   framebufferDepthMemorylessMode: 0'
+    - line: '|   qualitySettingsNames: []'
+    - line: '|   projectName: unity6test'
+    - line: '|   organizationId: mama123dfd'
+    - line: '|   cloudEnabled: 0'
+    - line: '|   legacyClampBlendShapeWeights: 0'
+    - line: '|   hmiLoadingImage: {instanceID: 0}'
+    - line: '|   platformRequiresReadableAssets: 0'
+    - line: '|   virtualTexturingSupportEnabled: 0'
+    - line: '|   insecureHttpOption: 2'
+    - line: '|   androidVulkanDenyFilterList: []'
+    - line: '|   androidVulkanAllowFilterList: []'
+    - line: '| '
+  references:
+    version: 2
+    RefIds:
+    - rid: 6620760323640786946
+      type: {class: WebGLPlatformSettings, ns: UnityEditor.WebGL, asm: UnityEditor.WebGL.Extensions}
+      data:
+        m_Development: 0
+        m_ConnectProfiler: 0
+        m_BuildWithDeepProfilingSupport: 0
+        m_AllowDebugging: 0
+        m_WaitForManagedDebugger: 0
+        m_ManagedDebuggerFixedPort: 0
+        m_ExplicitNullChecks: 0
+        m_ExplicitDivideByZeroChecks: 0
+        m_ExplicitArrayBoundsChecks: 0
+        m_CompressionType: -1
+        m_InstallInBuildFolder: 0
+        m_CodeOptimization: 4
+        m_WebGLClientBrowserPath: 
+        m_WebGLClientBrowserType: 0
+        m_WebGLTextureSubtarget: 0

+ 8 - 0
Assets/Settings/Build Profiles/New Web Profile.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c3f92e1c548004c0f94a9fc75cd03036
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 7 - 4
Assets/TaskConfig.cs

@@ -17,9 +17,10 @@ public class TaskConfig : ScriptableObject
         [System.Serializable]
         public class TaskItem
         {
-            public List<showdaoju> xiansuos;
+            public bool[] xiansuos;
             public TaskType type;
             public bool isNoshow;
+            public string lihui;
             public string info;
             public string info2;
             public string bgName;
@@ -27,16 +28,18 @@ public class TaskConfig : ScriptableObject
             public string taskcheck;
             public string centerName;
             public float centersize = 1;
+            public float lihuisize = 1;
             public string perbName;
             public bool isClose;
             public bool isTuo;
-            public List<showdaoju> daojus;
+            public bool[] daojus;
             public bool isClosebtShow;
             public bool isTextNext = true;
             public bool isARSao=true;
-            public bool isnongwu;
             public int arid;
-            public List<ChooseItem> chooseItems;
+            public string texiao;
+            public string guochang;
+            public bool isguochangskip;
 
         }
         [System.Serializable]

+ 108 - 35
Assets/TaskManager.cs

@@ -3,6 +3,7 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 using Imagine.WebAR;
+using Nfynt;
 using TMPro;
 using TriLibCore;
 using UnityEngine;
@@ -15,8 +16,8 @@ public class TaskManager : MonoBehaviour
     public GameObject HtmlBG;
     public UserInfo myInfo;
     public ARCamera ar;
-    public List<TaskConfig> tconfigs;
-    public TaskConfig ntconfig;
+    public List<TestConfigExcelData> tconfigs;
+    public TestConfigExcelData ntconfig;
 
     public RawImage bg;
     public RawImage imgbg;
@@ -56,7 +57,7 @@ public class TaskManager : MonoBehaviour
 
     public GameObject Inputgo;
     public GameObject duihuakuang;
-    TaskItem nowTaskItem;
+    TestConfigExcelItem nowTaskItem;
 
     public GameObject xiansuo;
     public int nowTaskIndex;
@@ -66,6 +67,7 @@ public class TaskManager : MonoBehaviour
     public GameObject inputbt;
     private void Awake()
     {
+       // PlayerPrefs.DeleteAll();
         StartCoroutine(InitGame());
     }
 
@@ -104,7 +106,7 @@ public class TaskManager : MonoBehaviour
             nowTaskIndex = myInfo.taskIndex;
             nowTaskCt = myInfo.taskCt;
             ntconfig = tconfigs[nowTaskCt];
-            nowTaskItem = ntconfig.TaskList[nowTaskIndex];
+            nowTaskItem = ntconfig.items[nowTaskIndex];
             yield return StartCoroutine(checktaskSence(nowTaskItem));
         }
 
@@ -126,7 +128,7 @@ public class TaskManager : MonoBehaviour
             nowTaskIndex = -1;
             ntconfig = tconfigs[nowTaskCt];
 
-            nowTaskItem = ntconfig.TaskList[0];
+            nowTaskItem = ntconfig.items[0];
             nextTask();
             Main.SetActive(false);
             Sence.SetActive(true);
@@ -141,16 +143,17 @@ public class TaskManager : MonoBehaviour
         nowTaskCt = 1;
         nowTaskIndex = 8;
         ntconfig = tconfigs[nowTaskCt];
-        nowTaskItem = ntconfig.TaskList[nowTaskIndex];
+        nowTaskItem = ntconfig.items[nowTaskIndex];
         nextTask();
         Main.SetActive(false);
         Sence.SetActive(true);
     }
     GameObject hc;
 
+    public RawImage lihui;
     public List<GameObject> items;
     public GameObject rawjingzi;
-    private IEnumerator checktaskSence(TaskItem ti)
+    private IEnumerator checktaskSence(TestConfigExcelItem ti)
     {
         if(hc)
         {
@@ -175,6 +178,20 @@ public class TaskManager : MonoBehaviour
             }
         });
 
+
+        getTexture(ti.lihui, (tex) => {
+            if (tex)
+            {
+                lihui.texture = tex;
+                lihui.color = new Color(bg.color.r, bg.color.g, bg.color.b, 1);
+                lihui.transform.localScale = new Vector3(ti.lihuisize, ti.lihuisize, ti.lihuisize);
+            }
+            else
+            {
+                lihui.color = new Color(bg.color.r, bg.color.g, bg.color.b, 0);
+            }
+        });
+
         getTexture(ti.imgName, (tex) => {
             if (tex)
             {
@@ -194,7 +211,7 @@ public class TaskManager : MonoBehaviour
                 centerbg.texture = tex;
                 centerbg.color = new Color(bg.color.r, bg.color.g, bg.color.b, 1);
                 centerbg.gameObject.SetActive(true);
-                centerbg.transform.localScale = new Vector3(1.1f, 1.1f, 1.1f);
+                centerbg.transform.localScale = new Vector3(ti.centersize, ti.centersize, ti.centersize);
             }
             else
             {
@@ -215,7 +232,7 @@ public class TaskManager : MonoBehaviour
             }
 
         });
-        if(ti.type != TaskConfig.TaskType.ARTask)
+        if(ti.type != TaskType.ARTask)
         {
             bigbg.color = new Color(bigbg.color.r, bigbg.color.g, bigbg.color.b, 1);
             imgbg.color = new Color(imgbg.color.r, imgbg.color.g, imgbg.color.b, 1);
@@ -224,9 +241,9 @@ public class TaskManager : MonoBehaviour
 
         for (int i = 0; i < items.Count; i++)
         {
-            if(ti.daojus.Count>i)
+            if(ti.daojus.Length>i)
             {
-                items[i].SetActive(ti.daojus[i].isshow);
+                items[i].SetActive(ti.daojus[i]);
             }else
             {
                 items[i].SetActive(false);
@@ -237,11 +254,11 @@ public class TaskManager : MonoBehaviour
         ar_1glb.SetActive(false);
         ar_2glb.SetActive(false);
         inputbt.SetActive(false);
-        HtmlBG.SetActive(ti.type!=TaskConfig.TaskType.ARTask);
+        HtmlBG.SetActive(ti.type!=TaskType.ARTask);
         shibie.SetActive(false);
         switch (ti.type)
         {
-            case TaskConfig.TaskType.Dialogue:
+            case TaskType.Dialogue:
                 if (isarinit)
                 {
                     //wtracker.StopTracker();
@@ -258,7 +275,7 @@ public class TaskManager : MonoBehaviour
                 tuodongbg.SetActive(ti.isTuo);
                 rawjingzi.SetActive(ti.isTuo);
                 break;
-            case TaskConfig.TaskType.Xiansuo:
+            case TaskType.Xiansuo:
                 if (isarinit)
                 {
                     ar.PauseCamera();
@@ -267,7 +284,7 @@ public class TaskManager : MonoBehaviour
                 Sence.SetActive(true);
                 xiansuo.SetActive(true);
                 break;
-            case TaskConfig.TaskType.ARTask:
+            case TaskType.ARTask:
                 if (!isarinit)
                 {
                     ar.InitAR();
@@ -333,33 +350,66 @@ public class TaskManager : MonoBehaviour
                 arcount = ti.arid;
               //  Main.SetActive(false);
                 break;
-            case TaskConfig.TaskType.SkipSence:
+            case TaskType.SkipSence:
                 if (isarinit)
                 {
                     ar.PauseCamera();
                 }
-                switch (ti.info)
+                switch (ti.guochang)
                 {
                     case "daoju":
                         daoju.SetActive(true);
                         Invoke("nextTask", 1f);
                         break;
-                    case "end":
-                        video.SetActive(true);
-                        duihuakuang.SetActive(ti.centerName != "one_end");
-                        Invoke("videoclose", 3f);
-                        break;
-                    case "end2":
-                        end2.SetActive(true);
-                        break;
                     case "main":
                         Main.SetActive(true);
                         Sence.SetActive(false);
                         main_click.SetActive(true);
                         break;
+                    default:
+                        if(ti.guochang!="")
+                        {
+
+                            GameObject v = video;
+                            if (ti.isguochangskip)
+                                v = end2;
+                            v.SetActive(true);
+                            v.GetComponent<NVideoPlayer>().enabled = true;
+                            yield return null;
+                            v.GetComponent<NVideoPlayer>().Config.PlayOnAwake = false;
+                            v.GetComponent<NVideoPlayer>().Config.VideoSrcPath = Application.streamingAssetsPath + "/" + ti.guochang + ".mp4";
+                            v.GetComponent<NVideoPlayer>().Config.LoopPlayer = ti.isguochangskip;
+                            if (ti.isguochangskip)
+                                v.GetComponent<NVideoPlayer>().Unmute();
+                            else
+                                v.GetComponent<NVideoPlayer>().Mute();
+
+                            yield return null;
+                            if(!v.GetComponent<NVideoPlayer>().enabled)
+                            {
+                                v.GetComponent<NVideoPlayer>().enabled = true;
+                                yield return null;
+                                if (!v.GetComponent<NVideoPlayer>().IsPlaying)
+                                    v.GetComponent<NVideoPlayer>().Play();
+
+                            }
+
+
+                            if (!ti.isguochangskip)
+                            {
+                                duihuakuang.SetActive(ti.centerName != "one_end");
+                                Invoke("videoclose", 3f);
+
+                            }
+                        }
+                        else
+                        {
+
+                        }
+                        break;
                 }
                 break;
-            case TaskConfig.TaskType.GameTask:
+            case TaskType.GameTask:
                 switch (ti.info)
                 {
                     case "pintu":
@@ -367,7 +417,7 @@ public class TaskManager : MonoBehaviour
                         break;
                 }
                 break;
-            case TaskConfig.TaskType.InputTask:
+            case TaskType.InputTask:
                 if (isarinit)
                 {
                     ar.PauseCamera();
@@ -384,7 +434,7 @@ public class TaskManager : MonoBehaviour
                 tuodongbg.SetActive(ti.isTuo);
                 Inputgo.SetActive(true);
                 break;
-            case TaskConfig.TaskType.ChooseTask:
+            case TaskType.ChooseTask:
 
                 if (isarinit)
                 {
@@ -404,7 +454,30 @@ public class TaskManager : MonoBehaviour
         }
 
         yield return null;
-        nongwu.SetActive(ti.isnongwu);
+        if(ti.texiao!=null&& ti.texiao!="")
+        {
+            nongwu.SetActive(true);
+            yield return null;
+            string path = nongwu.GetComponent<NVideoPlayer>().Config.VideoSrcPath;
+            string[] parr = nongwu.GetComponent<NVideoPlayer>().Config.VideoSrcPath.Split('/');
+            string pname = parr[parr.Length - 1];
+            if (pname.Split('.')[0] != ti.texiao)
+            {
+                nongwu.GetComponent<NVideoPlayer>().Config.VideoSrcPath = Application.streamingAssetsPath + "/" + ti.texiao + ".mp4";
+                nongwu.GetComponent<NVideoPlayer>().Config.LoopPlayer = true;
+            }
+            nongwu.GetComponent<NVideoPlayer>().Mute();
+            yield return null;
+            //
+            if (!nongwu.GetComponent<NVideoPlayer>().IsPlaying)
+                nongwu.GetComponent<NVideoPlayer>().Play();
+
+        }
+        else
+        {
+            nongwu.SetActive(false);
+        }
+    //    
     }
     int arcount;
     bool isarinit=false;
@@ -461,14 +534,14 @@ public class TaskManager : MonoBehaviour
     bool isEnd;
     public void nextTask()
     {
-        if(nowTaskItem.type == TaskConfig.TaskType.InputTask)
+        if(nowTaskItem.type == TaskType.InputTask)
         {
             Inputgo.GetComponent<InputField>().text = "";
         }
 
-        if(!allimg.activeSelf||(allimg.activeSelf&& nowTaskItem.isClose)|| nowTaskItem.type== TaskConfig.TaskType.ChooseTask)
+        if(!allimg.activeSelf||(allimg.activeSelf&& nowTaskItem.isClose)|| nowTaskItem.type== TaskType.ChooseTask)
         {
-            if (nowTaskIndex + 1 >= ntconfig.TaskList.Count)
+            if (nowTaskIndex + 1 >= ntconfig.items.Length)
             {
                 if(nowTaskCt+1>=tconfigs.Count)
                 {
@@ -487,7 +560,7 @@ public class TaskManager : MonoBehaviour
                         nowTaskCt++;
                         ntconfig = tconfigs[nowTaskCt];
                         nowTaskIndex = 0;
-                        nowTaskItem = ntconfig.TaskList[nowTaskIndex];
+                        nowTaskItem = ntconfig.items[nowTaskIndex];
                         StartCoroutine(checktaskSence(nowTaskItem));
                         saveindex(false);
 
@@ -510,9 +583,9 @@ public class TaskManager : MonoBehaviour
             else
             {
                 nowTaskIndex++;
-                nowTaskItem = ntconfig.TaskList[nowTaskIndex];
+                nowTaskItem = ntconfig.items[nowTaskIndex];
                 StartCoroutine(checktaskSence(nowTaskItem));
-                if(nowTaskItem.type == TaskConfig.TaskType.Dialogue)
+                if(nowTaskItem.type == TaskType.Dialogue)
                 saveindex(false);
             }
         }

+ 9 - 9
Assets/TextLogCheck.cs

@@ -22,30 +22,30 @@ public class TextLogCheck : MonoBehaviour
         {
             if(i<=tm.nowTaskCt)
             {
-                for (int j = 0; j < tm.tconfigs[i].TaskList.Count; j++)
+                for (int j = 0; j < tm.tconfigs[i].items.Length; j++)
                 {
                     if (i < tm.nowTaskCt)
                     {
-                        if(!tm.tconfigs[i].TaskList[j].isNoshow)
+                        if(!tm.tconfigs[i].items[j].isNoshow)
                         {
-                            if (tm.iidex == 1 && tm.tconfigs[i].TaskList[j].info2 != "")
-                                t.text += "\n" + tm.tconfigs[i].TaskList[j].info2 + "\n";
+                            if (tm.iidex == 1 && tm.tconfigs[i].items[j].info2 != "")
+                                t.text += "\n" + tm.tconfigs[i].items[j].info2 + "\n";
                             else
                             {
-                                t.text += "\n" + tm.tconfigs[i].TaskList[j].info + "\n";
+                                t.text += "\n" + tm.tconfigs[i].items[j].info + "\n";
 
                             }
                         }
                     }
                     else if(j<=tm.nowTaskIndex)
                     {
-                        if (!tm.tconfigs[i].TaskList[j].isNoshow)
+                        if (!tm.tconfigs[i].items[j].isNoshow)
                         {
-                            if (tm.iidex == 1 && tm.tconfigs[i].TaskList[j].info2 != "")
-                                t.text += "\n" + tm.tconfigs[i].TaskList[j].info2 + "\n";
+                            if (tm.iidex == 1 && tm.tconfigs[i].items[j].info2 != "")
+                                t.text += "\n" + tm.tconfigs[i].items[j].info2 + "\n";
                             else
                             {
-                                t.text += "\n" + tm.tconfigs[i].TaskList[j].info + "\n";
+                                t.text += "\n" + tm.tconfigs[i].items[j].info + "\n";
 
                             }
                         }

BIN
Assets/TriLib/TriLibCore/Plugins/Dependencies/ICSharpCode.SharpZipLib.dll


+ 4 - 4
Assets/WebGLCopyAndPaste/Plugins/WebGLCopyAndPaste.jslib

@@ -62,9 +62,9 @@ mergeInto(LibraryManager.library, {
         window.becauseUnityIsBadWithJavascript_webglCopyAndPaste =
             window.becauseUnityIsBadWithJavascript_webglCopyAndPaste || {
            initialized: false,
-           objectName: Pointer_stringify(objectNamePtr),
-           cutCopyFuncName: Pointer_stringify(cutCopyFuncNamePtr),
-           pasteFuncName: Pointer_stringify(pasteFuncNamePtr),
+           objectName: UTF8ToString(objectNamePtr),
+           cutCopyFuncName: UTF8ToString(cutCopyFuncNamePtr),
+           pasteFuncName: UTF8ToString(pasteFuncNamePtr),
         };
         const g = window.becauseUnityIsBadWithJavascript_webglCopyAndPaste;
 
@@ -88,7 +88,7 @@ mergeInto(LibraryManager.library, {
     },
     passCopyToBrowser: function(stringPtr) {
       const g = window.becauseUnityIsBadWithJavascript_webglCopyAndPaste;
-      const str = Pointer_stringify(stringPtr);
+      const str = UTF8ToString(stringPtr);
       g.clipboardStr = str;
     },
 });

+ 5 - 5
Assets/XianSuoManager.cs

@@ -17,17 +17,17 @@ public class XianSuoManager : MonoBehaviour
                 int cts = tm.nowTaskIndex;
                 if(tm.nowTaskCt>i)
                 {
-                    cts = tm.tconfigs[i].TaskList.Count;
+                    cts = tm.tconfigs[i].items.Length;
                 }
                 for (int j = 0; j < cts; j++)
                 {
-                    Debug.Log(j+"_"+i + "_线索——" + tm.tconfigs[i].TaskList[j].xiansuos.Count);
-                    if (tm.tconfigs[i].TaskList[j].xiansuos != null)
+                    Debug.Log(j+"_"+i + "_线索——" + tm.tconfigs[i].items[j].xiansuos.Length);
+                    if (tm.tconfigs[i].items[j].xiansuos != null)
                     {
                         if(!xiansuo1.activeSelf)
-                            xiansuo1.SetActive(tm.tconfigs[i].TaskList[j].xiansuos.Count > 0);
+                            xiansuo1.SetActive(tm.tconfigs[i].items[j].xiansuos.Length > 0);
                         if (!xiansuo2.activeSelf)
-                            xiansuo2.SetActive(tm.tconfigs[i].TaskList[j].xiansuos.Count > 1);
+                            xiansuo2.SetActive(tm.tconfigs[i].items[j].xiansuos.Length > 1);
                     }
 
                 }

+ 3 - 4
Assets/checkVideo.cs

@@ -1,22 +1,21 @@
 using System.Collections;
 using System.Collections.Generic;
-using MarksAssets.VideoPlayerWebGL;
+using Nfynt;
 using UnityEngine;
 using UnityEngine.Networking;
 using UnityEngine.Video;
 
 public class checkVideo : MonoBehaviour
 {
-    public VideoPlayerWebGL vpw;
     private void OnEnable()
     {
-        vpw.Muted(false);
+       // vpw.Unmute();
       //this.GetComponent<MediaPlayer>().AudioMuted = false;
         WavLoader.Instance.audioSource.Pause();
     }
     private void OnDisable()
     {
-        vpw.Muted(true);
+      //  vpw.Mute();
         //this.GetComponent<MediaPlayer>().AudioMuted = true;
         WavLoader.Instance.audioSource.UnPause();
     }

File diff suppressed because it is too large
+ 250 - 217
Assets/task 1.asset


+ 113 - 116
Assets/task.asset

@@ -13,7 +13,7 @@ MonoBehaviour:
   m_Name: task
   m_EditorClassIdentifier: 
   TaskList:
-  - xiansuos: []
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u5728\u770B\u5230\u8FD9\u5EA7\u4F4D\u4E8E\u7E41\u534E\u95F9\u5E02\u7684\u53E4\u6734\u9053\u89C2\u7684\u4E00\u77AC\u95F4\uFF0C\u4F60\u4EFF\u4F5B\u542C\u5230\u4E86\u4EC0\u4E48\u9707\u7FC5\u7684\u58F0\u97F3\u3002"
@@ -26,14 +26,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u604D\u60DA\u4E86\u4E00\u4E0B\uFF0C\u611F\u89C9\u5230\u8F7B\u5FAE\u7684\u7729\u6655\uFF0C\u6574\u4E2A\u610F\u8BC6\u50CF\u662F\u8499\u4E0A\u4E86\u4E00\u5C42\u900F\u660E\u7684\u8F7B\u7EB1\u3002"
@@ -46,14 +46,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\uFF1A\u201C\u5514\u2026\u2026\u201D"
@@ -66,14 +66,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4E0D\u77E5\u4F55\u65F6\uFF0C\u4F60\u5DF2\u7ECF\u8D70\u8FC7\u724C\u574A\uFF0C\u7AD9\u5728\u77F3\u533E\u4E0B\u3002"
@@ -86,14 +86,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u56DB\u5468\u6E05\u5E7D\uFF0C\u4F60\u5374\u9690\u9690\u7EA6\u7EA6\u6709\u79CD\u611F\u89C9\u2014\u2014\u56DB\u5468\u4F3C\u4E4E\u8DDF\u4F60\u4ECE\u724C\u574A\u5916\u671B\u8FDB\u6765\u7684\u6837\u5B50\u4E0D\u5927\u4E00\u6837\u3002"
@@ -106,14 +106,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F46\u662F\u5230\u5E95\u54EA\u91CC\u4E0D\u4E00\u6837\u4F60\u4E5F\u8BF4\u4E0D\u4E0A\u6765\uFF0C"
@@ -126,14 +126,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u54EA\u91CC\u4E0D\u4E00\u6837\u5462\uFF1F\u96BE\u9053\u662F\u773C\u82B1\u4E86\uFF1F
@@ -147,14 +147,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F46\u662F\u5230\u5E95\u54EA\u91CC\u4E0D\u4E00\u6837\u4F60\u4E5F\u8BF4\u4E0D\u4E0A\u6765\uFF0C"
@@ -167,14 +167,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u5C31\u5728\u6B64\u65F6\uFF0C\u4F60\u611F\u89C9\u5230\u524D\u65B9\u7684\u7A7A\u6C14\u5FFD\u7136\u5F00\u59CB\u632F\u52A8\u3001\u538B\u7F29\u3001\u7136\u540E\u4F60\u773C\u7741\u7741\u5730\u770B\u7740\u7A7A\u6C14\u91CC\u51FA\u73B0\u4E86\u4E00\u4E2A\u4F60\u4ECE\u672A\u89C1\u8FC7\u7684\u5C0F\u52A8\u7269\u3002"
@@ -187,14 +187,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u8FD9\u5C0F\u4E1C\u897F\u957F\u5F97\u8FD8\u633A\u53EF\u7231\u2026\u2026\u4E0D\u5BF9\uFF01\u8FD9\u662F\u4E2A\u5565\uFF1F"
@@ -207,14 +207,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u548C\u98D8\u5728\u4F60\u9762\u524D\u7684\u5C0F\u52A8\u7269\u5927\u773C\u77AA\u5C0F\u773C\uFF0C\u8111\u5B50\u56E0\u4E3A\u8FC7\u4E8E\u9707\u60CA\u53CD\u800C\u663E\u51FA\u4E00\u79CD\u53E4\u602A\u7684\u5E73\u9759\uFF0C\u4F60\u5C45\u7136\u8FD8\u80FD\u62BD\u7A7A\u89C9\u5F97\u5C0F\u52A8\u7269\u957F\u5F97\u8FD8\u4E0D\u9519\u3002"
@@ -227,14 +227,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u7942\u793A\u610F\u4F60\u5F80\u540E\u770B\uFF0C\u7942\u7ED5\u7740\u4F60\u8EAB\u540E\u724C\u574A\u8FB9\u88AB\u680F\u6746\u56F4\u8D77\u6765\u7684\u77F3\u9E92\u9E9F\u98DE\u4E86\u4E00\u5708\uFF0C\u81EA\u8C6A\u5730\u8E72\u5728\u4E86\u77F3\u96D5\u8111\u888B\u9876\u4E0A\u3002"
@@ -247,14 +247,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\uFF1A\u201C\u4F60\u662F\u8BF4\u2026\u2026\u4F60\u662F\u77F3\u9E92\u9E9F\uFF1F\u4F46\u4F60\u4FE9\u957F\u5F97\u4E00\u70B9\u513F\u4E0D\u50CF\u554A\uFF01\u201D"
@@ -267,14 +267,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 0
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u770B\u5230\u77F3\u9E92\u9E9F\u5F88\u5ACC\u5F03\u5730\u7FFB\u4E86\u4E2A\u767D\u773C\u3002"
@@ -287,14 +287,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 1
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u5F80\u524D\u770B\u53BB\uFF0C\u770B\u5230\u201C\u4E94\u4ED9\u53E4\u89C2\u201D\u7684\u724C\u533E\u3002"
@@ -307,14 +307,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u51DD\u795E\u7EC6\u770B\uFF0C\u8D6B\u7136\u770B\u5230\u77F3\u533E\u9644\u8FD1\u6D6E\u52A8\u4E00\u884C\u5C0F\u5B57\u3002"
@@ -327,14 +327,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\uFF1A\u201C\u5251\u6C14\u5CE5\u5D58\u591C\u63D2\u5929\uFF0C\u745E\u5149\u660E\u706D\u5230\u9EC4\u6E7E\u3002\u5750\u770B\u65F8\u8C37\u6D6E\u91D1\u6655\uFF0C\u9065\u60F3\u94B1\u5858\u6D8C\u96EA\u5C71\u3002\""
@@ -347,14 +347,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\uFF1A\u201C\u5DF2\u89C9\u82CD\u51C9\u82CF\u75C5\u9AA8\uFF0C\u66F4\u70E6\u6C86\u7023\u6D17\u8870\u989C\u3002\u5FFD\u60CA\u9E1F\u52A8\u884C\u4EBA\u8D77\uFF0C\u98DE\u4E0A\u5343\u5CF0\u7D2B\u7FE0\u95F4\u2026\u2026\u8FD9\u4E0D\u662F\u82CF\u8F7C\u7684\u8BD7\u4E48\uFF1F\u201D"
@@ -367,15 +367,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos:
-    - isshow: 1
+    texiao: 
+    guochang: 
+  - xiansuos: 00
     type: 0
     isNoshow: 0
     info: "\u4F60\u4E0D\u89E3\u5176\u610F\uFF0C\u4F46\u4F60\u8FD8\u662F\u628A\u5B83\u8BB0\u4E86\u4E0B\u6765\uFF0C\u5C0F\u5B57\u968F\u5373\u6D88\u5931\u3002"
@@ -388,15 +387,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos:
-    - isshow: 1
+    texiao: 
+    guochang: 
+  - xiansuos: 00
     type: 1
     isNoshow: 0
     info: "\u77F3\u9E92\u9E9F\u62FF\u5934\u62F1\u62F1\u4F60\uFF0C\u793A\u610F\u4F60\u8FDB\u53BB\uFF0C\u4F60\u6DF1\u5438\u4E00\u53E3\u6C14\uFF0C\u8FC8\u6B65\u8E0F\u5165\u89C2\u5185\u2014\u2014"
@@ -409,18 +407,17 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 0
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos:
-    - isshow: 1
+    texiao: 
+    guochang: 
+  - xiansuos: 00
     type: 2
     isNoshow: 1
-    info: daoju
+    info: 
     info2: 
     bgName: dialogbg
     imgName: dialogbg
@@ -430,14 +427,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 0
     isARSao: 0
-    isnongwu: 0
     arid: 1
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: daoju
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u56DB\u5468\u5149\u7EBF\u6D6E\u52A8\uFF0C\u7A7A\u6C14\u5FAE\u5FAE\u626D\u66F2\uFF0C\u7136\u540E\uFF0C\u4F60\u770B\u5230\u4E86\u5979\u3002"
@@ -450,14 +447,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u6EE1\u9762\u54C0\u6101\u7684\u53E4\u88C5\u5C11\u5973\u60CA\u9E3F\u4E00\u73B0\uFF0C\u968F\u5373\u6D88\u5931\u5728\u89C2\u5185\u3002"
@@ -470,14 +467,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F46\u4F60\u9690\u7EA6\u770B\u89C1\uFF0C\u5979\u7684\u5F71\u5B50\u91CC\uFF0C\u6709\u4EC0\u4E48\u4E1C\u897F\u5728\u52A8\u3002"
@@ -490,14 +487,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4E00\u56E2\u4E00\u56E2\u7684\u96FE\u6C14\u4ECE\u4F60\u811A\u5E95\u65E0\u58F0\u65E0\u606F\u7684\u5F25\u6F2B\uFF0C\u6574\u4E2A\u4E94\u4ED9\u89C2\u88AB\u8FF7\u96FE\u7B3C\u7F69\u3002"
@@ -510,14 +507,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 1
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 1
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u4F60\u5FFD\u7136\u610F\u8BC6\u5230\uFF0C\u504C\u5927\u7684\u4E94\u4ED9\u89C2\uFF0C\u5BC2\u9759\u65E0\u58F0\uFF0C\u53EA\u6709\u4F60\u4E00\u4E2A\u4EBA\u3002
@@ -531,14 +528,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 1
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 1
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u8FD9\u4E2A\u65E0\u7531\u7684\u5FF5\u5934\u51FA\u73B0\u5728\u4F60\u7684\u8111\u6D77\u4E2D\u3002"
@@ -551,14 +548,14 @@ MonoBehaviour:
     perbName: 
     isClose: 0
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 1
     isARSao: 0
-    isnongwu: 1
     arid: 2
-    chooseItems: []
-  - xiansuos: []
+    texiao: 1
+    guochang: 
+  - xiansuos: 
     type: 0
     isNoshow: 0
     info: "\u5E8F\u7AE0\u7ED3\u675F"
@@ -571,10 +568,10 @@ MonoBehaviour:
     perbName: 
     isClose: 1
     isTuo: 0
-    daojus: []
+    daojus: 
     isClosebtShow: 0
     isTextNext: 0
     isARSao: 0
-    isnongwu: 0
     arid: 2
-    chooseItems: []
+    texiao: 
+    guochang: 

+ 10 - 3
Assets/webglvideocheck.cs

@@ -1,6 +1,6 @@
 using System.Collections;
 using System.Collections.Generic;
-using MarksAssets.VideoPlayerWebGL;
+using Nfynt;
 using UnityEngine;
 
 public class webglvideocheck : MonoBehaviour
@@ -8,15 +8,22 @@ public class webglvideocheck : MonoBehaviour
     public bool ismute;
     private void OnEnable()
     {
+        if(ismute)
+        {
+            this.GetComponent<NVideoPlayer>().Mute();
+        }
+        else
+        {
 
-        this.GetComponent<VideoPlayerWebGL>().Muted(ismute);
+            this.GetComponent<NVideoPlayer>().Unmute();
+        }
 
         Invoke("playerdelay",1f);
     }
 
     void playerdelay()
     {
-        this.GetComponent<VideoPlayerWebGL>().Play();
+        this.GetComponent<NVideoPlayer>().Play();
 
     }
 }

+ 0 - 9
Packages/com.ghz.avideoplayer/Editor/Scripts.meta

@@ -1,9 +0,0 @@
-fileFormatVersion: 2
-guid: fa40b7e33f12f754586d06e6df3d98ba
-folderAsset: yes
-timeCreated: 1551712689
-licenseType: Pro
-DefaultImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 194
Packages/com.ghz.avideoplayer/Editor/Scripts/AnimCollapseSection.cs

@@ -1,194 +0,0 @@
-#define AVPROVIDEO_SUPPORT_LIVEEDITMODE
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// A collapsable GUI section that animates during open and close
-	internal class AnimCollapseSection
-	{
-		internal const string SettingsPrefix = "AVProVideo-MediaPlayerEditor-";
-		private const float CollapseSpeed = 2f;
-		private static GUIStyle _styleCollapsableSection = null;
-		private static GUIStyle _styleButtonFoldout = null;
-		private static GUIStyle _styleHelpBoxNoPad = null;
-
-		public AnimCollapseSection(string label, bool showOnlyInEditMode, bool isDefaultExpanded, System.Action action, UnityEditor.Editor editor, Color backgroundColor, List<AnimCollapseSection> groupItems = null)
-			: this(new GUIContent(label), showOnlyInEditMode, isDefaultExpanded, action, editor, backgroundColor, groupItems)
-		{
-		}
-		public AnimCollapseSection(GUIContent label, bool showOnlyInEditMode, bool isDefaultExpanded, System.Action action, UnityEditor.Editor editor, Color backgroundColor, List<AnimCollapseSection> groupItems = null)
-		{
-			Label = label;
-			_name = Label.text;
-			Label.text = " " + Label.text;		// Add a space for aesthetics
-			ShowOnlyInEditMode = showOnlyInEditMode;
-			_action = action;
-			isDefaultExpanded = EditorPrefs.GetBool(PrefName, isDefaultExpanded);
-			BackgroundColor = backgroundColor;
-			_groupItems = groupItems;
-			_anim = new UnityEditor.AnimatedValues.AnimBool(isDefaultExpanded);
-			_anim.speed = CollapseSpeed;
-			_anim.valueChanged.AddListener(editor.Repaint);
-		}
-		~AnimCollapseSection()
-		{
-			_anim.valueChanged.RemoveAllListeners();
-		}
-
-		private string _name;
-		private UnityEditor.AnimatedValues.AnimBool _anim;
-		private System.Action _action;
-		private List<AnimCollapseSection> _groupItems;
-
-		public void Invoke()
-		{
-			_action.Invoke();
-		}
-
-		public bool IsExpanded { get { return _anim.target; } set { if (_anim.target != value) { _anim.target = value; if (value) CollapseSiblings(); } } }
-		public float Faded { get { return _anim.faded; } }
-		public GUIContent Label { get; private set; }
-		public bool ShowOnlyInEditMode { get; private set; }
-		public Color BackgroundColor { get; private set; }
-		private string PrefName { get { return GetPrefName(_name); } }
-
-		public void Save()
-		{
-			EditorPrefs.SetBool(PrefName, IsExpanded);
-		}
-
-		private void CollapseSiblings()
-		{
-			// Ensure only a single item is in an expanded state
-			if (_groupItems != null)
-			{
-				foreach (AnimCollapseSection section in _groupItems)
-				{
-					if (section != this && section.IsExpanded)
-					{
-						section.IsExpanded = false;
-					}
-				}
-			}
-		}
-
-		internal static string GetPrefName(string label)
-		{
-			return SettingsPrefix + "Expand-" + label;
-		}
-
-		internal static void CreateStyles()
-		{
-			if (_styleCollapsableSection == null)
-			{
-				_styleCollapsableSection = new GUIStyle(GUI.skin.box);
-				_styleCollapsableSection.padding.top = 0;
-				_styleCollapsableSection.padding.bottom = 0;
-			}
-			if (_styleButtonFoldout == null)
-			{
-				_styleButtonFoldout = new GUIStyle(EditorStyles.foldout);
-				_styleButtonFoldout.margin = new RectOffset();
-				_styleButtonFoldout.fontStyle = FontStyle.Bold;
-				_styleButtonFoldout.alignment = TextAnchor.MiddleLeft;
-			}
-			if (_styleHelpBoxNoPad == null)
-			{
-				_styleHelpBoxNoPad = new GUIStyle(EditorStyles.helpBox);
-				_styleHelpBoxNoPad.padding = new RectOffset();
-				//_styleHelpBoxNoPad.border = new RectOffset();
-				_styleHelpBoxNoPad.overflow = new RectOffset();
-				_styleHelpBoxNoPad.margin = new RectOffset();
-				_styleHelpBoxNoPad.margin = new RectOffset(8, 0, 0, 0);
-				_styleHelpBoxNoPad.stretchWidth = false;
-				_styleHelpBoxNoPad.stretchHeight = false;
-				//_styleHelpBoxNoPad.normal.background = Texture2D.whiteTexture;
-			}
-		}
-
-		internal static void Show(AnimCollapseSection section, int indentLevel = 0)
-		{
-			if (section.ShowOnlyInEditMode && Application.isPlaying) return;
-
-			float headerGlow = Mathf.Lerp(0.5f, 0.85f, section.Faded);
-			//float headerGlow = Mathf.Lerp(0.85f, 1f, section.Faded);
-			if (EditorGUIUtility.isProSkin)
-			{
-				GUI.backgroundColor = section.BackgroundColor * new Color(headerGlow, headerGlow, headerGlow, 1f);
-			}
-			else
-			{
-				headerGlow = Mathf.Lerp(0.75f, 1f, section.Faded);
-				GUI.backgroundColor = section.BackgroundColor * new Color(headerGlow, headerGlow, headerGlow, 1f);
-			}
-			GUILayout.BeginVertical(_styleHelpBoxNoPad);
-			GUILayout.Box(GUIContent.none, EditorStyles.miniButton, GUILayout.ExpandWidth(true));
-			GUI.backgroundColor = Color.white;
-			Rect buttonRect = GUILayoutUtility.GetLastRect();
-			if (Event.current.type != EventType.Layout)
-			{
-				buttonRect.xMin += indentLevel * EditorGUIUtility.fieldWidth / 3f;
-				EditorGUI.indentLevel++;
-				EditorGUIUtility.SetIconSize(new Vector2(16f, 16f));
-				section.IsExpanded = EditorGUI.Foldout(buttonRect, section.IsExpanded, section.Label, true, _styleButtonFoldout);
-				EditorGUIUtility.SetIconSize(Vector2.zero);
-				EditorGUI.indentLevel--;
-			}
-
-			if (EditorGUILayout.BeginFadeGroup(section.Faded))
-			{
-				section.Invoke();
-			}
-			EditorGUILayout.EndFadeGroup();
-			GUILayout.EndVertical();
-		}
-
-		internal static void Show(string label, ref bool isExpanded, System.Action action, bool showOnlyInEditMode)
-		{
-			if (showOnlyInEditMode && Application.isPlaying) return;
-
-			if (BeginShow(label, ref isExpanded, Color.white))
-			{
-				action.Invoke();
-			}
-			EndShow();
-		}
-
-		internal static bool BeginShow(string label, ref bool isExpanded, Color tintColor)
-		{
-			GUI.color = Color.white;
-			GUI.backgroundColor = Color.clear;
-			if (isExpanded)
-			{
-				GUI.color = Color.white;
-				GUI.backgroundColor = new Color(0.8f, 0.8f, 0.8f, 0.1f);
-				if (EditorGUIUtility.isProSkin)
-				{
-					GUI.backgroundColor = Color.black;
-				}
-			}
-
-			GUILayout.BeginVertical(_styleCollapsableSection);
-			GUI.color = tintColor;
-			GUI.backgroundColor = Color.white;
-			if (GUILayout.Button(label, EditorStyles.toolbarButton))
-			{
-				isExpanded = !isExpanded;
-			}
-			GUI.color = Color.white;
-
-			return isExpanded;
-		}
-
-		internal static void EndShow()
-		{
-			GUILayout.EndVertical();
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/AnimCollapseSection.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 7ca21d2c4a039f347a66568bb23b62bc
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 9
Packages/com.ghz.avideoplayer/Editor/Scripts/Components.meta

@@ -1,9 +0,0 @@
-fileFormatVersion: 2
-guid: df15cc9892e0644469f075f3a1c0c8f4
-folderAsset: yes
-timeCreated: 1591790246
-licenseType: Pro
-DefaultImporter:
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 108
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMaterialEditor.cs

@@ -1,108 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the ApplyToMaterial component
-	/// </summary>
-	[CanEditMultipleObjects]
-	[CustomEditor(typeof(ApplyToMaterial))]
-	public class ApplyToMaterialEditor : UnityEditor.Editor
-	{
-		private static readonly GUIContent _guiTextTextureProperty = new GUIContent("Texture Property");
-
-		private SerializedProperty _propTextureOffset;
-		private SerializedProperty _propTextureScale;
-		private SerializedProperty _propMediaPlayer;
-		private SerializedProperty _propMaterial;
-		private SerializedProperty _propTexturePropertyName;
-		private SerializedProperty _propDefaultTexture;
-		private GUIContent[] _materialTextureProperties = new GUIContent[0];
-
-		void OnEnable()
-		{
-			_propTextureOffset = this.CheckFindProperty("_offset");
-			_propTextureScale = this.CheckFindProperty("_scale");
-			_propMediaPlayer = this.CheckFindProperty("_media");
-			_propMaterial = this.CheckFindProperty("_material");
-			_propTexturePropertyName = this.CheckFindProperty("_texturePropertyName");
-			_propDefaultTexture = this.CheckFindProperty("_defaultTexture");
-		}
-
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
-
-			if (_propMaterial == null)
-			{
-				return;
-			}
-
-			EditorGUI.BeginChangeCheck();
-
-			EditorGUILayout.PropertyField(_propMediaPlayer);
-			EditorGUILayout.PropertyField(_propDefaultTexture);
-			EditorGUILayout.PropertyField(_propMaterial);
-
-			bool hasKeywords = false;
-			int texturePropertyIndex = 0;
-			if (_propMaterial.objectReferenceValue != null)
-			{
-				Material mat = (Material)(_propMaterial.objectReferenceValue);
-
-				if (mat.shaderKeywords.Length > 0)
-				{
-					hasKeywords = true;
-				}
-
-				MaterialProperty[] matProps = MaterialEditor.GetMaterialProperties(new UnityEngine.Object[] { mat });
-
-				List<GUIContent> items = new List<GUIContent>(16);
-				foreach (MaterialProperty matProp in matProps)
-				{
-					if (matProp.type == MaterialProperty.PropType.Texture)
-					{
-						if (matProp.name == _propTexturePropertyName.stringValue)
-						{
-							texturePropertyIndex = items.Count;
-						}
-						items.Add(new GUIContent(matProp.name));
-					}
-				}
-				_materialTextureProperties = items.ToArray();
-			}
-
-			int newTexturePropertyIndex = EditorGUILayout.Popup(_guiTextTextureProperty, texturePropertyIndex, _materialTextureProperties);
-			if (newTexturePropertyIndex >= 0 && newTexturePropertyIndex < _materialTextureProperties.Length)
-			{
-				_propTexturePropertyName.stringValue = _materialTextureProperties[newTexturePropertyIndex].text;
-			}
-
-			if (hasKeywords && _propTexturePropertyName.stringValue != Helper.UnityBaseTextureName)
-			{
-				EditorGUILayout.HelpBox("When using an uber shader you may need to enable the keywords on a material for certain texture slots to take effect.  You can sometimes achieve this (eg with Standard shader) by putting a dummy texture into the texture slot.", MessageType.Info);
-			}
-
-			EditorGUILayout.PropertyField(_propTextureOffset);
-			EditorGUILayout.PropertyField(_propTextureScale);
-
-			serializedObject.ApplyModifiedProperties();
-
-			bool wasModified = EditorGUI.EndChangeCheck();
-
-			if (Application.isPlaying && wasModified)
-			{
-				foreach (Object obj in this.targets)
-				{
-					((ApplyToMaterial)obj).ForceUpdate();
-				}
-			}
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMaterialEditor.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 60268ddd706f2f1469acb32edab1dea9
-timeCreated: 1591790256
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 183
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMeshEditor.cs

@@ -1,183 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the ApplyToMesh component
-	/// </summary>
-	[CanEditMultipleObjects]
-	[CustomEditor(typeof(ApplyToMesh))]
-	public class ApplyToMeshEditor : UnityEditor.Editor
-	{
-		private static readonly GUIContent _guiTextTextureProperty = new GUIContent("Texture Property");
-
-		private SerializedProperty _propTextureOffset;
-		private SerializedProperty _propTextureScale;
-		private SerializedProperty _propMediaPlayer;
-		private SerializedProperty _propRenderer;
-		private SerializedProperty _propMaterialIndex;
-		private SerializedProperty _propTexturePropertyName;
-		private SerializedProperty _propDefaultTexture;
-		private SerializedProperty _propAutomaticStereoPacking;
-		private SerializedProperty _propOverrideStereoPacking;
-		private SerializedProperty _propStereoRedGreenTint;
-		private GUIContent[] _materialTextureProperties = new GUIContent[0];
-
-		void OnEnable()
-		{
-			_propTextureOffset = this.CheckFindProperty("_offset");
-			_propTextureScale = this.CheckFindProperty("_scale");
-			_propMediaPlayer = this.CheckFindProperty("_media");
-			_propRenderer = this.CheckFindProperty("_renderer");
-			_propMaterialIndex = this.CheckFindProperty("_materialIndex");
-			_propTexturePropertyName = this.CheckFindProperty("_texturePropertyName");
-			_propDefaultTexture = this.CheckFindProperty("_defaultTexture");
-			_propAutomaticStereoPacking = this.CheckFindProperty("_automaticStereoPacking");
-			_propOverrideStereoPacking = this.CheckFindProperty("_overrideStereoPacking");
-			_propStereoRedGreenTint = this.CheckFindProperty("_stereoRedGreenTint");
-		}
-
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
-
-			if (_propRenderer == null)
-			{
-				return;
-			}
-
-			EditorGUI.BeginChangeCheck();
-
-			EditorGUILayout.PropertyField(_propMediaPlayer);
-			EditorGUILayout.PropertyField(_propDefaultTexture);
-			EditorGUILayout.PropertyField(_propRenderer);
-
-			bool hasKeywords = false;
-			int materialCount = 0;
-			int texturePropertyIndex = 0;
-			_materialTextureProperties = new GUIContent[0];
-			if (_propRenderer.objectReferenceValue != null)
-			{
-				Renderer r = (Renderer)(_propRenderer.objectReferenceValue);
-
-				materialCount = r.sharedMaterials.Length;
-				List<Material> nonNullMaterials = new List<Material>(r.sharedMaterials);
-				// Remove any null materials (otherwise MaterialEditor.GetMaterialProperties() errors)
-				for (int i = 0; i < nonNullMaterials.Count; i++)
-				{
-					if (nonNullMaterials[i] == null)
-					{
-						nonNullMaterials.RemoveAt(i);
-						i--;
-					}
-				}
-				
-				if (nonNullMaterials.Count > 0)
-				{
-					// Detect if there are any keywords
-					foreach (Material mat in nonNullMaterials)
-					{
-						if (mat.shaderKeywords.Length > 0)
-						{
-							hasKeywords = true;
-							break;
-						}
-					}
-
-					// Get unique list of texture property names
-					List<GUIContent> items = new List<GUIContent>(16);
-					List<string> textureNames = new List<string>(8);
-					foreach (Material mat in nonNullMaterials)
-					{
-						// NOTE: we process each material separately instead of passing them all into  MaterialEditor.GetMaterialProperties() as it errors if the materials have different properties
-						MaterialProperty[] matProps = MaterialEditor.GetMaterialProperties(new Object[] { mat });
-						foreach (MaterialProperty matProp in matProps)
-						{
-							if (matProp.type == MaterialProperty.PropType.Texture)
-							{
-								if (!textureNames.Contains(matProp.name))
-								{
-									if (matProp.name == _propTexturePropertyName.stringValue)
-									{
-										texturePropertyIndex = items.Count;
-									}
-									textureNames.Add(matProp.name);
-									items.Add(new GUIContent(matProp.name));
-								}
-							}
-						}
-					}
-					_materialTextureProperties = items.ToArray();
-				}
-			}
-
-			if (materialCount > 0)
-			{
-				GUILayout.BeginHorizontal();
-				EditorGUILayout.PrefixLabel("All Materials");
-				EditorGUI.BeginChangeCheck();
-				EditorGUILayout.Toggle(_propMaterialIndex.intValue < 0);
-				if (EditorGUI.EndChangeCheck())
-				{
-					if (_propMaterialIndex.intValue < 0)
-					{
-						_propMaterialIndex.intValue = 0;
-					}
-					else
-					{
-						_propMaterialIndex.intValue = -1;
-					}
-				}
-				GUILayout.EndHorizontal();
-
-				if (_propMaterialIndex.intValue >= 0)
-				{
-					GUILayout.BeginHorizontal();
-					EditorGUILayout.PrefixLabel("Material Index");
-					_propMaterialIndex.intValue = EditorGUILayout.IntSlider(_propMaterialIndex.intValue, 0, materialCount - 1);
-					GUILayout.EndHorizontal();
-				}
-			}
-
-			int newTexturePropertyIndex = EditorGUILayout.Popup(_guiTextTextureProperty, texturePropertyIndex, _materialTextureProperties);
-			if (newTexturePropertyIndex >= 0 && newTexturePropertyIndex < _materialTextureProperties.Length)
-			{
-				_propTexturePropertyName.stringValue = _materialTextureProperties[newTexturePropertyIndex].text;
-			}
-
-			if (hasKeywords && _propTexturePropertyName.stringValue != Helper.UnityBaseTextureName)
-			{
-				EditorGUILayout.HelpBox("When using an uber shader you may need to enable the keywords on a material for certain texture slots to take effect.  You can sometimes achieve this (eg with Standard shader) by putting a dummy texture into the texture slot.", MessageType.Info);
-			}
-
-			EditorGUILayout.PropertyField(_propTextureOffset);
-			EditorGUILayout.PropertyField(_propTextureScale);
-
-
-			EditorGUILayout.PropertyField(_propAutomaticStereoPacking);
-			if (!_propAutomaticStereoPacking.boolValue)
-			{
-				EditorGUILayout.PropertyField(_propOverrideStereoPacking);
-			}
-			EditorGUILayout.PropertyField(_propStereoRedGreenTint);
-
-			serializedObject.ApplyModifiedProperties();
-
-			bool wasModified = EditorGUI.EndChangeCheck();
-
-			if (Application.isPlaying && wasModified)
-			{
-				foreach (Object obj in this.targets)
-				{
-					((ApplyToMesh)obj).ForceUpdate();
-				}
-			}
-		}
-	}
-}

+ 0 - 8
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/ApplyToMeshEditor.cs.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 114ac842bfcaf0745a5e45cb2a7d6559
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 

+ 0 - 103
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/AudioOutputEditor.cs

@@ -1,103 +0,0 @@
-using UnityEditor;
-using UnityEngine;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the AudioOutput component
-	/// </summary>
-	[CanEditMultipleObjects]
-	[CustomEditor(typeof(AudioOutput))]
-	public class AudioOutputEditor : UnityEditor.Editor
-	{
-		private static readonly GUIContent _guiTextChannel = new GUIContent("Channel");
-		private static readonly GUIContent _guiTextChannels = new GUIContent("Channels");
-		private static readonly string[] _channelMaskOptions = { "1", "2", "3", "4", "5", "6", "7", "8" };
-
-		private SerializedProperty _propMediaPlayer;
-		private SerializedProperty _propAudioOutputMode;
-		private SerializedProperty _propSupportPositionalAudio;
-		private SerializedProperty _propChannelMask;
-		private int _unityAudioSampleRate;
-		private int _unityAudioSpeakerCount;
-		private string _bufferedMs;
-
-		void OnEnable()
-		{
-			_propMediaPlayer = this.CheckFindProperty("_mediaPlayer");
-			_propAudioOutputMode = this.CheckFindProperty("_audioOutputMode");
-			_propSupportPositionalAudio = this.CheckFindProperty("_supportPositionalAudio");
-			_propChannelMask = this.CheckFindProperty("_channelMask");
-			_unityAudioSampleRate = Helper.GetUnityAudioSampleRate();
-			_unityAudioSpeakerCount = Helper.GetUnityAudioSpeakerCount();
-		}
-
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
-
-			AudioOutput audioOutput = (AudioOutput)this.target;
-
-			EditorGUILayout.PropertyField(_propMediaPlayer);
-			EditorGUILayout.PropertyField(_propAudioOutputMode);
-			EditorGUILayout.PropertyField(_propSupportPositionalAudio);
-
-			// Display the channel mask as either a bitfield or value slider
-			if ((AudioOutput.AudioOutputMode)_propAudioOutputMode.enumValueIndex == AudioOutput.AudioOutputMode.MultipleChannels)
-			{
-				_propChannelMask.intValue = EditorGUILayout.MaskField(_guiTextChannels, _propChannelMask.intValue, _channelMaskOptions);
-			}
-			else
-			{
-				int prevVal = 0;
-				for(int i = 0; i < 8; ++i)
-				{
-					if((_propChannelMask.intValue & (1 << i)) > 0)
-					{
-						prevVal = i;
-						break;
-					}
-				}
-				
-				int newVal = Mathf.Clamp(EditorGUILayout.IntSlider(_guiTextChannel, prevVal, 0, 7), 0, 7);
-				_propChannelMask.intValue = 1 << newVal;
-			}
-
-			GUILayout.Label("Unity Audio", EditorStyles.boldLabel);
-			EditorGUILayout.LabelField("Speakers", _unityAudioSpeakerCount.ToString());
-			EditorGUILayout.LabelField("Sample Rate", _unityAudioSampleRate.ToString() + "hz");
-			EditorGUILayout.Space();
-
-			if (audioOutput != null)
-			{
-				if (audioOutput.Player != null && audioOutput.Player.Control != null)
-				{
-					int channelCount = audioOutput.Player.Control.GetAudioChannelCount();
-					if (channelCount >= 0)
-					{
-						GUILayout.Label("Media Audio", EditorStyles.boldLabel);
-						EditorGUILayout.LabelField("Channels: " + channelCount);
-						AudioChannelMaskFlags audioChannels = audioOutput.Player.Control.GetAudioChannelMask();
-						GUILayout.Label(audioChannels.ToString(), EditorHelper.IMGUI.GetWordWrappedTextAreaStyle());
-
-						if (Time.frameCount % 4 == 0)
-						{
-							int bufferedSampleCount = audioOutput.Player.Control.GetAudioBufferedSampleCount();
-							float bufferedMs = (bufferedSampleCount * 1000f) / (_unityAudioSampleRate * channelCount);
-							_bufferedMs = "Buffered: " + bufferedMs.ToString("F2") + "ms";
-						}
-
-						EditorGUILayout.LabelField(_bufferedMs);
-						EditorGUILayout.Space();
-					}
-				}
-			}
-
-			serializedObject.ApplyModifiedProperties();
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/AudioOutputEditor.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: f7852924144fc064aad785e5985b5402
-timeCreated: 1495783665
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 86
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/DisplayIMGUIEditor.cs

@@ -1,86 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the DisplayIMGUI component
-	/// </summary>
-	[CanEditMultipleObjects]
-	[CustomEditor(typeof(DisplayIMGUI))]
-	public class DisplayIMGUIEditor : UnityEditor.Editor
-	{
-		private SerializedProperty _propMediaPlayer;
-		private SerializedProperty _propScaleMode;
-		private SerializedProperty _propColor;
-		private SerializedProperty _propAllowTransparency;
-		private SerializedProperty _propUseDepth;
-		private SerializedProperty _propDepth;
-		private SerializedProperty _propAreaFullscreen;
-		private SerializedProperty _propAreaX;
-		private SerializedProperty _propAreaY;
-		private SerializedProperty _propAreaWidth;
-		private SerializedProperty _propAreaHeight;
-		private SerializedProperty _propShowAreaInEditor;
-
-		void OnEnable()
-		{
-			_propMediaPlayer = this.CheckFindProperty("_mediaPlayer");
-			_propScaleMode = this.CheckFindProperty("_scaleMode");
-			_propColor = this.CheckFindProperty("_color");
-			_propAllowTransparency = this.CheckFindProperty("_allowTransparency");
-			_propUseDepth = this.CheckFindProperty("_useDepth");
-			_propDepth = this.CheckFindProperty("_depth");
-			_propAreaFullscreen = this.CheckFindProperty("_isAreaFullScreen");
-			_propAreaX = this.CheckFindProperty("_areaX");
-			_propAreaY = this.CheckFindProperty("_areaY");
-			_propAreaWidth = this.CheckFindProperty("_areaWidth");
-			_propAreaHeight = this.CheckFindProperty("_areaHeight");
-			_propShowAreaInEditor = this.CheckFindProperty("_showAreaInEditor");
-		}
-
-		public override void OnInspectorGUI()
-		{
-			serializedObject.Update();
-
-			EditorGUI.BeginChangeCheck();
-
-			EditorGUILayout.PropertyField(_propMediaPlayer);
-			EditorGUILayout.PropertyField(_propScaleMode);
-			EditorGUILayout.PropertyField(_propColor);
-			EditorGUILayout.PropertyField(_propAllowTransparency);
-			EditorGUILayout.PropertyField(_propUseDepth);
-			if (_propUseDepth.boolValue)
-			{
-				EditorGUILayout.PropertyField(_propDepth);
-			}
-
-			// Area
-			EditorGUILayout.PropertyField(_propAreaFullscreen, new GUIContent("Full Screen"));
-			if (!_propAreaFullscreen.boolValue)
-			{
-				EditorGUILayout.PropertyField(_propAreaX, new GUIContent("X"));
-				EditorGUILayout.PropertyField(_propAreaY, new GUIContent("Y"));
-				EditorGUILayout.PropertyField(_propAreaWidth, new GUIContent("Width"));
-				EditorGUILayout.PropertyField(_propAreaHeight, new GUIContent("Height"));
-			}
-			EditorGUILayout.PropertyField(_propShowAreaInEditor, new GUIContent("Show in Editor"));
-
-			serializedObject.ApplyModifiedProperties();
-
-			// Force update
-			bool unhandledChanges = (EditorGUI.EndChangeCheck() && Application.isPlaying);
-			if (unhandledChanges)
-			{
-				foreach (Object obj in this.targets)
-				{
-					((DisplayIMGUI)obj).Update();
-				}
-			}
-		}
-	}
-}

+ 0 - 8
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/DisplayIMGUIEditor.cs.meta

@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8c822ced482d9444aa15d55b5f9d6e7a
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 

+ 0 - 682
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor.cs

@@ -1,682 +0,0 @@
-#define AVPROVIDEO_SUPPORT_LIVEEDITMODE
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	[CanEditMultipleObjects]
-	[CustomEditor(typeof(MediaPlayer))]
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		internal const string SettingsPrefix = "AVProVideo-MediaPlayerEditor-";
-
-		private SerializedProperty _propAutoOpen;
-		private SerializedProperty _propAutoStart;
-		private SerializedProperty _propLoop;
-		private SerializedProperty _propRate;
-		private SerializedProperty _propPersistent;
-		private SerializedProperty _propFilter;
-		private SerializedProperty _propWrap;
-		private SerializedProperty _propAniso;
-#if AVPRO_FEATURE_VIDEORESOLVE
-		private SerializedProperty _propUseVideoResolve;
-		private SerializedProperty _propVideoResolve;
-		private SerializedProperty _propVideoResolveOptions;
-#endif
-		private SerializedProperty _propResample;
-		private SerializedProperty _propResampleMode;
-		private SerializedProperty _propResampleBufferSize;
-		private SerializedProperty _propVideoMapping;
-		private SerializedProperty _propForceFileFormat;
-		private SerializedProperty _propFallbackMediaHints;
-
-		private static Texture2D _icon;
-		private static bool _isTrialVersion = false;
-		private static GUIStyle _styleSectionBox = null;
-
-		private AnimCollapseSection _sectionMediaInfo;
-		private AnimCollapseSection _sectionDebug;
-		private AnimCollapseSection _sectionSettings;
-		private AnimCollapseSection _sectionAboutHelp;
-		private List<AnimCollapseSection> _settingSections = new List<AnimCollapseSection>(16);
-		private List<AnimCollapseSection> _platformSections = new List<AnimCollapseSection>(8);
-
-		[MenuItem("GameObject/Video/AVPro Video - Media Player", false, 100)]
-		public static void CreateMediaPlayerEditor()
-		{
-			GameObject go = new GameObject("MediaPlayer");
-			go.AddComponent<MediaPlayer>();
-			Selection.activeGameObject = go;
-		}
-
-		[MenuItem("GameObject/Video/AVPro Video - Media Player with Unity Audio", false, 101)]
-		public static void CreateMediaPlayerWithUnityAudioEditor()
-		{
-			GameObject go = new GameObject("MediaPlayer");
-			go.AddComponent<MediaPlayer>();
-			go.AddComponent<AudioSource>();
-			AudioOutput ao = go.AddComponent<AudioOutput>();
-			// Move the AudioOutput component above the AudioSource so that it acts as the audio generator
-			UnityEditorInternal.ComponentUtility.MoveComponentUp(ao);
-			Selection.activeGameObject = go;
-		}
-
-		private static void LoadSettings()
-		{
-			_platformIndex = EditorPrefs.GetInt(SettingsPrefix + "PlatformIndex", -1);
-			_showAlpha = EditorPrefs.GetBool(SettingsPrefix + "ShowAlphaChannel", false);
-			_showPreview = EditorPrefs.GetBool(SettingsPrefix + "ShowPreview", true);
-			_allowDeveloperMode = EditorPrefs.GetBool(SettingsPrefix + "AllowDeveloperMode", false);
-			_HTTPHeadersToggle = EditorPrefs.GetBool(SettingsPrefix + "HTTPHeadersToggle", false);
-			RecentItems.Load();
-		}
-
-		private void SaveSettings()
-		{
-			_sectionMediaInfo.Save();
-			_sectionDebug.Save();
-			_sectionSettings.Save();
-			_sectionAboutHelp.Save();
-
-			foreach (AnimCollapseSection section in _settingSections)
-			{
-				section.Save();
-			}
-			foreach (AnimCollapseSection section in _platformSections)
-			{
-				section.Save();
-			}
-
-			_sectionDevModeState.Save();
-			_sectionDevModeTexture.Save();
-			_sectionDevModePlaybackQuality.Save();
-			_sectionDevModeHapNotchLCDecoder.Save();
-			_sectionDevModeBufferedFrames.Save();
-
-			EditorPrefs.SetInt(SettingsPrefix + "PlatformIndex", _platformIndex);
-			EditorPrefs.SetBool(SettingsPrefix + "ShowAlphaChannel", _showAlpha);
-			EditorPrefs.SetBool(SettingsPrefix + "ShowPreview", _showPreview);
-			EditorPrefs.SetBool(SettingsPrefix + "AllowDeveloperMode", _allowDeveloperMode);
-			EditorPrefs.SetBool(SettingsPrefix + "HTTPHeadersToggle", _HTTPHeadersToggle);
-			RecentItems.Save();
-		}
-
-		//[MenuItem("RenderHeads/AVPro Video/Reset Settings", false, 101)]
-		internal static void DeleteSettings()
-		{
-			EditorPrefs.DeleteKey(SettingsPrefix + "PlatformIndex");
-			EditorPrefs.DeleteKey(SettingsPrefix + "ShowAlphaChannel");
-			EditorPrefs.DeleteKey(SettingsPrefix + "AllowDeveloperMode");
-			EditorPrefs.DeleteKey(SettingsPrefix + "HTTPHeadersToggle");
-
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Media"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Debug"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Settings"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("About / Help"));
-			
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Source"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Main"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Audio"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Visual"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Network"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Media"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Subtitles"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Events"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Platform Specific"));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName("Global"));
-
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.Windows).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.macOS).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.Android).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.iOS).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.tvOS).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.visionOS).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.WindowsUWP).text));
-			EditorPrefs.DeleteKey(AnimCollapseSection.GetPrefName(GetPlatformButtonContent(Platform.WebGL).text));
-		}
-
-		private void CreateSections()
-		{
-			const float colorSaturation = 0.66f;
-			Color mediaInfoColor = Color.HSVToRGB(0.55f, colorSaturation, 1f);
-			Color sourceColor = Color.HSVToRGB(0.4f, colorSaturation, 1f);
-			Color platformSpecificColor = Color.HSVToRGB(0.85f, colorSaturation, 1f);
-			Color platformColor = platformSpecificColor;
-			if (EditorGUIUtility.isProSkin)
-			{ 
-				platformColor *= 0.66f;
-			}
-
-			_sectionMediaInfo = new AnimCollapseSection("Media Info", false, false, OnInspectorGUI_MediaInfo, this, mediaInfoColor);
-			_sectionDebug = new AnimCollapseSection("Debug", false, true, OnInspectorGUI_Debug, this, Color.white);
-			_sectionSettings = new AnimCollapseSection("Settings", false, true, OnInspectorGUI_Settings, this, Color.white);
-			_sectionAboutHelp = new AnimCollapseSection("About / Help", false, false, OnInspectorGUI_About, this, Color.white);
-
-			_settingSections.Clear();
-			_settingSections.Add(new AnimCollapseSection("Source", false, true, OnInspectorGUI_Source, this, sourceColor));
-			_settingSections.Add(new AnimCollapseSection("Main", false, false, OnInspectorGUI_Main, this, Color.white));
-			_settingSections.Add(new AnimCollapseSection("Audio", false, false, OnInspectorGUI_Audio, this, Color.white));
-			_settingSections.Add(new AnimCollapseSection("Visual", true, false, OnInspectorGUI_Visual, this, Color.white));
-			//_settingSections.Add(new AnimCollapseSection("Network", true, false, OnInspectorGUI_Network, this, Color.white));
-			_settingSections.Add(new AnimCollapseSection("Subtitles", true, false, OnInspectorGUI_Subtitles, this, Color.white));
-			_settingSections.Add(new AnimCollapseSection("Events", true, false, OnInspectorGUI_Events, this, Color.white));
-			_settingSections.Add(new AnimCollapseSection("Platform Specific", true, false, OnInspectorGUI_PlatformOverrides, this, platformSpecificColor));
-			_settingSections.Add(new AnimCollapseSection("Global", true, false, OnInspectorGUI_GlobalSettings, this, Color.white));
-
-			_platformSections.Clear();
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.Windows), true, false, OnInspectorGUI_Override_Windows, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.macOS), true, false, OnInspectorGUI_Override_MacOSX, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.Android), true, false, OnInspectorGUI_Override_Android, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.iOS), true, false, OnInspectorGUI_Override_iOS, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.tvOS), true, false, OnInspectorGUI_Override_tvOS, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.visionOS), true, false, OnInspectorGUI_Override_visionOS, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.WindowsUWP), true, false, OnInspectorGUI_Override_WindowsUWP, this, platformColor, _platformSections));
-			_platformSections.Add(new AnimCollapseSection(GetPlatformButtonContent(Platform.WebGL), true, false, OnInspectorGUI_Override_WebGL, this, platformColor, _platformSections));
-
-			_sectionDevModeState = new AnimCollapseSection("State", false, false, OnInspectorGUI_DevMode_State, this, Color.white);
-			_sectionDevModeTexture = new AnimCollapseSection("Texture", false, false, OnInspectorGUI_DevMode_Texture, this, Color.white);
-			_sectionDevModePlaybackQuality = new AnimCollapseSection("Presentation Quality", false, false, OnInspectorGUI_DevMode_PresentationQuality, this, Color.white);
-			_sectionDevModeHapNotchLCDecoder = new AnimCollapseSection("Hap/NotchLC Decoder", false, false, OnInspectorGUI_DevMode_HapNotchLCDecoder, this, Color.white);
-			_sectionDevModeBufferedFrames = new AnimCollapseSection("Buffers", false, false, OnInspectorGUI_DevMode_BufferedFrames, this, Color.white);
-		}
-
-		private void ResolveProperties()
-		{
-			_propMediaSource = this.CheckFindProperty("_mediaSource");
-			_propMediaReference = this.CheckFindProperty("_mediaReference");
-			_propMediaPath = this.CheckFindProperty("_mediaPath");
-			_propAutoOpen = this.CheckFindProperty("_autoOpen");
-			_propAutoStart = this.CheckFindProperty("_autoPlayOnStart");
-			_propLoop = this.CheckFindProperty("_loop");
-			_propRate = this.CheckFindProperty("_playbackRate");
-			_propVolume = this.CheckFindProperty("_audioVolume");
-			_propBalance = this.CheckFindProperty("_audioBalance");
-			_propMuted = this.CheckFindProperty("_audioMuted");
-			_propPersistent = this.CheckFindProperty("_persistent");
-			_propEvents = this.CheckFindProperty("_events");
-			_propEventMask = this.CheckFindProperty("_eventMask");
-			_propPauseMediaOnAppPause = this.CheckFindProperty("_pauseMediaOnAppPause");
-			_propPlayMediaOnAppUnpause = this.CheckFindProperty("_playMediaOnAppUnpause");
-			_propFilter = this.CheckFindProperty("_textureFilterMode");
-			_propWrap = this.CheckFindProperty("_textureWrapMode");
-			_propAniso = this.CheckFindProperty("_textureAnisoLevel");
-#if AVPRO_FEATURE_VIDEORESOLVE
-			_propUseVideoResolve = this.CheckFindProperty("_useVideoResolve");
-			_propVideoResolve = this.CheckFindProperty("_videoResolve");
-			_propVideoResolveOptions = this.CheckFindProperty("_videoResolveOptions");
-#endif
-			_propVideoMapping = this.CheckFindProperty("_videoMapping");
-			_propForceFileFormat = this.CheckFindProperty("_forceFileFormat");
-			_propFallbackMediaHints = this.CheckFindProperty("_fallbackMediaHints");
-			_propSubtitles = this.CheckFindProperty("_sideloadSubtitles");
-			_propSubtitlePath = this.CheckFindProperty("_subtitlePath");
-			_propResample = this.CheckFindProperty("_useResampler");
-			_propResampleMode = this.CheckFindProperty("_resampleMode");
-			_propResampleBufferSize = this.CheckFindProperty("_resampleBufferSize");
-			_propAudioHeadTransform = this.CheckFindProperty("_audioHeadTransform");
-			_propAudioEnableFocus = this.CheckFindProperty("_audioFocusEnabled");
-			_propAudioFocusOffLevelDB = this.CheckFindProperty("_audioFocusOffLevelDB");
-			_propAudioFocusWidthDegrees = this.CheckFindProperty("_audioFocusWidthDegrees");
-			_propAudioFocusTransform = this.CheckFindProperty("_audioFocusTransform");
-		}
-
-		private static Texture GetPlatformIcon(Platform platform)
-		{
-			string iconName = string.Empty;
-			switch (platform)
-			{
-				case Platform.Windows:
-				case Platform.macOS:
-					iconName = "BuildSettings.Standalone.Small";
-					break;
-				case Platform.Android:
-					iconName = "BuildSettings.Android.Small";
-					break;
-				case Platform.iOS:
-					iconName = "BuildSettings.iPhone.Small";
-					break;
-				case Platform.tvOS:
-					iconName = "BuildSettings.tvOS.Small";
-					break;
-				case Platform.visionOS:
-					iconName = "BuildSettings.visionOS.Small";
-					break;
-				case Platform.WindowsUWP:
-					iconName = "BuildSettings.Metro.Small";
-					break;
-				case Platform.WebGL:
-					iconName = "BuildSettings.WebGL.Small";
-					break;
-			}
-			Texture iconTexture = null;
-			if (!string.IsNullOrEmpty(iconName))
-			{
-				iconTexture = EditorGUIUtility.IconContent(iconName).image;
-			}
-			return iconTexture;
-		}
-
-		private static GUIContent GetPlatformButtonContent(Platform platform)
-		{
-			return new GUIContent(Helper.GetPlatformName(platform), GetPlatformIcon(platform));
-		}
-
-		private void FixRogueEditorBug()
-		{
-			// NOTE: There seems to be a bug in Unity where the editor script will call OnEnable and OnDisable twice.
-			// This is resolved by setting the Window Layout mode to Default.
-			// It causes a problem (at least in Unity 2020.1.11) where the System.Action invocations (usd by AnimCollapseSection)
-			// seem to be in a different 'this' context and so their pointers to serializedObject is not the same, resulting in 
-			// properties modified not marking the serialisedObject as dirty.  To get around this issue we use this static bool
-			// so that OnEnable can only be called once.
-			// https://answers.unity.com/questions/1216599/custom-editor-gets-created-multiple-times-and-rece.html
-			var remainingBuggedEditors  = FindObjectsOfType<MediaPlayerEditor>();
-			foreach(var editor in remainingBuggedEditors)
-			{
-				if (editor == this)
-				{
-					continue;
-				}
-				DestroyImmediate(editor);
-			}
-		}
-
-		private void OnEnable()
-		{
-			FixRogueEditorBug();
-
-			CreateSections();
-
-			LoadSettings();
-
-			_isTrialVersion = IsTrialVersion();
-
-			if (_platformNames == null)
-			{
-				_platformNames = new GUIContent[]
-				{
-					GetPlatformButtonContent(Platform.Windows),
-					GetPlatformButtonContent(Platform.macOS),
-					GetPlatformButtonContent(Platform.iOS),
-					GetPlatformButtonContent(Platform.tvOS),
-					GetPlatformButtonContent(Platform.visionOS),
-					GetPlatformButtonContent(Platform.Android),
-					GetPlatformButtonContent(Platform.WindowsUWP),
-					GetPlatformButtonContent(Platform.WebGL)
-				};
-			}
-
-			ResolveProperties();
-		}
-
-		private void OnDisable()
-		{
-			ClosePreview();
-			SaveSettings();
-
-			if (!Application.isPlaying)
-			{
-				// NOTE: For some reason when transitioning into Play mode, Dispose() is not called in the MediaPlayer if
-				// it was playing before the transition because all members are reset to null.  So we must force this
-				// dispose of all resources to handle this case.
-				// Sadly it means we can't keep persistent playback in the inspector when it loses focus, but
-				// hopefully we can find a way to achieve this in the future
-				/*if (EditorApplication.isPlayingOrWillChangePlaymode)
-				{
-					// NOTE: This seems to work for the above issue, but
-					// we'd need to move it to the global event for when the play state changes
-					MediaPlayer.EditorAllPlayersDispose();
-				}*/
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.ForceDispose();
-				}
-			}
-		}
-
-		private void CreateStyles()
-		{
-			if (_styleSectionBox == null)
-			{
-				_styleSectionBox = new GUIStyle(GUI.skin.box);
-				if (!EditorGUIUtility.isProSkin)
-				{
-					_styleSectionBox = new GUIStyle(GUI.skin.box);
-					//_styleSectionBox.normal.background = Texture2D.redTexture;
-				}
-			}
-
-			_iconPlayButton = EditorGUIUtility.IconContent("d_PlayButton");
-			_iconPauseButton = EditorGUIUtility.IconContent("d_PauseButton");
-			_iconSceneViewAudio = EditorGUIUtility.IconContent("d_SceneViewAudio");
-			_iconProject = EditorGUIUtility.IconContent("d_Project");
-			_iconRotateTool = EditorGUIUtility.IconContent("d_RotateTool");
-
-			AnimCollapseSection.CreateStyles();
-		}
-
-		public override void OnInspectorGUI()
-		{
-			MediaPlayer media = (this.target) as MediaPlayer;
-
-			// NOTE: It is important that serializedObject.Update() is called before media.EditorUpdate()
-			// as otherwise the serializedPropertys are not correctly detected as modified
-			serializedObject.Update();
-
-#if AVPROVIDEO_SUPPORT_LIVEEDITMODE
-			bool isPlayingInEditor = false;
-			// Update only during the layout event so that nothing updates for the render event
-			if (!Application.isPlaying && Event.current.type == EventType.Layout)
-			{
-				isPlayingInEditor = media.EditorUpdate();
-			}
-#endif
-
-			if (media == null || _propMediaPath == null)
-			{
-				return;
-			}
-
-			CreateStyles();
-
-			_icon = GetIcon(_icon);
-
-			ShowImportantMessages();
-
-			if (media != null)
-			{
-				OnInspectorGUI_Player(media, media.TextureProducer);
-			}
-
-			AnimCollapseSection.Show(_sectionMediaInfo);
-			if (_allowDeveloperMode)
-			{
-				AnimCollapseSection.Show(_sectionDebug);
-			}
-			AnimCollapseSection.Show(_sectionSettings);
-
-			if (serializedObject.ApplyModifiedProperties())
-			{
-				EditorUtility.SetDirty(target);
-			}
-
-			AnimCollapseSection.Show(_sectionAboutHelp);
-#if AVPROVIDEO_SUPPORT_LIVEEDITMODE
-			if (isPlayingInEditor)
-			{
-				GL.InvalidateState();
-				// NOTE: there seems to be a bug in Unity (2019.3.13) where if you don't have 
-				// GL.sRGBWrite = true and then call RepaintAllViews() it makes the current Inspector
-				// background turn black.  This only happens when using D3D12
-				// UPDATE: this is happening in Unity 2019.4.15 as well, and in D3D11 mode.  It only
-				// happens when loading a video via the Recent Menu.
-
-				bool originalSRGBWrite = GL.sRGBWrite;
-				GL.sRGBWrite = true;
-				//this.Repaint();
-				UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
-				GL.sRGBWrite = originalSRGBWrite;
-			}
-			// TODO: OnDisable - stop the video if it's playing (and unload it?)
-#endif
-		}
-
-		private void OnInspectorGUI_Settings()
-		{
-			foreach (AnimCollapseSection section in _settingSections)
-			{
-				AnimCollapseSection.Show(section, indentLevel:1);
-			}
-		}
-
-		private void ShowSupportWindowButton()
-		{
-			//GUI.backgroundColor = new Color(0.96f, 0.25f, 0.47f);
-			//if (GUILayout.Button("◄ AVPro Video ►\nHelp & Support"))
-			if (GUILayout.Button("Click here for \nHelp & Support"))
-			{
-				SupportWindow.Init();
-			}
-			//GUI.backgroundColor = Color.white;
-		}
-
-		private void ShowImportantMessages()
-		{
-			// Describe the watermark for trial version
-			if (_isTrialVersion)
-			{
-				string message = string.Empty;
-				if (Application.isPlaying)
-				{
-				#if UNITY_EDITOR_WIN
-					MediaPlayer media = (this.target) as MediaPlayer;
-					message = "The watermark is the horizontal bar that moves vertically and the small 'AVPRO TRIAL' text.";
-					if (media.Info != null && media.Info.GetPlayerDescription().Contains("MF-MediaEngine-Hardware"))
-					{
-						message = "The watermark is the RenderHeads logo that moves around the image.";
-					}
-				#elif UNITY_EDITOR_OSX
-					message = "The RenderHeads logo is the watermark.";
-				#endif
-				}
-
-				EditorHelper.IMGUI.BeginWarningTextBox("AVPRO VIDEO - TRIAL WATERMARK", message, Color.yellow, Color.yellow, Color.white);
-				if (GUILayout.Button("Purchase"))
-				{
-					Application.OpenURL(LinkPurchase);
-				}
-				EditorHelper.IMGUI.EndWarningTextBox();
-			}
-
-			// Warning about not using multi-threaded rendering
-			{
-				bool showWarningMT = false;
-
-				if (/*EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.iOS ||
-					EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.tvOS ||*/
-					EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.Android)
-				{
-#if UNITY_2017_2_OR_NEWER
-					showWarningMT = !UnityEditor.PlayerSettings.GetMobileMTRendering(BuildTargetGroup.Android);
-#else
-					showWarningMT = !UnityEditor.PlayerSettings.mobileMTRendering;
-#endif
-				}
-				/*if (EditorUserBuildSettings.selectedBuildTargetGroup == BuildTargetGroup.WSA)
-				{
-				}*/
-				if (showWarningMT)
-				{
-					EditorHelper.IMGUI.WarningTextBox("Performance Warning", "Deploying to Android with multi-threaded rendering disabled is not recommended.  Enable multi-threaded rendering in the Player Settings > Other Settings panel.", Color.yellow, Color.yellow, Color.white);
-				}
-			}
-
-#if !UNITY_2019_3_OR_NEWER
-			if (SystemInfo.graphicsDeviceType == UnityEngine.Rendering.GraphicsDeviceType.Direct3D12)
-			{
-				EditorHelper.IMGUI.WarningTextBox("Compatibility Warning", "Direct3D 12 is not supported until Unity 2019.3", Color.yellow, Color.yellow, Color.white);
-			}
-#endif
-		}
-
-		private void OnInspectorGUI_Main()
-		{
-			/////////////////// STARTUP FIELDS
-
-			EditorGUILayout.BeginVertical(_styleSectionBox);
-			GUILayout.Label("Startup", EditorStyles.boldLabel);
-			EditorGUILayout.PropertyField(_propAutoOpen);
-			EditorGUILayout.PropertyField(_propAutoStart, new GUIContent("Auto Play"));
-			EditorGUILayout.EndVertical();
-
-			/////////////////// PLAYBACK FIELDS
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Playback", EditorStyles.boldLabel);
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propLoop);
-			if (EditorGUI.EndChangeCheck())
-			{
-				Undo.RecordObject(target, "Loop");
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.Loop = _propLoop.boolValue;
-				}
-			}
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propRate);
-			if (EditorGUI.EndChangeCheck())
-			{
-				Undo.RecordObject(target, "PlaybackRate");
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.PlaybackRate = _propRate.floatValue;
-				}
-			}
-
-			EditorGUILayout.EndVertical();
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Other", EditorStyles.boldLabel);
-			EditorGUILayout.PropertyField(_propPersistent, new GUIContent("Persistent", "Use DontDestroyOnLoad so this object isn't destroyed between level loads"));
-
-			if (_propForceFileFormat != null)
-			{
-				GUIContent label = new GUIContent("Force File Format", "Override automatic format detection when using non-standard file extensions");
-				_propForceFileFormat.enumValueIndex = EditorGUILayout.Popup(label, _propForceFileFormat.enumValueIndex, _fileFormatGuiNames);
-			}
-
-			EditorGUILayout.EndVertical();
-		}
-
-		private void OnInspectorGUI_Visual()
-		{
-#if AVPRO_FEATURE_VIDEORESOLVE
-			
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("Resolve", EditorStyles.boldLabel);
-
-				EditorGUI.BeginChangeCheck();
-				EditorGUILayout.PropertyField(_propUseVideoResolve);
-				if (EditorGUI.EndChangeCheck())
-				{
-					Undo.RecordObject(target, "UseVideoResolve");
-					foreach (MediaPlayer player in this.targets)
-					{
-						player.UseVideoResolve = _propUseVideoResolve.boolValue;
-					}
-				}
-
-				if (_propUseVideoResolve.boolValue)
-				{
-					EditorGUILayout.PropertyField(_propVideoResolve);
-					/*EditorGUI.indentLevel++;
-					EditorGUILayout.PropertyField(_propVideoResolveOptions, true);
-					EditorGUI.indentLevel--;*/
-				}
-
-				GUILayout.EndVertical();
-			}
-#endif
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Texture", EditorStyles.boldLabel);
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propFilter, new GUIContent("Filter"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				Undo.RecordObject(target, "TextureFilterMode");
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.TextureFilterMode = (FilterMode)_propFilter.enumValueIndex;
-				}
-			}
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propWrap, new GUIContent("Wrap"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				Undo.RecordObject(target, "TextureWrapMode");
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.TextureWrapMode = (TextureWrapMode)_propWrap.enumValueIndex;
-				}
-			}
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propAniso, new GUIContent("Aniso"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				Undo.RecordObject(target, "TextureAnisoLevel");
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.TextureAnisoLevel = _propAniso.intValue;
-				}
-			}
-
-			EditorGUILayout.EndVertical();
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Layout Mapping", EditorStyles.boldLabel);
-			EditorGUILayout.PropertyField(_propVideoMapping);
-			EditorGUILayout.EndVertical();
-
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("Resampler (BETA)", EditorStyles.boldLabel);
-				EditorGUILayout.PropertyField(_propResample);
-				EditorGUI.BeginDisabledGroup(!_propResample.boolValue);
-
-				EditorGUILayout.PropertyField(_propResampleMode);
-				EditorGUILayout.PropertyField(_propResampleBufferSize);
-
-				EditorGUI.EndDisabledGroup();
-				EditorGUILayout.EndVertical();
-			}
-		}
-
-		private static bool IsTrialVersion()
-		{
-			string version = GetPluginVersion();
-			return version.Contains("-trial");
-		}
-
-		//private int _updateFrameCount = -1;
-		public override bool RequiresConstantRepaint()
-		{
-			MediaPlayer media = (this.target) as MediaPlayer;
-			if (media != null && media.Control != null && media.isActiveAndEnabled && media.Info.GetDuration() > 0.0)
-			{
-				if (!media.Info.HasVideo())
-				{
-					if (media.Info.HasAudio())
-					{
-						return true;
-					}
-				}
-				else if (media.TextureProducer.GetTexture() != null)
-				{
-					//int frameCount = media.TextureProducer.GetTextureFrameCount();
-					//if (_updateFrameCount != frameCount)
-					{
-						//_updateFrameCount = frameCount;
-						return true;
-					}
-				}
-			}
-			return false;
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 8fdcfef6a9f4f724486d3374e03f4864
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 163
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_AboutHelp.cs

@@ -1,163 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// About/Help section of the editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		public const string LinkPluginWebsite = "https://renderheads.com/products/avpro-video/";
-		public const string LinkForumPage = "https://forum.unity.com/threads/released-avpro-video-complete-video-playback-solution.385611/";
-		public const string LinkForumLastPage = "https://forum.unity.com/threads/released-avpro-video-complete-video-playback-solution.385611/page-100";
-		public const string LinkGithubIssues = "https://github.com/RenderHeads/UnityPlugin-AVProVideo/issues";
-		public const string LinkGithubIssuesNew = "https://github.com/RenderHeads/UnityPlugin-AVProVideo/issues/new/choose";
-		public const string LinkAssetStorePage = "https://assetstore.unity.com/packages/slug/181844?aid=1101lcNgx";
-		public const string LinkUserManual = "https://www.renderheads.com/content/docs/AVProVideo/";
-		public const string LinkScriptingClassReference = "https://www.renderheads.com/content/docs/AVProVideo/api/RenderHeads.Media.AVProVideo.html";
-		public const string LinkPurchase = "https://www.renderheads.com/content/docs/AVProVideo/articles/download.html";
-
-		private struct Native
-		{
-#if UNITY_EDITOR_WIN
-			[System.Runtime.InteropServices.DllImport("AVProVideo")]
-			public static extern System.IntPtr GetPluginVersion();
-#elif UNITY_EDITOR_OSX
-			[System.Runtime.InteropServices.DllImport("AVProVideo")]
-			public static extern System.IntPtr AVPPluginGetVersionStringPointer();
-#endif
-		}
-
-		private static string GetPluginVersion()
-		{
-			string version = "Unknown";
-			try
-			{
-#if UNITY_EDITOR_WIN
-				version = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.GetPluginVersion());
-#elif UNITY_EDITOR_OSX
-				version = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(Native.AVPPluginGetVersionStringPointer());
-#endif
-			}
-			catch (System.DllNotFoundException e)
-			{
-#if UNITY_EDITOR_OSX
-				Debug.LogError("[AVProVideo] Failed to load Bundle. " + e.Message);
-#else
-				Debug.LogError("[AVProVideo] Failed to load DLL. " + e.Message);
-#endif
-			}
-			return version;
-		}
-
-		private static Texture2D GetIcon(Texture2D icon)
-		{
-			if (icon == null)
-			{
-				icon = Resources.Load<Texture2D>("AVProVideoIcon");
-			}
-			return icon;
-		}
-
-		private void OnInspectorGUI_About()
-		{
-			EditorGUILayout.BeginHorizontal();
-			GUILayout.FlexibleSpace();
-			_icon = GetIcon(_icon);
-			if (_icon != null)
-			{
-				GUILayout.Label(new GUIContent(_icon));
-			}
-			GUILayout.FlexibleSpace();
-			EditorGUILayout.EndHorizontal();
-
-			GUI.color = Color.yellow;
-			EditorHelper.IMGUI.CentreLabel("AVPro Video by RenderHeads Ltd", EditorStyles.boldLabel);
-			EditorHelper.IMGUI.CentreLabel("version " + Helper.AVProVideoVersion + " (plugin v" + GetPluginVersion() + ")");
-			GUI.color = Color.white;
-			GUI.backgroundColor = Color.white;
-
-			if (_icon != null)
-			{
-				GUILayout.Space(8f);
-				ShowSupportWindowButton();
-				GUILayout.Space(8f);
-			}
-
-			EditorGUILayout.LabelField("Links", EditorStyles.boldLabel);
-
-			GUILayout.Space(8f);
-
-			EditorGUILayout.LabelField("Documentation");
-			if (GUILayout.Button("User Manual, FAQ, Release Notes", GUILayout.ExpandWidth(false)))
-			{
-				Application.OpenURL(LinkUserManual);
-			}
-			if (GUILayout.Button("Scripting Class Reference", GUILayout.ExpandWidth(false)))
-			{
-				Application.OpenURL(LinkScriptingClassReference);
-			}
-
-			GUILayout.Space(16f);
-
-			GUILayout.Label("Bugs and Support");
-			if (GUILayout.Button("Open Help & Support", GUILayout.ExpandWidth(false)))
-			{
-				SupportWindow.Init();
-			}
-
-			GUILayout.Space(16f);
-
-			GUILayout.Label("Rate and Review (★★★★☆)", GUILayout.ExpandWidth(false));
-			if (GUILayout.Button("Asset Store Page", GUILayout.ExpandWidth(false)))
-			{
-				Application.OpenURL(LinkAssetStorePage);
-			}
-
-			GUILayout.Space(16f);
-
-			GUILayout.Label("Community");
-			if (GUILayout.Button("Forum Thread", GUILayout.ExpandWidth(false)))
-			{
-				Application.OpenURL(LinkForumPage);
-			}
-
-			GUILayout.Space(16f);
-
-			GUILayout.Label("Homepage", GUILayout.ExpandWidth(false));
-			if (GUILayout.Button("Official Website", GUILayout.ExpandWidth(false)))
-			{
-				Application.OpenURL(LinkPluginWebsite);
-			}
-
-			GUILayout.Space(32f);
-
-			EditorGUILayout.LabelField("Credits", EditorStyles.boldLabel);
-			GUILayout.Space(8f);
-
-			EditorHelper.IMGUI.CentreLabel("Programming", EditorStyles.boldLabel);
-			EditorHelper.IMGUI.CentreLabel("Andrew Griffiths");
-			EditorHelper.IMGUI.CentreLabel("Morris Butler");
-			EditorHelper.IMGUI.CentreLabel("Ste Butcher");
-			EditorHelper.IMGUI.CentreLabel("Richard Turnbull");
-			EditorHelper.IMGUI.CentreLabel("Sunrise Wang");
-			EditorHelper.IMGUI.CentreLabel("Muano Mainganye");
-			EditorHelper.IMGUI.CentreLabel("Shane Marks");
-			GUILayout.Space(8f);
-			EditorHelper.IMGUI.CentreLabel("Graphics", EditorStyles.boldLabel);
-			GUILayout.Space(8f);
-			EditorHelper.IMGUI.CentreLabel("Jeff Rusch");
-			EditorHelper.IMGUI.CentreLabel("Luke Godward");
-			EditorHelper.IMGUI.CentreLabel( "QA/Support", EditorStyles.boldLabel );
-			GUILayout.Space( 8f );
-			EditorHelper.IMGUI.CentreLabel( "Chris Clarkson" );
-
-			GUILayout.Space(32f);
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_AboutHelp.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 2463176874e32294998504d6b1f2f21c
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 191
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Android.cs

@@ -1,191 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private readonly static GUIContent[] _audioModesAndroid =
-		{
-			new GUIContent("System Direct"),
-			new GUIContent("Unity"),
-			new GUIContent("Facebook Audio 360", "Initialises player with Facebook Audio 360 support"),
-		};
-
-		private readonly static GUIContent[] _blitTextureFilteringAndroid =
-		{
-			new GUIContent("Point"),
-			new GUIContent("Bilinear"),
-			new GUIContent("Trilinear"),
-		};
-
-		private readonly static FieldDescription _optionFileOffset = new FieldDescription(".fileOffset", GUIContent.none);
-//		private readonly static FieldDescription _optionBlitTextureFiltering = new FieldDescription(".blitTextureFiltering", new GUIContent("Blit Texture Filtering", "The texture filtering used for the final internal blit."));
-//		private readonly static FieldDescription _optionShowPosterFrames = new FieldDescription(".showPosterFrame", new GUIContent("Show Poster Frame", "Allows a paused loaded video to display the initial frame. This uses up decoder resources."));
-		private readonly static FieldDescription _optionPreferSoftwareDecoder = new FieldDescription(".preferSoftwareDecoder", GUIContent.none);
-		private readonly static FieldDescription _optionForceRtpTCP = new FieldDescription(".forceRtpTCP", GUIContent.none);
-		private readonly static FieldDescription _optionForceEnableMediaCodecAsynchronousQueueing = new FieldDescription(".forceEnableMediaCodecAsynchronousQueueing", GUIContent.none);
-		private readonly static FieldDescription _optionPreferredMaximumResolution = new FieldDescription("._preferredMaximumResolution", new GUIContent("Preferred Maximum Resolution", "The desired maximum resolution of the video."));
-#if UNITY_2017_2_OR_NEWER
-		private readonly static FieldDescription _optionCustomPreferredMaxResolution = new FieldDescription("._customPreferredMaximumResolution", new GUIContent(" "));
-#endif
-		private readonly static FieldDescription _optionCustomPreferredPeakBitRate = new FieldDescription("._preferredPeakBitRate", new GUIContent("Preferred Peak BitRate", "The desired limit of network bandwidth consumption for playback, set to 0 for no preference."));
-		private readonly static FieldDescription _optionCustomPreferredPeakBitRateUnits = new FieldDescription("._preferredPeakBitRateUnits", new GUIContent());
-
-		private readonly static FieldDescription _optionMinBufferMs = new FieldDescription(".minBufferMs", new GUIContent("Minimum Buffer Ms"));
-		private readonly static FieldDescription _optionMaxBufferMs = new FieldDescription(".maxBufferMs", new GUIContent("Maximum Buffer Ms"));
-		private readonly static FieldDescription _optionBufferForPlaybackMs = new FieldDescription(".bufferForPlaybackMs", new GUIContent("Buffer For Playback Ms"));
-		private readonly static FieldDescription _optionBufferForPlaybackAfterRebufferMs = new FieldDescription(".bufferForPlaybackAfterRebufferMs", new GUIContent("Buffer For Playback After Rebuffer Ms"));
-
-		private void OnInspectorGUI_Override_Android()
-		{
-			//MediaPlayer media = (this.target) as MediaPlayer;
-			//MediaPlayer.OptionsAndroid options = media._optionsAndroid;
-
-			GUILayout.Space(8f);
-
-			string optionsVarName = MediaPlayer.GetPlatformOptionsVariable(Platform.Android);
-
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-
-				DisplayPlatformOption(optionsVarName, _optionVideoAPI);
-
-				{
-					SerializedProperty propFileOffset = DisplayPlatformOption(optionsVarName, _optionFileOffset);
-					propFileOffset.intValue = Mathf.Max(0, propFileOffset.intValue);
-				}
-
-				{
-					SerializedProperty propTextureFormat = DisplayPlatformOption(optionsVarName, _optionTextureFormat);
-					if( (MediaPlayer.PlatformOptions.TextureFormat)( propTextureFormat.enumValueIndex ) == MediaPlayer.PlatformOptions.TextureFormat.YCbCr420_OES )
-					{
-						EditorHelper.IMGUI.NoticeBox(MessageType.Info, "OES can require special shaders.  Make sure you assign an AVPro Video OES shader to your meshes/materials that need to display video.");
-
-						// PlayerSettings.virtualRealitySupported is deprecated from 2019.3
-#if !UNITY_2019_3_OR_NEWER
-						if (PlayerSettings.virtualRealitySupported)
-#endif
-						{
-							if (PlayerSettings.stereoRenderingPath != StereoRenderingPath.MultiPass)
-							{
-								EditorHelper.IMGUI.NoticeBox(MessageType.Error, "OES only supports multi-pass stereo rendering path, please change in Player Settings.");
-							}
-						}
-
-						EditorHelper.IMGUI.NoticeBox(MessageType.Warning, "OES is not supported in the trial version.  If your Android plugin is not trial then you can ignore this warning.");
-					}
-				}
-
-//				{
-//					SerializedProperty propBlitTextureFiltering = DisplayPlatformOptionEnum(optionsVarName, _optionBlitTextureFiltering, _blitTextureFilteringAndroid);
-//					propBlitTextureFiltering.intValue = Mathf.Max(0, propBlitTextureFiltering.intValue);
-//				}
-
-				EditorGUILayout.EndVertical();
-			}
-
-			if (_showUltraOptions)
-			{
-				SerializedProperty httpHeadersProp = serializedObject.FindProperty(optionsVarName + ".httpHeaders.httpHeaders");
-				if (httpHeadersProp != null)
-				{
-					OnInspectorGUI_HttpHeaders(httpHeadersProp);
-				}
-
-				SerializedProperty keyAuthProp = serializedObject.FindProperty(optionsVarName + ".keyAuth");
-				if (keyAuthProp != null)
-				{
-					OnInspectorGUI_HlsDecryption(keyAuthProp);
-				}
-			}
-
-#if false
-			// MediaPlayer API options
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("MediaPlayer API Options", EditorStyles.boldLabel);
-
-				DisplayPlatformOption(optionsVarName, _optionShowPosterFrames);
-
-				EditorGUILayout.EndVertical();
-			}
-#endif
-
-			// ExoPlayer API options
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("ExoPlayer API Options", EditorStyles.boldLabel);
-
-				DisplayPlatformOption(optionsVarName, _optionPreferSoftwareDecoder);
-				DisplayPlatformOption(optionsVarName, _optionForceRtpTCP);
-				DisplayPlatformOption(optionsVarName, _optionForceEnableMediaCodecAsynchronousQueueing);
-
-				// Audio
-				{
-					SerializedProperty propAudioOutput = DisplayPlatformOptionEnum(optionsVarName, _optionAudioOutput, _audioModesAndroid);
-					if ((Android.AudioOutput)propAudioOutput.enumValueIndex == Android.AudioOutput.FacebookAudio360)
-					{
-						if (_showUltraOptions)
-						{
-							EditorGUILayout.Space();
-							EditorGUILayout.LabelField("Facebook Audio 360", EditorStyles.boldLabel);
-							DisplayPlatformOptionEnum(optionsVarName, _optionAudio360ChannelMode, _audio360ChannelMapGuiNames);
-							DisplayPlatformOption(optionsVarName, _optionAudio360LatencyMS);
-						}
-					}
-				}
-
-				GUILayout.Space(8f);
-
-//				EditorGUILayout.BeginVertical();
-				EditorGUILayout.LabelField("Adaptive Stream", EditorStyles.boldLabel);
-
-				DisplayPlatformOption(optionsVarName, _optionStartMaxBitrate);
-
-				{
-					SerializedProperty preferredMaximumResolutionProp = DisplayPlatformOption(optionsVarName, _optionPreferredMaximumResolution);
-					if ((MediaPlayer.OptionsAndroid.Resolution)preferredMaximumResolutionProp.intValue == MediaPlayer.OptionsAndroid.Resolution.Custom)
-					{
-#if UNITY_2017_2_OR_NEWER
-						DisplayPlatformOption(optionsVarName, _optionCustomPreferredMaxResolution);
-#endif
-					}
-				}
-
-				{
-					EditorGUILayout.BeginHorizontal();
-					DisplayPlatformOption(optionsVarName, _optionCustomPreferredPeakBitRate);
-					DisplayPlatformOption(optionsVarName, _optionCustomPreferredPeakBitRateUnits);
-					EditorGUILayout.EndHorizontal();
-				}
-
-				DisplayPlatformOption(optionsVarName, _optionMinBufferMs);
-				DisplayPlatformOption(optionsVarName, _optionMaxBufferMs);
-				DisplayPlatformOption(optionsVarName, _optionBufferForPlaybackMs);
-				DisplayPlatformOption(optionsVarName, _optionBufferForPlaybackAfterRebufferMs);
-
-				EditorGUILayout.EndVertical();
-			}
-			GUI.enabled = true;
-
-			/*
-			SerializedProperty propFileOffsetLow = serializedObject.FindProperty(optionsVarName + ".fileOffsetLow");
-			SerializedProperty propFileOffsetHigh = serializedObject.FindProperty(optionsVarName + ".fileOffsetHigh");
-			if (propFileOffsetLow != null && propFileOffsetHigh != null)
-			{
-				propFileOffsetLow.intValue = ;
-
-				EditorGUILayout.PropertyField(propFileOFfset);
-			}*/
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Android.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 0516948b5fec81a4eb1566ebd6d4027a
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 145
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Apple.cs

@@ -1,145 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-using System.Collections.Generic;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private readonly static FieldDescription _optionAudioMode = new FieldDescription("._audioMode", new GUIContent("Audio Mode", "Unity mode does not work with HLS video"));
-		private readonly static FieldDescription _optionTextureFormat = new FieldDescription(".textureFormat", new GUIContent("Texture Format", "BGRA32 is the most compatible.\nYCbCr420_OES requires less memory and processing however it does require shader support."));
-		private readonly static FieldDescription _optionPreferredForwardBufferDuration = new FieldDescription("._preferredForwardBufferDuration", new GUIContent("Preferred Forward Buffer Duration", "The duration in seconds the player should buffer ahead of the playhead to prevent stalling. Set to 0 to let the system decide."));
-		private readonly static FieldDescription _optionCustomPreferredPeakBitRateApple = new FieldDescription("._preferredPeakBitRate", new GUIContent("Preferred Peak BitRate", "The desired limit of network bandwidth consumption for playback, set to 0 for no preference."));
-		private readonly static FieldDescription _optionCustomPreferredPeakBitRateUnitsApple = new FieldDescription("._preferredPeakBitRateUnits", new GUIContent());
-
-		private void OnInspectorGUI_Override_Apple(Platform platform)
-		{
-			GUILayout.Space(8f);
-
-			string optionsVarName = MediaPlayer.GetPlatformOptionsVariable(platform);
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-
-			DisplayPlatformOption(optionsVarName, _optionTextureFormat);
-
-			SerializedProperty flagsProp = serializedObject.FindProperty(optionsVarName + "._flags");
-			MediaPlayer.OptionsApple.Flags flags = flagsProp != null ? (MediaPlayer.OptionsApple.Flags)flagsProp.intValue : 0;
-
-			// Texture flags
-			if (flagsProp != null)
-			{
-				bool generateMipmaps = flags.GenerateMipmaps();
-				generateMipmaps = EditorGUILayout.Toggle(new GUIContent("Generate Mipmaps"), generateMipmaps);
-				flags = flags.SetGenerateMipMaps(generateMipmaps);
-			}
-
-			// Audio
-			DisplayPlatformOption(optionsVarName, _optionAudioMode);
-
-			// Platform specific flags
-			if (flagsProp != null)
-			{
-				if (platform == Platform.macOS || platform == Platform.iOS)
-				{
-					bool b = flags.AllowExternalPlayback();
-					b = EditorGUILayout.Toggle(new GUIContent("Allow External Playback", "Enables support for playback on external devices via AirPlay."), b);
-					flags = flags.SetAllowExternalPlayback(b);
-				}
-
-				if (platform == Platform.iOS)
-				{
-					bool b = flags.ResumePlaybackAfterAudioSessionRouteChange();
-					b = EditorGUILayout.Toggle(new GUIContent("Resume playback after audio route change", "The default behaviour is for playback to pause when the audio route changes, for instance when disconnecting headphones."), b);
-					flags = flags.SetResumePlaybackAfterAudioSessionRouteChange(b);
-				}
-
-				bool playWithoutBuffering = flags.PlayWithoutBuffering();
-				playWithoutBuffering = EditorGUILayout.Toggle(new GUIContent("Play without buffering"), playWithoutBuffering);
-				flags = flags.SetPlayWithoutBuffering(playWithoutBuffering);
-
-				bool useSinglePlayerItem = flags.UseSinglePlayerItem();
-				useSinglePlayerItem = EditorGUILayout.Toggle(new GUIContent("Use single player item", "Restricts the media player to using only one player item. This can help reduce network usage for remote videos but will cause a stall when looping."), useSinglePlayerItem);
-				flags = flags.SetUseSinglePlayerItem(useSinglePlayerItem);
-			}
-
-			SerializedProperty maximumPlaybackRateProp = serializedObject.FindProperty(optionsVarName + ".maximumPlaybackRate");
-			if (maximumPlaybackRateProp != null)
-			{
-				EditorGUILayout.Slider(maximumPlaybackRateProp, 2.0f, 10.0f, new GUIContent("Max Playback Rate", "Increase the maximum playback rate before which playback switches to key-frames only."));
-			}
-
-			GUILayout.Space(8f);
-
-			EditorGUILayout.BeginVertical();
-			EditorGUILayout.LabelField("Network", EditorStyles.boldLabel);
-
-			SerializedProperty preferredMaximumResolutionProp = DisplayPlatformOption(optionsVarName, _optionPreferredMaximumResolution);
-			if ((MediaPlayer.OptionsApple.Resolution)preferredMaximumResolutionProp.intValue == MediaPlayer.OptionsApple.Resolution.Custom)
-			{
-				#if UNITY_2017_2_OR_NEWER
-				DisplayPlatformOption(optionsVarName, _optionCustomPreferredMaxResolution);
-				#endif
-			}
-
-			EditorGUILayout.BeginHorizontal();
-			DisplayPlatformOption(optionsVarName, _optionCustomPreferredPeakBitRateApple);
-			DisplayPlatformOption(optionsVarName, _optionCustomPreferredPeakBitRateUnitsApple);
-			EditorGUILayout.EndHorizontal();
-
-			DisplayPlatformOption(optionsVarName, _optionPreferredForwardBufferDuration);
-
-			EditorGUILayout.EndVertical();
-
-			EditorGUILayout.EndVertical();
-
-			// Set the flags
-
-			if (flagsProp != null)
-			{
-				flagsProp.intValue = (int)flags;
-			}
-
-			if (_showUltraOptions)
-			{
-				SerializedProperty keyAuthProp = serializedObject.FindProperty(optionsVarName + ".keyAuth");
-				if (keyAuthProp != null)
-				{
-					OnInspectorGUI_HlsDecryption(keyAuthProp);
-				}
-
-				SerializedProperty httpHeadersProp = serializedObject.FindProperty(optionsVarName + ".httpHeaders.httpHeaders");
-				if (httpHeadersProp != null)
-				{
-					OnInspectorGUI_HttpHeaders(httpHeadersProp);
-				}
-			}
-		}
-
-		private void OnInspectorGUI_Override_MacOSX()
-		{
-			OnInspectorGUI_Override_Apple(Platform.macOS);
-		}
-
-		private void OnInspectorGUI_Override_iOS()
-		{
-			OnInspectorGUI_Override_Apple(Platform.iOS);
-		}
-
-		private void OnInspectorGUI_Override_tvOS()
-		{
-			OnInspectorGUI_Override_Apple(Platform.tvOS);
-		}
-
-		private void OnInspectorGUI_Override_visionOS()
-		{
-			OnInspectorGUI_Override_Apple(Platform.visionOS);
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Apple.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 38bbbff2994464c48b6d633a311b63f6
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 87
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Audio.cs

@@ -1,87 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2022 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private SerializedProperty _propVolume;
-		private SerializedProperty _propBalance;
-		private SerializedProperty _propMuted;
-		private SerializedProperty _propAudioHeadTransform;
-		private SerializedProperty _propAudioEnableFocus;
-		private SerializedProperty _propAudioFocusOffLevelDB;
-		private SerializedProperty _propAudioFocusWidthDegrees;
-		private SerializedProperty _propAudioFocusTransform;
-
-		private void OnInspectorGUI_Audio()
-		{
-			if (EditorUtility.audioMasterMute)
-			{
-				EditorGUILayout.BeginHorizontal();
-				EditorGUILayout.HelpBox("Audio is currently muted in Editor", MessageType.Warning, true);
-				if (GUILayout.Button("Unmute", GUILayout.ExpandHeight(true)))
-				{
-					EditorUtility.audioMasterMute = false;
-					UnityEditorInternal.InternalEditorUtility.RepaintAllViews();	// To force the GameView audio mute toggle display state to update
-				}
-				EditorGUILayout.EndHorizontal();
-			}
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propVolume, new GUIContent("Volume"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.AudioVolume = _propVolume.floatValue;
-				}
-			}
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propBalance, new GUIContent("Balance"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.AudioBalance = _propBalance.floatValue;
-				}
-			}
-
-			EditorGUI.BeginChangeCheck();
-			EditorGUILayout.PropertyField(_propMuted, new GUIContent("Muted"));
-			if (EditorGUI.EndChangeCheck())
-			{
-				foreach (MediaPlayer player in this.targets)
-				{
-					player.AudioMuted = _propMuted.boolValue;
-				}
-			}
-
-			EditorGUILayout.EndVertical();
-
-			if (_showUltraOptions)
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("Audio 360", EditorStyles.boldLabel);
-				EditorGUILayout.PropertyField(_propAudioHeadTransform, new GUIContent("Head Transform", "Set this to your head camera transform. Only currently used for Facebook Audio360"));
-				EditorGUILayout.PropertyField(_propAudioEnableFocus, new GUIContent("Enable Focus", "Enables focus control. Only currently used for Facebook Audio360"));
-				if (_propAudioEnableFocus.boolValue)
-				{
-					EditorGUILayout.PropertyField(_propAudioFocusOffLevelDB, new GUIContent("Off Focus Level DB", "Sets the off-focus level in DB, with the range being between -24 to 0 DB. Only currently used for Facebook Audio360"));
-					EditorGUILayout.PropertyField(_propAudioFocusWidthDegrees, new GUIContent("Focus Width Degrees", "Set the focus width in degrees, with the range being between 40 and 120 degrees. Only currently used for Facebook Audio360"));
-					EditorGUILayout.PropertyField(_propAudioFocusTransform, new GUIContent("Focus Transform", "Set this to where you wish to focus on the video. Only currently used for Facebook Audio360"));
-				}
-				EditorGUILayout.EndVertical();
-			}
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Audio.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 37646bf6e83e0f5429dc604d9f8b86fc
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 284
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Debug.cs

@@ -1,284 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private static bool _allowDeveloperMode = false;
-		private static bool _showUltraOptions = true;
-
-		private AnimCollapseSection _sectionDevModeState;
-		private AnimCollapseSection _sectionDevModeTexture;
-		private AnimCollapseSection _sectionDevModeHapNotchLCDecoder;
-		private AnimCollapseSection _sectionDevModeBufferedFrames;
-		private AnimCollapseSection _sectionDevModePlaybackQuality;
-
-		private static readonly GUIContent _guiTextMetaData = new GUIContent("MetaData");
-		private static readonly GUIContent _guiTextPaused = new GUIContent("Paused");
-		private static readonly GUIContent _guiTextPlaying = new GUIContent("Playing");
-		private static readonly GUIContent _guiTextSeeking = new GUIContent("Seeking");
-		private static readonly GUIContent _guiTextBuffering = new GUIContent("Buffering");
-		private static readonly GUIContent _guiTextStalled = new GUIContent("Stalled");
-		private static readonly GUIContent _guiTextFinished = new GUIContent("Finished");
-		private static readonly GUIContent _guiTextTimeColon= new GUIContent("Time: ");
-		private static readonly GUIContent _guiTextFrameColon = new GUIContent("Frame: ");
-
-		private static readonly GUIContent _guiTextFrameDec = new GUIContent("<");
-		private static readonly GUIContent _guiTextFrameInc = new GUIContent(">");
-		private static readonly GUIContent _guiTextSelectTexture = new GUIContent("Select Texture");
-		private static readonly GUIContent _guiTextSaveFramePNG = new GUIContent("Save Frame PNG");
-		private static readonly GUIContent _guiTextSaveFrameEXR = new GUIContent("Save Frame EXR");
-
-		private static readonly GUIContent _guiTextDecodeStats = new GUIContent("Decode Stats");
-		private static readonly GUIContent _guiTextParallelFrames = new GUIContent("Parallel Frames");
-		private static readonly GUIContent _guiTextDecodedFrames = new GUIContent("Decoded Frames");
-		private static readonly GUIContent _guiTextDroppedFrames = new GUIContent("Dropped Frames");
-
-		private static readonly GUIContent _guiTextBufferedFrames = new GUIContent("Buffered Frames");
-		private static readonly GUIContent _guiTextFreeFrames = new GUIContent("Free Frames");
-		//private static readonly GUIContent _guiTextDisplayTimestamp = new GUIContent("Display Timstamp");
-		//private static readonly GUIContent _guiTextMinTimestamp = new GUIContent("Min Timstamp");
-		//private static readonly GUIContent _guiTextMaxTimestamp = new GUIContent("Max Timstamp");
-		private static readonly GUIContent _guiTextFlush = new GUIContent("Flush");
-		private static readonly GUIContent _guiTextReset = new GUIContent("Reset");
-
-		private void OnInspectorGUI_DevMode_State()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			if (mediaPlayer.Control != null)
-			{
-				// State
-
-				GUIStyle style = GUI.skin.button;
-				using (HorizontalFlowScope flow = new HorizontalFlowScope(Screen.width))
-				{
-					flow.AddItem(_guiTextMetaData, style);
-					GUI.color = mediaPlayer.Control.HasMetaData() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextMetaData, style);
-
-					flow.AddItem(_guiTextPaused, style);
-					GUI.color = mediaPlayer.Control.IsPaused() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextPaused, style);
-
-					flow.AddItem(_guiTextPlaying, style);
-					GUI.color = mediaPlayer.Control.IsPlaying() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextPlaying, style);
-
-					flow.AddItem(_guiTextSeeking, style);
-					GUI.color = mediaPlayer.Control.IsSeeking() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextSeeking, style);
-
-					flow.AddItem(_guiTextBuffering, style);
-					GUI.color = mediaPlayer.Control.IsBuffering() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextBuffering, style);
-
-					flow.AddItem(_guiTextStalled, style);
-					GUI.color = mediaPlayer.Info.IsPlaybackStalled() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextStalled, style);
-
-					flow.AddItem(_guiTextFinished, style);
-					GUI.color = mediaPlayer.Control.IsFinished() ? Color.green : Color.white;
-					GUILayout.Toggle(true, _guiTextFinished, style);
-				}
-				GUI.color = Color.white;
-
-				// Time, FPS, Frame stepping
-				GUILayout.BeginHorizontal();
-				GUILayout.Label(_guiTextTimeColon);
-				GUILayout.Label(mediaPlayer.Control.GetCurrentTime().ToString());
-				GUILayout.FlexibleSpace();
-				GUILayout.Label(_guiTextFrameColon);
-				GUILayout.Label(mediaPlayer.Control.GetCurrentTimeFrames().ToString());
-				EditorGUI.BeginDisabledGroup(mediaPlayer.Info.GetVideoFrameRate() <= 0f);
-				if (GUILayout.Button(_guiTextFrameDec))
-				{
-					mediaPlayer.Control.SeekToFrameRelative(-1);
-				}
-				if (GUILayout.Button(_guiTextFrameInc))
-				{
-					mediaPlayer.Control.SeekToFrameRelative(1);
-				}
-				EditorGUI.EndDisabledGroup();
-				GUILayout.EndHorizontal();
-			}
-		}
-
-		private void OnInspectorGUI_DevMode_Texture()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			if (mediaPlayer.Control != null)
-			{
-				// Raw texture preview
-				if (mediaPlayer.TextureProducer != null)
-				{
-					GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
-					GUILayout.FlexibleSpace();
-					for (int i = 0; i < mediaPlayer.TextureProducer.GetTextureCount(); i++)
-					{
-						Texture texture = mediaPlayer.TextureProducer.GetTexture(i);
-						if (texture != null)
-						{
-							GUILayout.BeginVertical();
-							Rect textureRect = GUILayoutUtility.GetRect(128f, 128f);
-							if (Event.current.type == EventType.Repaint)
-							{
-								GUI.color = Color.gray;
-								EditorGUI.DrawTextureTransparent(textureRect, Texture2D.blackTexture, ScaleMode.StretchToFill);
-								GUI.color = Color.white;
-							}
-							GUI.DrawTexture(textureRect, texture, ScaleMode.ScaleToFit, false);
-							GUILayout.Label(texture.width + "x" + texture.height + " ");
-							if (GUILayout.Button(_guiTextSelectTexture, GUILayout.ExpandWidth(false)))
-							{
-								Selection.activeObject = texture;
-							}
-							GUILayout.EndVertical();
-						}
-					}
-					GUILayout.FlexibleSpace();
-					GUILayout.EndHorizontal();
-
-					GUILayout.Label("Updates: " + mediaPlayer.TextureProducer.GetTextureFrameCount());
-					GUILayout.Label("TimeStamp: " + mediaPlayer.TextureProducer.GetTextureTimeStamp());
-
-					GUILayout.BeginHorizontal();
-					if (GUILayout.Button(_guiTextSaveFramePNG, GUILayout.ExpandWidth(true)))
-					{
-						mediaPlayer.SaveFrameToPng();
-					}
-					if (GUILayout.Button(_guiTextSaveFrameEXR, GUILayout.ExpandWidth(true)))
-					{
-						mediaPlayer.SaveFrameToExr();
-					}
-					GUILayout.EndHorizontal();
-				}
-			}
-		}
-
-		private void OnInspectorGUI_DevMode_HapNotchLCDecoder()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			if (mediaPlayer.Info != null)
-			{
-				int activeDecodeThreadCount = 0;
-				int decodedFrameCount = 0;
-				int droppedFrameCount = 0;
-				if (mediaPlayer.Info.GetDecoderPerformance(ref activeDecodeThreadCount, ref decodedFrameCount, ref droppedFrameCount))
-				{
-					GUILayout.Label(_guiTextDecodeStats);
-					EditorGUI.indentLevel++;
-					EditorGUILayout.Slider(_guiTextParallelFrames, activeDecodeThreadCount, 0f, mediaPlayer.PlatformOptionsWindows.parallelFrameCount);
-					EditorGUILayout.Slider(_guiTextDecodedFrames, decodedFrameCount, 0f, mediaPlayer.PlatformOptionsWindows.prerollFrameCount * 2);
-					EditorGUILayout.IntField(_guiTextDroppedFrames, droppedFrameCount);
-					EditorGUI.indentLevel--;
-				}
-			}
-		}
-
-		private float _lastBufferedFrameCount;
-		private float _lastFreeFrameCount;
-
-		private void OnInspectorGUI_DevMode_BufferedFrames()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			if (mediaPlayer.Control != null)
-			{
-				IBufferedDisplay bufferedDisplay = mediaPlayer.BufferedDisplay;
-				if (bufferedDisplay != null)
-				{
-					BufferedFramesState state = bufferedDisplay.GetBufferedFramesState();
-
-					GUILayout.BeginHorizontal();
-					EditorGUILayout.PrefixLabel(_guiTextBufferedFrames);
-					Rect progressRect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight);
-					EditorGUI.ProgressBar(progressRect, _lastBufferedFrameCount, state.bufferedFrameCount.ToString());
-					GUILayout.EndHorizontal();
-
-					GUILayout.BeginHorizontal();
-					EditorGUILayout.PrefixLabel(_guiTextFreeFrames);
-					progressRect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight);
-					EditorGUI.ProgressBar(progressRect, _lastFreeFrameCount, state.freeFrameCount.ToString());
-					GUILayout.EndHorizontal();
-
-					_lastBufferedFrameCount = Mathf.MoveTowards(_lastBufferedFrameCount, state.bufferedFrameCount / 12f, Time.deltaTime);
-					_lastFreeFrameCount = Mathf.MoveTowards(_lastFreeFrameCount, state.freeFrameCount / 12f, Time.deltaTime);
-
-					//EditorGUILayout.LabelField(_guiTextDisplayTimestamp, new GUIContent(mediaPlayer.TextureProducer.GetTextureTimeStamp().ToString() + " " + (mediaPlayer.TextureProducer.GetTextureTimeStamp() / Helper.SecondsToHNS).ToString() + "s"));
-					//EditorGUILayout.LabelField(_guiTextMinTimestamp, new GUIContent(state.minTimeStamp.ToString() + " " + (state.minTimeStamp / Helper.SecondsToHNS).ToString() + "s"));
-					//EditorGUILayout.LabelField(_guiTextMaxTimestamp, new GUIContent(state.maxTimeStamp.ToString() + " " + (state.maxTimeStamp / Helper.SecondsToHNS).ToString() + "s"));
-					if (GUILayout.Button(_guiTextFlush))
-					{
-						// Seek causes a flush
-						mediaPlayer.Control.Seek(mediaPlayer.Control.GetCurrentTime());
-					}
-				}
-			}
-		}
-
-		private void OnInspectorGUI_DevMode_PresentationQuality()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			if (mediaPlayer.Info != null)
-			{
-				PlaybackQualityStats stats = mediaPlayer.Info.GetPlaybackQualityStats();
-				//stats.LogIssues = true;
-				stats.LogIssues = EditorGUILayout.Toggle("Log Issues", stats.LogIssues);
-				GUILayout.Label("Video", EditorStyles.boldLabel);
-				EditorGUI.indentLevel++;
-				EditorGUILayout.LabelField("Skipped Frames", stats.SkippedFrames.ToString());
-				GUILayout.BeginHorizontal();
-				EditorGUILayout.LabelField("Duplicate Frames", stats.DuplicateFrames.ToString());
-				GUILayout.Label(stats.VSyncStatus);
-				GUILayout.EndHorizontal();
-				EditorGUILayout.LabelField("Perfect Frames", (stats.PerfectFramesT * 100f).ToString("F2") + "%");
-				EditorGUI.indentLevel--;
-				GUILayout.Label("Unity", EditorStyles.boldLabel);
-				EditorGUI.indentLevel++;
-				EditorGUILayout.LabelField("Dropped Frames", stats.UnityDroppedFrames.ToString());
-				EditorGUI.indentLevel--;
-				if (GUILayout.Button(_guiTextReset))
-				{
-					stats.Reset();
-				}
-			}
-		}
-
-		private void OnInspectorGUI_Debug()
-		{
-			MediaPlayer mediaPlayer = (this.target) as MediaPlayer;
-			IMediaInfo info = mediaPlayer.Info;
-			if (info != null)
-			{
-				AnimCollapseSection.Show(_sectionDevModeState);
-				AnimCollapseSection.Show(_sectionDevModeTexture);
-				AnimCollapseSection.Show(_sectionDevModePlaybackQuality);
-			}
-
-			if (info != null)
-			{
-#if UNITY_EDITOR_WIN
-				if (mediaPlayer.PlatformOptionsWindows.useHapNotchLC)
-				{
-					AnimCollapseSection.Show(_sectionDevModeHapNotchLCDecoder);
-				}
-				if (mediaPlayer.PlatformOptionsWindows.bufferedFrameSelection != BufferedFrameSelectionMode.None)
-				{
-					AnimCollapseSection.Show(_sectionDevModeBufferedFrames);
-				}
-#endif
-			}
-			else
-			{
-				GUILayout.Label("No media loaded");
-			}
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Debug.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 8c5649aed6704fa4199ad212f4562fdb
-timeCreated: 1594038897
-licenseType: Pro
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 40
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Events.cs

@@ -1,40 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private SerializedProperty _propEvents;
-		private SerializedProperty _propEventMask;
-		private SerializedProperty _propPauseMediaOnAppPause;
-		private SerializedProperty _propPlayMediaOnAppUnpause;
-
-		private void OnInspectorGUI_Events()
-		{		
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			
-			EditorGUILayout.PropertyField(_propEvents);
-
-			_propEventMask.intValue = EditorGUILayout.MaskField("Triggered Events", _propEventMask.intValue, System.Enum.GetNames(typeof(MediaPlayerEvent.EventType)));
-
-			EditorGUILayout.BeginHorizontal();
-			GUILayout.Label("Pause Media On App Pause");
-			_propPauseMediaOnAppPause.boolValue = EditorGUILayout.Toggle(_propPauseMediaOnAppPause.boolValue);
-			EditorGUILayout.EndHorizontal();
-			EditorGUILayout.BeginHorizontal();
-			GUILayout.Label("Play Media On App Unpause");
-			_propPlayMediaOnAppUnpause.boolValue = EditorGUILayout.Toggle(_propPlayMediaOnAppUnpause.boolValue);
-			EditorGUILayout.EndHorizontal();
-
-			EditorGUILayout.EndVertical();
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Events.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 191b4e7b3d732b44381d348e9e0dc7ea
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 78
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Global.cs

@@ -1,78 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private void OnInspectorGUI_GlobalSettings()
-		{
-			EditorGUI.BeginDisabledGroup(Application.isPlaying);
-			EditorGUILayout.LabelField("Target Platform", EditorUserBuildSettings.selectedBuildTargetGroup.ToString());
-			if (EditorUserBuildSettings.selectedBuildTargetGroup != BuildTargetGroup.Standalone)
-			{
-				EditorHelper.IMGUI.NoticeBox(MessageType.Warning, "These global options only affect the current target platform so will not apply in-editor unless you change your Build Target and reapply them.");
-			}
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Video Capture", EditorStyles.boldLabel);
-
-			// TimeScale
-			{
-				const string TimeScaleDefine = "AVPROVIDEO_BETA_SUPPORT_TIMESCALE";
-				if (EditorHelper.IMGUI.ToggleScriptDefine("TimeScale Support", TimeScaleDefine))
-				{
-					EditorHelper.IMGUI.NoticeBox(MessageType.Warning, "This will affect performance if you change Time.timeScale or Time.captureFramerate.  This feature is useful for supporting video capture system that adjust time scale during capturing.");
-				}
-			}
-			EditorGUILayout.EndVertical();
-			
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("Other", EditorStyles.boldLabel);
-
-			// Disable Logging
-			{
-				const string DisableLogging = "AVPROVIDEO_DISABLE_LOGGING";
-				EditorHelper.IMGUI.ToggleScriptDefine("Disable Logging", DisableLogging);
-			}
-
-			// Show Ultra Options
-			{
-				const string ShowUltraOptions = "AVPROVIDEO_SHOW_ULTRA_OPTIONS";
-				EditorHelper.IMGUI.ToggleScriptDefine("Show Ultra Options", ShowUltraOptions);
-			}
-
-			_allowDeveloperMode = EditorGUILayout.Toggle(new GUIContent("Developer Mode", "Enables some additional information useful for debugging"), _allowDeveloperMode);
-
-			if (_allowDeveloperMode)
-			{
-				EditorGUI.indentLevel++;
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-				GUILayout.Label("BETA / Experimental", EditorStyles.boldLabel);
-
-				// Disable Debug GUI
-				{
-					const string SupportBufferedDisplayDefine = "AVPROVIDEO_SUPPORT_BUFFERED_DISPLAY";
-					if (!EditorHelper.IMGUI.ToggleScriptDefine("Support Buffered Display", SupportBufferedDisplayDefine))
-					{
-						EditorHelper.IMGUI.NoticeBox(MessageType.Info, "The Debug GUI can be disabled globally for builds to help reduce garbage generation each frame.");
-					}
-				}
-
-				EditorGUILayout.EndVertical();
-				EditorGUI.indentLevel--;
-			}
-
-			EditorGUILayout.EndVertical();
-
-			EditorGUI.EndDisabledGroup();
-		}
-	}
-}

+ 0 - 12
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Global.cs.meta

@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 43f33634e709c224aa295751513f8f63
-timeCreated: 1448902492
-licenseType: Free
-MonoImporter:
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 130
Packages/com.ghz.avideoplayer/Editor/Scripts/Components/MediaPlayerEditor_Network.cs

@@ -1,130 +0,0 @@
-using UnityEngine;
-using UnityEditor;
-
-//-----------------------------------------------------------------------------
-// Copyright 2015-2021 RenderHeads Ltd.  All rights reserved.
-//-----------------------------------------------------------------------------
-
-namespace RenderHeads.Media.AVProVideo.Editor
-{
-	/// <summary>
-	/// Editor for the MediaPlayer component
-	/// </summary>
-	public partial class MediaPlayerEditor : UnityEditor.Editor
-	{
-		private void OnInspectorGUI_Network()
-		{
-			if (_showUltraOptions)
-			{
-				SerializedProperty httpHeadersProp = serializedObject.FindProperty("_httpHeaders.httpHeaders");
-				OnInspectorGUI_HttpHeaders(httpHeadersProp);
-
-				SerializedProperty keyAuthProp = serializedObject.FindProperty("_keyAuth");
-				OnInspectorGUI_HlsDecryption(keyAuthProp);
-			}
-		}
-
-		private void OnInspectorGUI_HlsDecryption(SerializedProperty keyAuthProp)
-		{
-			if (keyAuthProp == null) return;
-
-			EditorGUILayout.BeginVertical(GUI.skin.box);
-			GUILayout.Label("HLS Decryption", EditorStyles.boldLabel);
-
-			// Key server auth token
-			SerializedProperty prop = keyAuthProp.FindPropertyRelative("keyServerToken");
-			if (prop != null)
-			{
-				EditorGUILayout.PropertyField(prop, new GUIContent("Auth Token", "Token to pass to the key server in the 'Authorization' HTTP header field"));
-			}
-
-			//GUILayout.Label("Overrides");
-			//EditorGUI.indentLevel++;
-
-			// Key server override
-			/*prop = serializedObject.FindProperty(optionsVarName + ".keyServerURLOverride");
-			if (prop != null)
-			{
-				EditorGUILayout.PropertyField(prop, new GUIContent("Key Server URL", "Overrides the key server URL if present in a HLS manifest."));
-			}*/
-			
-			// Key data blob override
-			prop = keyAuthProp.FindPropertyRelative("overrideDecryptionKeyBase64");
-			if (prop != null)
-			{
-				EditorGUILayout.PropertyField(prop, new GUIContent("Key Override (Base64)", "Override key to use for decoding encrypted HLS streams (in Base64 format)."));
-			}
-
-			//EditorGUI.indentLevel--;
-
-			EditorGUILayout.EndVertical();
-		}
-
-		private void OnInspectorGUI_HttpHeaders(SerializedProperty httpHeadersProp)
-		{
-			if (httpHeadersProp ==  null) return;
-			
-			//GUILayout.Space(8f);
-			bool isExpanded = _HTTPHeadersToggle;
-			if (isExpanded)
-			{
-				EditorGUILayout.BeginVertical(GUI.skin.box);
-			}
-			bool hasHeaders = (httpHeadersProp.arraySize > 0);
-			Color tintColor = hasHeaders?Color.yellow:Color.white;
-			if (AnimCollapseSection.BeginShow("Custom HTTP Headers", ref _HTTPHeadersToggle, tintColor))
-			{
-				{
-					if (httpHeadersProp.arraySize > 0)
-					{
-						int deleteIndex = -1;
-						for (int i = 0; i < httpHeadersProp.arraySize; ++i)
-						{
-							SerializedProperty httpHeaderProp = httpHeadersProp.GetArrayElementAtIndex(i);
-							SerializedProperty headerProp = httpHeaderProp.FindPropertyRelative("name");
-
-							GUILayout.BeginVertical(GUI.skin.box);
-							GUILayout.BeginHorizontal();
-
-							GUI.color = HttpHeader.IsValid(headerProp.stringValue)?Color.white:Color.red;
-							EditorGUILayout.PropertyField(headerProp, GUIContent.none);
-							headerProp.stringValue = headerProp.stringValue.Trim();
-							GUI.color = Color.white;
-
-							if (GUILayout.Button("-", GUILayout.ExpandWidth(false)))
-							{
-								deleteIndex = i;
-							}
-							GUILayout.EndHorizontal();
-
-							SerializedProperty valueProp = httpHeaderProp.FindPropertyRelative("value");
-							GUI.color = HttpHeader.IsValid(valueProp.stringValue)?Color.white:Color.red;
-							valueProp.stringValue = EditorGUILayout.TextArea(valueProp.stringValue, EditorHelper.IMGUI.GetWordWrappedTextAreaStyle());
-							GUI.color = Color.white;
-							valueProp.stringValue = valueProp.stringValue.Trim();
-							GUILayout.EndVertical();
-							GUILayout.Space(4f);
-						}
-
-						if (deleteIndex >= 0)
-						{
-							httpHeadersProp.DeleteArrayElementAtIndex(deleteIndex);
-						}
-					}
-					if (GUILayout.Button("+"))
-					{
-						httpHeadersProp.InsertArrayElementAtIndex(httpHeadersProp.arraySize);
-					}
-				}
-			}
-			AnimCollapseSection.EndShow();
-
-			if (isExpanded)
-			{
-				EditorGUILayout.EndVertical();
-			}
-			
-			//GUILayout.Space(8f);
-		}
-	}
-}

Some files were not shown because too many files changed in this diff