DGJ 10 months ago
parent
commit
879566c30b
100 changed files with 12307 additions and 0 deletions
  1. 1 0
      Assets/FrameWork/ProjectManager/DaoHang/Prefabs/Canvas.prefab
  2. 521 0
      Assets/FrameWork/ProjectManager/RTC/RoomMain/RoomFiles.prefab
  3. 7 0
      Assets/FrameWork/ProjectManager/RTC/RoomMain/RoomFiles.prefab.meta
  4. 50 0
      Assets/FrameWork/Resources/emqxsl-ca.bytes
  5. 7 0
      Assets/FrameWork/Resources/emqxsl-ca.bytes.meta
  6. 8 0
      Assets/FrameWork/Texture/RTC.meta
  7. BIN
      Assets/FrameWork/Texture/RTC/Window and Window Controls.png
  8. 147 0
      Assets/FrameWork/Texture/RTC/Window and Window Controls.png.meta
  9. BIN
      Assets/FrameWork/Texture/RTC/位图@1x.png
  10. 147 0
      Assets/FrameWork/Texture/RTC/位图@1x.png.meta
  11. BIN
      Assets/FrameWork/Texture/RTC/容器 161@3x (1).png
  12. 147 0
      Assets/FrameWork/Texture/RTC/容器 161@3x (1).png.meta
  13. BIN
      Assets/FrameWork/Texture/RTC/容器 161@3x 1.png
  14. 147 0
      Assets/FrameWork/Texture/RTC/容器 161@3x 1.png.meta
  15. BIN
      Assets/FrameWork/Texture/RTC/容器 161@3x.png
  16. 147 0
      Assets/FrameWork/Texture/RTC/容器 161@3x.png.meta
  17. BIN
      Assets/FrameWork/Texture/RTC/容器 162.png
  18. 147 0
      Assets/FrameWork/Texture/RTC/容器 162.png.meta
  19. BIN
      Assets/FrameWork/Texture/RTC/弹窗 4@3x.png
  20. 147 0
      Assets/FrameWork/Texture/RTC/弹窗 4@3x.png.meta
  21. BIN
      Assets/FrameWork/Texture/RTC/按钮 1@1x.png
  22. 147 0
      Assets/FrameWork/Texture/RTC/按钮 1@1x.png.meta
  23. BIN
      Assets/FrameWork/Texture/RTC/按钮 1@3x.png
  24. 147 0
      Assets/FrameWork/Texture/RTC/按钮 1@3x.png.meta
  25. BIN
      Assets/FrameWork/Texture/RTC/按钮 2@3x.png
  26. 147 0
      Assets/FrameWork/Texture/RTC/按钮 2@3x.png.meta
  27. BIN
      Assets/FrameWork/Texture/RTC/矩形@3x.png
  28. 147 0
      Assets/FrameWork/Texture/RTC/矩形@3x.png.meta
  29. BIN
      Assets/FrameWork/Texture/RTC/立即呼叫-按钮 1@3x.png
  30. 147 0
      Assets/FrameWork/Texture/RTC/立即呼叫-按钮 1@3x.png.meta
  31. BIN
      Assets/FrameWork/Texture/RTC/角标@1x.png
  32. 147 0
      Assets/FrameWork/Texture/RTC/角标@1x.png.meta
  33. BIN
      Assets/FrameWork/Texture/RTC/远程协助背景.png
  34. 147 0
      Assets/FrameWork/Texture/RTC/远程协助背景.png.meta
  35. 205 0
      Assets/FrameWork/Tools.prefab
  36. 4 0
      Assets/FrameWork/Windows.asset
  37. 265 0
      Assets/Game/Blue/Controller/LangChaoRommMinIo.cs
  38. 11 0
      Assets/Game/Blue/Controller/LangChaoRommMinIo.cs.meta
  39. 597 0
      Assets/Game/Blue/Prefabs/RTCRoomManager.prefab
  40. 7 0
      Assets/Game/Blue/Prefabs/RTCRoomManager.prefab.meta
  41. 38 0
      Assets/Game/GameStart.cs
  42. 11 0
      Assets/Game/GameStart.cs.meta
  43. 74 0
      Assets/Game/RemoteSingleton.cs
  44. 11 0
      Assets/Game/RemoteSingleton.cs.meta
  45. 26 0
      Assets/Game/SceneWindow.cs
  46. 11 0
      Assets/Game/SceneWindow.cs.meta
  47. 289 0
      Assets/Game/ScenesManager.cs
  48. 11 0
      Assets/Game/ScenesManager.cs.meta
  49. 8 0
      Assets/Game/XRToolkit.meta
  50. 8 0
      Assets/Game/XRToolkit/ArtShow.meta
  51. 8 0
      Assets/Game/XRToolkit/ArtShow/Resources.meta
  52. 8 0
      Assets/Game/XRToolkit/ArtShow/Resources/ArtConf.meta
  53. 18 0
      Assets/Game/XRToolkit/ArtShow/Resources/ArtConf/ArtResConf_Model.asset
  54. 8 0
      Assets/Game/XRToolkit/ArtShow/Resources/ArtConf/ArtResConf_Model.asset.meta
  55. 8 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container.meta
  56. 8 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/Component.meta
  57. 91 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/Component/PictureComponent.prefab
  58. 7 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/Component/PictureComponent.prefab.meta
  59. 1161 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/ModelContainer.prefab
  60. 7 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/ModelContainer.prefab.meta
  61. 3222 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/WorldDlgContainer.prefab
  62. 7 0
      Assets/Game/XRToolkit/ArtShow/Resources/Container/WorldDlgContainer.prefab.meta
  63. 8 0
      Assets/Game/XRToolkit/ArtShow/Scripts.meta
  64. 8 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art.meta
  65. 347 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs
  66. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs.meta
  67. 171 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs
  68. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs.meta
  69. 1145 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs
  70. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs.meta
  71. 48 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs
  72. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs.meta
  73. 266 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs
  74. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs.meta
  75. 38 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs
  76. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs.meta
  77. 38 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs
  78. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs.meta
  79. 8 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor.meta
  80. 43 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs
  81. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs.meta
  82. 21 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs
  83. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs.meta
  84. 13 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs
  85. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs.meta
  86. 8 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component.meta
  87. 38 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/ArtComponent.cs
  88. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/ArtComponent.cs.meta
  89. 74 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/GoodsComponen.cs
  90. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/GoodsComponen.cs.meta
  91. 107 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/PictureComponent.cs
  92. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/PictureComponent.cs.meta
  93. 24 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/UIComponent.cs
  94. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Component/UIComponent.cs.meta
  95. 8 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container.meta
  96. 152 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainer.cs
  97. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainer.cs.meta
  98. 610 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainerHandler.cs
  99. 11 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainerHandler.cs.meta
  100. 175 0
      Assets/Game/XRToolkit/ArtShow/Scripts/Container/GoodsContainer.cs

+ 1 - 0
Assets/FrameWork/ProjectManager/DaoHang/Prefabs/Canvas.prefab

@@ -154,6 +154,7 @@ MonoBehaviour:
   facilityManagementOrganization: {fileID: 890066090097367680}
   equipmentMaintenanceOrganization: {fileID: 6793878444882303314}
   businessSystem: {fileID: 9002550375129031850}
+  deviceDetails: {fileID: 0}
   item: {fileID: 0}
 --- !u!1001 &2978020611383799736
 PrefabInstance:

+ 521 - 0
Assets/FrameWork/ProjectManager/RTC/RoomMain/RoomFiles.prefab

@@ -0,0 +1,521 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4659853141473052887
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4659853141473052883}
+  - component: {fileID: 4659853141473052882}
+  - component: {fileID: 4659853141473052881}
+  - component: {fileID: 4659853141473052880}
+  - component: {fileID: 4659853141473052892}
+  - component: {fileID: 4659853141473052876}
+  - component: {fileID: 4659853141473052877}
+  - component: {fileID: 4659853141473052878}
+  - component: {fileID: 4659853141473052879}
+  m_Layer: 5
+  m_Name: RoomFiles
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4659853141473052883
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.19999999}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 5560310824142185833}
+  - {fileID: 3310083619086957835}
+  - {fileID: 5560310824004441479}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: -1.4909999}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &4659853141473052882
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 2
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 25
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &4659853141473052881
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 1
+--- !u!114 &4659853141473052880
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &4659853141473052892
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 948b9ab040508dc48a294230f85b39e2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &4659853141473052876
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 95bd5e73b2b930240adab20b3c9619d2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &4659853141473052877
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f83f04cbdb0c0ca4c931c9d1dae1981b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  audiosource: {fileID: 0}
+--- !u!114 &4659853141473052878
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4cdf719615e1e8948a4fce3a10b2a5bf, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  expertView: {fileID: 0}
+  rawImage: {fileID: 0}
+  mRTCRoomInfo:
+    roomId: 
+    token: 
+    host: 
+  question: 0
+  rtcState: 0
+  controlId: 
+  isRTCreate: 0
+  audio1: {fileID: 0}
+  audio2: {fileID: 0}
+  isInvite: 0
+  isApply: 0
+--- !u!114 &4659853141473052879
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4659853141473052887}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 68e60f538d291d04ab731e759348d75d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  cam: {fileID: 0}
+  rawImage: {fileID: 5560310824004441472}
+--- !u!1 &5560310824004441478
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5560310824004441479}
+  - component: {fileID: 5560310824004441473}
+  - component: {fileID: 5560310824004441472}
+  m_Layer: 5
+  m_Name: RawImage
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &5560310824004441479
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824004441478}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4659853141473052883}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5560310824004441473
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824004441478}
+  m_CullTransparentMesh: 1
+--- !u!114 &5560310824004441472
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824004441478}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Texture: {fileID: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+--- !u!1 &5560310824142185832
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5560310824142185833}
+  - component: {fileID: 5560310824142185835}
+  - component: {fileID: 5560310824142185828}
+  m_Layer: 0
+  m_Name: GameSart
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5560310824142185833
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824142185832}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 5560310824844182620}
+  - {fileID: 5560310825399398734}
+  m_Father: {fileID: 4659853141473052883}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5560310824142185835
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824142185832}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c66f4a6973afc3f439c079ed8df4d320, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &5560310824142185828
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824142185832}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 27556797b0ea60a4a9713f7cffad2ea1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+--- !u!1 &5560310824844182627
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5560310824844182620}
+  - component: {fileID: 5560310824844182621}
+  m_Layer: 0
+  m_Name: ShowOffice
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5560310824844182620
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824844182627}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 5560310824142185833}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5560310824844182621
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310824844182627}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 92d9de848bc714d40ba0a829bf0fc23a, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 5189302353021310843, guid: f834b5f94633e5947bd0cc72a757df93, type: 3}
+  - {fileID: 4507694177786838805, guid: ca1c2bf767c840f4098e180e21665ff8, type: 3}
+  - {fileID: 2744153305912311890, guid: 5250aa3e06e48c74ba8b0009149ba3f8, type: 3}
+  - {fileID: 2539131660605934548, guid: 28f8d8851a7b5f74c8b484a99a4f6168, type: 3}
+  - {fileID: 6233831381892610832, guid: fb253eb4691025f45a785ac819e69cd7, type: 3}
+  window: []
+--- !u!1 &5560310825399398733
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5560310825399398734}
+  - component: {fileID: 5560310825399398735}
+  m_Layer: 0
+  m_Name: ShowRoom
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5560310825399398734
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310825399398733}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 5560310825519149684}
+  m_Father: {fileID: 5560310824142185833}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5560310825399398735
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310825399398733}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f1fd6650b4edd3f4faa7ab6b05413464, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 2241088652506551446, guid: 3ac948fe5851d8c488bb8d296946c5d0, type: 3}
+  - {fileID: 1469341746259159848, guid: 183c4e3ad58e62649b14a75eb2f5bd4b, type: 3}
+  - {fileID: 4740575582196431468, guid: 0cea6fb206f65894595cf366b0d770d4, type: 3}
+  - {fileID: 5968991834605629360, guid: e3e984cd1dd165242ac3986ab38c9688, type: 3}
+  - {fileID: 2799213986232774072, guid: aada762ac48142a4898ba48b91a0d7e6, type: 3}
+  window: []
+  showMainScreenBtn: {fileID: 0}
+--- !u!1 &5560310825519149691
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5560310825519149684}
+  - component: {fileID: 5560310825519149685}
+  m_Layer: 0
+  m_Name: PopPublic
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5560310825519149684
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310825519149691}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.6666667, y: 0.6666667, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 5560310825399398734}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5560310825519149685
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5560310825519149691}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 848568c0494dbb543a1bc4fd6ff9457d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 4482520272683810389, guid: 789660a2b32e2f84e9e0939efa573d41, type: 3}
+  - {fileID: 6552768087607729808, guid: 43f87b9d5fd81364092f9dd319dbfdac, type: 3}
+  - {fileID: 1993260005584970223, guid: b98e0a444b4a0cc4da1c96d2df1f3161, type: 3}
+  window: []
+--- !u!1 &7976391223929753035
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3310083619086957835}
+  - component: {fileID: 379139690463013570}
+  m_Layer: 0
+  m_Name: ArrowList
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3310083619086957835
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7976391223929753035}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4659853141473052883}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &379139690463013570
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7976391223929753035}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: aa22e78e66313e1499cb1b7373a77e8c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  arrow: {fileID: 5499693674242144792, guid: 29675f3807dc81a4c8fb996856725fdf, type: 3}
+  num: 0

+ 7 - 0
Assets/FrameWork/ProjectManager/RTC/RoomMain/RoomFiles.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e5cce33d498e45b4f8e58e4b354d9ce7
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 50 - 0
Assets/FrameWork/Resources/emqxsl-ca.bytes

@@ -0,0 +1,50 @@
+-----BEGIN CERTIFICATE-----
+MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
+9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
+CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
+nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
+43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
+T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
+gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
+BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
+TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
+DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
+hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
+06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
+PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
+YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
+CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
+-----END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIEqjCCA5KgAwIBAgIQAnmsRYvBskWr+YBTzSybsTANBgkqhkiG9w0BAQsFADBh
+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
+QTAeFw0xNzExMjcxMjQ2MTBaFw0yNzExMjcxMjQ2MTBaMG4xCzAJBgNVBAYTAlVT
+MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
+b20xLTArBgNVBAMTJEVuY3J5cHRpb24gRXZlcnl3aGVyZSBEViBUTFMgQ0EgLSBH
+MTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPeP6wkab41dyQh6mKc
+oHqt3jRIxW5MDvf9QyiOR7VfFwK656es0UFiIb74N9pRntzF1UgYzDGu3ppZVMdo
+lbxhm6dWS9OK/lFehKNT0OYI9aqk6F+U7cA6jxSC+iDBPXwdF4rs3KRyp3aQn6pj
+pp1yr7IB6Y4zv72Ee/PlZ/6rK6InC6WpK0nPVOYR7n9iDuPe1E4IxUMBH/T33+3h
+yuH3dvfgiWUOUkjdpMbyxX+XNle5uEIiyBsi4IvbcTCh8ruifCIi5mDXkZrnMT8n
+wfYCV6v6kDdXkbgGRLKsR4pucbJtbKqIkUGxuZI2t7pfewKRc5nWecvDBZf3+p1M
+pA8CAwEAAaOCAU8wggFLMB0GA1UdDgQWBBRVdE+yck/1YLpQ0dfmUVyaAYca1zAf
+BgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3RVTAOBgNVHQ8BAf8EBAMCAYYw
+HQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8C
+AQAwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdp
+Y2VydC5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQu
+Y29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNybDBMBgNVHSAERTBDMDcGCWCGSAGG
+/WwBAjAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT
+MAgGBmeBDAECATANBgkqhkiG9w0BAQsFAAOCAQEAK3Gp6/aGq7aBZsxf/oQ+TD/B
+SwW3AU4ETK+GQf2kFzYZkby5SFrHdPomunx2HBzViUchGoofGgg7gHW0W3MlQAXW
+M0r5LUvStcr82QDWYNPaUy4taCQmyaJ+VB+6wxHstSigOlSNF2a6vg4rgexixeiV
+4YSB03Yqp2t3TeZHM9ESfkus74nQyW7pRGezj+TC44xCagCQQOzzNmzEAP2SnCrJ
+sNE2DpRVMnL8J6xBRdjmOsC3N6cQuKuRXbzByVBjCqAA8t1L0I+9wXJerLPyErjy
+rMKWaBFLmfK/AHNF4ZihwPGOc7w6UHczBZXH5RFzJNnww+WnKuTPI0HfnVH8lg==
+-----END CERTIFICATE-----
+

+ 7 - 0
Assets/FrameWork/Resources/emqxsl-ca.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: db8f9e55e6eb7a3469ced7aab77994e7
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/FrameWork/Texture/RTC.meta

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

BIN
Assets/FrameWork/Texture/RTC/Window and Window Controls.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/Window and Window Controls.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 5197872b8fb4f95479a2b138a1660cbf
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/位图@1x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/位图@1x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 24c95c0f649f8624582a668e03d9a0e9
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/容器 161@3x (1).png


+ 147 - 0
Assets/FrameWork/Texture/RTC/容器 161@3x (1).png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: b7ad375f27fbccd4b99961553e10ed9a
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/容器 161@3x 1.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/容器 161@3x 1.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 67a03d3a80c56e945ab5f9c4b07bc68f
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  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: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/容器 161@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/容器 161@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: c5fc655ca226b26469ff3b2ea5c37dcb
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/容器 162.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/容器 162.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: ab3d99c117c269e46b1c657bcb0edaee
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/弹窗 4@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/弹窗 4@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: ea03d8ef33032a04ea3eacaceccdc36f
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/按钮 1@1x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/按钮 1@1x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: b15a25e21caf4b04b9b9be168476a308
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/按钮 1@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/按钮 1@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 0a60695fae1a7a348974834fad737ca4
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/按钮 2@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/按钮 2@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 18eaa2d891df8014d90ba801e26e1697
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/矩形@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/矩形@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: f521b368e251b2f44a8c3a18db31580b
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/立即呼叫-按钮 1@3x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/立即呼叫-按钮 1@3x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: eea6aa06199675c46a1b04d2e50bb940
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/角标@1x.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/角标@1x.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 048e5e01b43a94b408981d2a2282c3bd
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/FrameWork/Texture/RTC/远程协助背景.png


+ 147 - 0
Assets/FrameWork/Texture/RTC/远程协助背景.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 44164a7aa08ef2945a60f24687107f48
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 12
+  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
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  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: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 205 - 0
Assets/FrameWork/Tools.prefab

@@ -1,5 +1,50 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &582507698264500650
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5157313152506751948}
+  - component: {fileID: 6031472090191352744}
+  m_Layer: 0
+  m_Name: RTC
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5157313152506751948
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 582507698264500650}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2458303337424050038}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6031472090191352744
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 582507698264500650}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 98b4f653d68ec764d8803764c8611229, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
 --- !u!1 &2458303336215074155
 GameObject:
   m_ObjectHideFlags: 0
@@ -74,6 +119,166 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 2458303336215074154}
+  - {fileID: 4947982028477639725}
+  - {fileID: 725805270650116070}
+  - {fileID: 5157313152506751948}
+  - {fileID: 6726721232715533838}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4252305146100560495
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 725805270650116070}
+  - component: {fileID: 7409207242416290546}
+  - component: {fileID: 810822139471094115}
+  m_Layer: 0
+  m_Name: MQTT
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &725805270650116070
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4252305146100560495}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2458303337424050038}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &7409207242416290546
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4252305146100560495}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 546752eb840669f4d806e9b4deedec69, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  front: client/
+  id: 
+  username: u@unity3
+  password: 
+  rid: mqttx_b4c02ddc
+  clientId: 
+  account: 
+  roomId: 
+  email: 
+  phone: 
+  roleId: 
+  resourcePoolId: 
+  expertType: 
+  _username: 
+  room: 
+  topiceNavigation: 
+  topiceSync: 
+  topiceClose: 
+  isCreateRoom: 0
+--- !u!114 &810822139471094115
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4252305146100560495}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 41269b9887a20dc4694d587e0da326d3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  rid: mqttx_b4c02ddc
+  mqttState: 0
+--- !u!1 &4832775453948707779
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4947982028477639725}
+  - component: {fileID: 8054097401101266565}
+  m_Layer: 0
+  m_Name: HttpToolLangChao
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4947982028477639725
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4832775453948707779}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2458303337424050038}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8054097401101266565
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4832775453948707779}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f621e80f3544c024c82529d6f0d2a416, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+--- !u!1 &4842289193066889937
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6726721232715533838}
+  m_Layer: 0
+  m_Name: Minio
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6726721232715533838
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4842289193066889937}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2458303337424050038}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 4 - 0
Assets/FrameWork/Windows.asset

@@ -63,6 +63,10 @@ MonoBehaviour:
         type: 203001
         parentType: 200003
         _childs: []
+      - window: {fileID: 8478226002013285462, guid: 87b3df7a44edbf64a9372f8e62fa9cad, type: 3}
+        type: 203001
+        parentType: 200003
+        _childs: []
     - window: {fileID: 6535805363672510788, guid: d835331f26741454c8cfaba07623b03f, type: 3}
       type: 200004
       parentType: 100002

+ 265 - 0
Assets/Game/Blue/Controller/LangChaoRommMinIo.cs

@@ -0,0 +1,265 @@
+using LitJson;
+using Minio;
+using Minio.DataModel.Args;
+using Minio.Exceptions;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Threading;
+using System.Threading.Tasks;
+using UnityEngine;
+using UnityEngine.Networking;
+using XRTool.Util;
+
+public class LangChaoRommMinIo : MonoSingleton<LangChaoRommMinIo>
+{
+    IMinioClient minio;
+    string path;
+    string bucket;
+    string host;
+
+    string tmpSecretId;
+    string tmpSecretKey;
+    string minioToken;
+
+    string projectId;
+    string region;
+    Thread thread;
+    private void Start()
+    {
+        thread = new Thread(DoSomeWork);
+        thread.Start();
+    }
+
+    bool isminioUpdate;
+    bool isUpdate;
+    void DoSomeWork()
+    {
+        while (true)
+        {
+            if (minio == null)
+            {
+            }
+            else
+            {
+                if (Nowfd != null && !isUpdate)
+                {
+                    isUpdate = true;
+                    Run().Wait();
+                }
+            }
+            Thread.Sleep(1000);
+        }
+    }
+    public static byte[] StreamToBytes(Stream stream)
+    {
+        byte[] bytes = new byte[stream.Length];
+        stream.Read(bytes, 0, bytes.Length);
+        stream.Seek(0, SeekOrigin.Begin);
+        return bytes;
+    }
+    Queue<RoomFileDataBack> backQueue = new Queue<RoomFileDataBack>();
+    // File uploader task.
+    private async Task Run()
+    {
+        /*
+        StatObjectArgs statObjectArgs = new StatObjectArgs()
+                                          .WithBucket(Nowfd.bucket)
+                                          .WithObject(Nowfd.objectName);
+        await minio.StatObjectAsync(statObjectArgs);
+        PresignedGetObjectArgs args = new PresignedGetObjectArgs()
+                                        .WithBucket(Nowfd.bucket)
+                                        .WithObject(Nowfd.objectName)
+                                        .WithExpiry(60 * 60 * 24);
+        string url = await minio.PresignedGetObjectAsync(args);
+        RoomFileData rfd = new RoomFileData();
+        rfd.url = url;
+        RoomFileDataBack rfdb = new RoomFileDataBack();
+        rfdb.rfd = rfd;
+        rfdb.Nowfd = Nowfd;
+        backQueue.Enqueue(rfdb);*/
+        StatObjectArgs statObjectArgs = new StatObjectArgs()                                              
+                                              .WithBucket(Nowfd.bucket)
+                                              .WithObject(Nowfd.objectName);
+
+
+        //.WithBucket("cmcc")
+        //.WithObject("remote/845995/eb00bda9-c63b-4b93-a801-e45548e7a8c2.pdf");
+
+        await minio.StatObjectAsync(statObjectArgs);
+
+            // Get input stream to have content of 'my-objectname' from 'my-bucketname'
+            GetObjectArgs getObjectArgs = new GetObjectArgs()
+                                              .WithBucket(Nowfd.bucket)
+                                              .WithObject(Nowfd.objectName)
+                                              .WithCallbackStream(async (stream) =>
+                                              {
+                                                  PresignedGetObjectArgs args = new PresignedGetObjectArgs()
+                                                                                    .WithBucket(Nowfd.bucket)
+                                                                                    .WithObject(Nowfd.objectName)
+                                                                                    .WithExpiry(60 * 60 * 24);
+                                                                                    
+                                                                                    
+                                                  string url = await minio.PresignedGetObjectAsync(args);
+                                                  RoomFileData rfd = new RoomFileData();
+                                                  rfd.url = url;
+                                                  rfd.bytes = StreamToBytes(stream);
+                                                
+                                                 
+                                                  RoomFileDataBack rfdb = new RoomFileDataBack();
+                                                  rfdb.rfd = rfd;
+                                                  rfdb.Nowfd = Nowfd;
+                                                  backQueue.Enqueue(rfdb);
+                                                  
+                                                  rfd.url = Application.persistentDataPath + "/" + Path.GetFileName(url);
+                                                
+
+                                              });
+    
+        await minio.GetObjectAsync(getObjectArgs);
+    }
+    void initMinIo(Action<bool> callBack)
+    {
+        JsonData data = new JsonData();
+        data["roomId"] = projectId;
+        GameStart.Instance.StartCoroutine(HttpTool.Instance.SendHttp(HttpActionLang.storage_roomCredential, data.ToJson(), async (string str) =>
+        {
+            try
+            {
+
+                JsonData d = JsonMapper.ToObject(str);
+                minioToken = d["data"]["credentials"]["token"].ToString();
+                tmpSecretId = d["data"]["credentials"]["tmpSecretId"].ToString();
+                tmpSecretKey = d["data"]["credentials"]["tmpSecretKey"].ToString();
+                host = d["data"]["host"].ToString();
+                bucket = d["data"]["bucket"].ToString();
+                path = d["data"]["path"].ToString();
+              
+                Debug.Log(str);
+                bool isHttps = host.Contains("https");
+                var endpoint = host.Split("//")[1];
+                var accessKey = tmpSecretId;//"tr6Nh5D8bnlGaLJE6vb5";
+                var secretKey = tmpSecretKey;// "aVOYdXLnX4MCiKbit8aomZNWvAx8YSpzhiwzFhrI";
+                Debug.Log("endpoint===>" + endpoint + "    isHttps==>" + isHttps);
+
+                if(d["data"]["region"]!=null&& !string.IsNullOrEmpty(d["data"]["region"].ToString())&& d["data"]["region"].ToString()!="null")
+                {
+                    region = d["data"]["region"].ToString();
+                    minio = new MinioClient()
+                                    .WithEndpoint(endpoint)
+                                    .WithCredentials(accessKey, secretKey)
+                                    .WithSessionToken(minioToken)
+                                    .WithSSL(isHttps)
+                                    .WithRegion(region)
+                                    .Build();
+
+                    
+
+                }
+                else
+                {
+                    minio = new MinioClient()
+                                    .WithEndpoint(endpoint)
+                                    .WithCredentials(accessKey, secretKey)
+                                    .WithSessionToken(minioToken)
+                                    .WithSSL(isHttps)
+                                    .Build();
+
+                }
+                
+
+                
+
+                TimerMgr.Instance.CreateTimer(() =>
+                {
+
+                    minio = null;
+                }, 3000);
+                callBack?.Invoke(true);
+            }
+            catch
+            {
+                callBack?.Invoke(false);
+
+            }
+
+        }));
+    }
+
+    Queue<GetFileData> fdQueue = new Queue<GetFileData>();
+    public void getFile(string roomId, string bucket, string objectName, Action<RoomFileData> callBack)//, string path
+    {
+        if (this.projectId!= roomId)
+        {
+            this.projectId = roomId;
+          //  minio = null;
+        }
+        //Unity 当执行大量null 引用操作的时候 下面的方法比  gameobject!=null  快了大概两倍
+        if (!System.Object.ReferenceEquals(gameObject, null))
+        {
+
+        }
+
+        GetFileData getFileData = new GetFileData();
+        getFileData.bucket = bucket;
+        getFileData.objectName = objectName;
+        getFileData.callBack = callBack;
+        fdQueue.Enqueue(getFileData);
+    }
+
+    public class RoomFileData
+    {
+        public byte[] bytes;
+        public string url;
+    }
+    public class RoomFileDataBack
+    {
+        public RoomFileData rfd;
+        public GetFileData Nowfd;
+    }
+
+    GetFileData Nowfd;
+    private void Update()
+    {
+        if (fdQueue.Count > 0 && Nowfd == null)
+        {
+            Nowfd = fdQueue.Dequeue();
+        }
+        if (minio == null)
+        {
+            if (projectId !=null && !isminioUpdate)
+            {
+                isminioUpdate = true;
+                initMinIo((bool b) =>
+                {
+                    isminioUpdate = false;
+                });
+
+            }
+        }
+        if (backQueue.Count > 0 )
+        {
+            RoomFileDataBack rfdb = backQueue.Dequeue();
+            try
+            {
+                rfdb.Nowfd.callBack?.Invoke(rfdb.rfd);
+
+            }
+            catch
+            {
+
+            }
+            isUpdate = false;
+            Nowfd = null;
+        }
+        
+    }
+
+    public class GetFileData
+    {
+        public string bucket;
+        public string objectName;
+        public Action<RoomFileData> callBack;
+    }
+}

+ 11 - 0
Assets/Game/Blue/Controller/LangChaoRommMinIo.cs.meta

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

+ 597 - 0
Assets/Game/Blue/Prefabs/RTCRoomManager.prefab

@@ -0,0 +1,597 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1252300906465447588
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1252300906465447584}
+  - component: {fileID: 1252300906465447585}
+  - component: {fileID: 1252300906465447586}
+  - component: {fileID: 1252300906465447587}
+  - component: {fileID: 1252300906465447599}
+  - component: {fileID: 1252300906465447615}
+  - component: {fileID: 1252300906465447614}
+  - component: {fileID: 1252300906465447613}
+  - component: {fileID: 1252300906465447612}
+  m_Layer: 5
+  m_Name: RTCRoomManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1252300906465447584
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.19999999}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2080732882316927770}
+  - {fileID: 8945777476387011448}
+  - {fileID: 2080732882446570484}
+  - {fileID: 2080732881786242063}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: -1.4909999}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &1252300906465447585
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 2
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 25
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &1252300906465447586
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 1
+--- !u!114 &1252300906465447587
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &1252300906465447599
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 948b9ab040508dc48a294230f85b39e2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &1252300906465447615
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 95bd5e73b2b930240adab20b3c9619d2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &1252300906465447614
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f83f04cbdb0c0ca4c931c9d1dae1981b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  audiosource: {fileID: 0}
+--- !u!114 &1252300906465447613
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4cdf719615e1e8948a4fce3a10b2a5bf, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  expertView: {fileID: 0}
+  rawImage: {fileID: 0}
+  mRTCRoomInfo:
+    roomId: 
+    token: 
+    host: 
+  question: 0
+  rtcState: 0
+  controlId: 
+  isRTCreate: 0
+  audio1: {fileID: 0}
+  audio2: {fileID: 0}
+  isInvite: 0
+  isApply: 0
+--- !u!114 &1252300906465447612
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1252300906465447588}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 68e60f538d291d04ab731e759348d75d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+  cam: {fileID: 0}
+  rawImage: {fileID: 2080732882446570483}
+--- !u!1 &2080732881606427152
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732881606427183}
+  - component: {fileID: 2080732881606427182}
+  m_Layer: 0
+  m_Name: ShowOffice
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2080732881606427183
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732881606427152}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2080732882316927770}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2080732881606427182
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732881606427152}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 92d9de848bc714d40ba0a829bf0fc23a, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 5189302353021310843, guid: f834b5f94633e5947bd0cc72a757df93, type: 3}
+  - {fileID: 4507694177786838805, guid: ca1c2bf767c840f4098e180e21665ff8, type: 3}
+  - {fileID: 2744153305912311890, guid: 5250aa3e06e48c74ba8b0009149ba3f8, type: 3}
+  - {fileID: 2539131660605934548, guid: 28f8d8851a7b5f74c8b484a99a4f6168, type: 3}
+  - {fileID: 6233831381892610832, guid: fb253eb4691025f45a785ac819e69cd7, type: 3}
+  window: []
+--- !u!1 &2080732881786272753
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732881786242063}
+  - component: {fileID: 2080732881786272752}
+  - component: {fileID: 2080732881786242062}
+  m_Layer: 0
+  m_Name: Log
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2080732881786242063
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732881786272753}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 1.9853742, y: 1.2190526, z: 1.8616204}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1252300906465447584}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2080732881786272752
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732881786272753}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ccfb359ce40a63e459fd70f7152ab8bd, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &2080732881786242062
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732881786272753}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: da9784d47d249a24aa52b50c9461c991, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &2080732882014008328
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732882014008327}
+  - component: {fileID: 2080732882014008326}
+  m_Layer: 0
+  m_Name: PopPublic
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2080732882014008327
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882014008328}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.6666667, y: 0.6666667, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2080732882259162941}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2080732882014008326
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882014008328}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 848568c0494dbb543a1bc4fd6ff9457d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 4482520272683810389, guid: 789660a2b32e2f84e9e0939efa573d41, type: 3}
+  - {fileID: 6552768087607729808, guid: 43f87b9d5fd81364092f9dd319dbfdac, type: 3}
+  - {fileID: 1993260005584970223, guid: b98e0a444b4a0cc4da1c96d2df1f3161, type: 3}
+  window: []
+--- !u!1 &2080732882259162942
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732882259162941}
+  - component: {fileID: 2080732882259162940}
+  - component: {fileID: 2080732882259162939}
+  m_Layer: 0
+  m_Name: ShowRoom
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2080732882259162941
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882259162942}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.5, y: 1.5, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2080732882014008327}
+  m_Father: {fileID: 2080732882316927770}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2080732882259162940
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882259162942}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f1fd6650b4edd3f4faa7ab6b05413464, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Prefab:
+  - {fileID: 2241088652506551446, guid: 3ac948fe5851d8c488bb8d296946c5d0, type: 3}
+  - {fileID: 1469341746259159848, guid: 183c4e3ad58e62649b14a75eb2f5bd4b, type: 3}
+  - {fileID: 4740575582196431468, guid: 0cea6fb206f65894595cf366b0d770d4, type: 3}
+  - {fileID: 5968991834605629360, guid: e3e984cd1dd165242ac3986ab38c9688, type: 3}
+  - {fileID: 2799213986232774072, guid: aada762ac48142a4898ba48b91a0d7e6, type: 3}
+  window: []
+  showMainScreenBtn: {fileID: 0}
+--- !u!114 &2080732882259162939
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882259162942}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 65f83d6e499a787479f63b1414eaaad8, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  type: 50001
+  dis: 0
+  angle: 0
+  pos: {x: 0, y: 0, z: 0}
+  state: 1
+--- !u!1 &2080732882316927771
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732882316927770}
+  - component: {fileID: 2080732882316927768}
+  - component: {fileID: 2080732882316927767}
+  m_Layer: 0
+  m_Name: GameSart
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2080732882316927770
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882316927771}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2080732881606427183}
+  - {fileID: 2080732882259162941}
+  m_Father: {fileID: 1252300906465447584}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2080732882316927768
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882316927771}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c66f4a6973afc3f439c079ed8df4d320, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &2080732882316927767
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882316927771}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 27556797b0ea60a4a9713f7cffad2ea1, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  global: 1
+--- !u!1 &2080732882446570485
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2080732882446570484}
+  - component: {fileID: 2080732882446570482}
+  - component: {fileID: 2080732882446570483}
+  m_Layer: 5
+  m_Name: RawImage
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &2080732882446570484
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882446570485}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1252300906465447584}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2080732882446570482
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882446570485}
+  m_CullTransparentMesh: 1
+--- !u!114 &2080732882446570483
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2080732882446570485}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Texture: {fileID: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+--- !u!1 &4574490892585978808
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8945777476387011448}
+  - component: {fileID: 6091390343582067889}
+  m_Layer: 0
+  m_Name: ArrowList
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8945777476387011448
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4574490892585978808}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1252300906465447584}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6091390343582067889
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4574490892585978808}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: aa22e78e66313e1499cb1b7373a77e8c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  arrow: {fileID: 5499693674242144792, guid: 29675f3807dc81a4c8fb996856725fdf, type: 3}
+  num: 0

+ 7 - 0
Assets/Game/Blue/Prefabs/RTCRoomManager.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 310d5b3c4785ec74ca3dfe5eadcc6910
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 38 - 0
Assets/Game/GameStart.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using LitJson;
+using SC.XR.Unity;
+using UnityEngine;
+using XRTool.Util;
+
+public class GameStart : UnitySingleton<GameStart>
+{
+    public static Action actionok;
+  //  public SystemFollow systemMenu;
+    protected override void Awake()
+    {
+        base.Awake();
+        /*
+        GameObject systemMenuObj = Resources.Load("systemMenu") as GameObject;
+        systemMenuObj = Instantiate(systemMenuObj);
+        systemMenu = systemMenuObj.transform.GetComponent<SystemFollow>();
+        systemMenu.InitUI();*/
+    }
+
+    // Start is called before the first frame update
+    void Start()
+    {
+        ScenesManager.Instance.showWindow(ScenesManager.SceneType.GameStartLogo);
+    }
+
+
+    public void ShowDating()
+    {
+    }
+
+    protected override void OnDestroy()
+    {
+        base.OnDestroy();
+    }
+}

+ 11 - 0
Assets/Game/GameStart.cs.meta

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

+ 74 - 0
Assets/Game/RemoteSingleton.cs

@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using UnityEngine;
+using static ScenesManager;
+
+namespace SC.XR.Unity
+{
+    public abstract class RemoteSingleton<T> : MonoBehaviour where T : MonoBehaviour
+    {
+        public GameObject[] Prefab;
+        [HideInInspector]
+        public List<GameObject> window=new List<GameObject>();
+        private static T instance;
+
+        private static object lockObj = new object();
+
+        public static T Instance
+        {
+            get
+            {
+                return instance;
+            }
+        }
+        public virtual void Awake()
+        {
+            instance = (T)FindObjectOfType(typeof(T));
+            ScenesManager.Instance.initWindow(this.gameObject);
+        }
+        public virtual void initShow()
+        {
+            if(Prefab!=null&& window.Count<=0)
+            {
+                for (int i = 0; i < Prefab.Length; i++)
+                {
+                    window.Add(GameObject.Instantiate(Prefab[i], this.transform));
+                    window[window.Count - 1].name = Prefab[i].name;
+                }
+            }
+            SceneType stp = (SceneType)System.Enum.Parse(typeof(SceneType), this.gameObject.name.Split('(')[0]);
+            int codeint = stp.GetHashCode() / 10000;
+            if(codeint!=50)
+            {
+                for (int i = 0; i < window.Count; i++)
+                {
+                    window[i].SetActive(false);
+                }
+                if (window.Count > 0)
+                    window[0].SetActive(true);
+
+            }
+        }
+        public void gotoWindow(SceneType sc)
+        {
+            SceneType stp = (SceneType)System.Enum.Parse(typeof(SceneType), this.name.Split('(')[0]);
+            int idx = sc - stp- 1000;
+            Debug.Log("gotoWindow  = "+idx);
+            for (int i = 0; i < window.Count; i++)
+            {
+                if(i== idx)
+                {
+
+                    window[i].SetActive(true);
+                }else
+                {
+
+                    window[i].SetActive(false);
+                }
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Game/RemoteSingleton.cs.meta

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

+ 26 - 0
Assets/Game/SceneWindow.cs

@@ -0,0 +1,26 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using static ScenesManager;
+
+public class SceneInfo : MonoBehaviour
+{
+
+    public SceneType _sceneType;
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+
+    // Update is called once per frame
+    void Update()
+    {
+        
+    }
+
+    public void setType(SceneType stype)
+    {
+        _sceneType = stype;
+    }
+}

+ 11 - 0
Assets/Game/SceneWindow.cs.meta

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

+ 289 - 0
Assets/Game/ScenesManager.cs

@@ -0,0 +1,289 @@
+using SC.XR.Unity;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ScenesManager
+{
+    public enum mType
+    {
+        LogoInt = 1,
+        LoginInt = 2,
+        ShowChoose = 3,
+        ShowXunJian = 4,
+        ShowRTC = 5,
+        ShowDevice = 6,
+        Navigationing = 8,
+        ShowMail = 10,
+        officeInt = 30,
+        RoomInt = 40,
+        publicInt = 50,
+    }
+
+    public void showOffice(SceneType stype)
+    {
+        if(dlglist.ContainsKey(mType.officeInt.GetHashCode()))
+        for (int i = 0; i < dlglist[mType.officeInt.GetHashCode()].Count; i++)
+        {
+            if (stype == dlglist[mType.officeInt.GetHashCode()][i]._sceneType)
+            {
+                dlglist[mType.officeInt.GetHashCode()][i].gameObject.SetActive(true);
+                MonoBehaviour alist = dlglist[mType.officeInt.GetHashCode()][i].GetComponent<MonoBehaviour>();
+                Type t = Type.GetType(alist.name);
+                System.Reflection.MethodInfo md = t.GetMethod("initShow");
+                if (md != null)
+                {
+                    md.Invoke(alist, null);
+                }
+            }
+            else
+            {
+                dlglist[mType.officeInt.GetHashCode()][i].gameObject.SetActive(false);
+            }
+        }
+    }
+
+    public enum SceneType
+    {
+        GameStartLogo = 10001,
+
+        ShowLogin = 20001,
+
+        ShowChoose = 30001,
+
+
+        ShowXunJian = 40001,
+        ShowXJ = 41001,
+        ShowDH = 41002,
+
+        ShowRTC = 50001,
+        ShowRTCRoomMain = 51002,
+        ShowRTCHistory = 51003,
+
+        ShowZhidao = 70001,
+
+        ShowDevice = 60001, // 设备基础信息
+        ShowBasicDevice = 61001, // 设备基础详情
+        DeviceDetails = 61002, // 设备详情
+        Navigationing = 80001, // 导航中
+
+        ShowMail = 90001,
+
+        ShowOffice = 300001,
+        CreateRoom = 300101,
+        JoinRoom = 300102,
+        UserSystem = 300103,
+        RemoteSystem = 300104,
+        OfficeWindow = 300105,
+
+        ShowRoom = 400001,
+        RoomMain = 400101,
+        RoomOtherUser = 400102,
+        RoomInfo = 400103,
+        RoomFile = 400104,
+
+
+        PopPublic = 500001,
+        PopPeerView = 500101,
+        PopUpInfo = 500101,
+        PopCall = 500102,
+
+    }
+
+    private  SceneType onlineSceneType;
+
+    private static ScenesManager instance;
+
+  
+
+    public static ScenesManager Instance
+    {
+        get
+        {
+            if (instance == null)
+            {
+                instance = new ScenesManager();
+            }
+            return instance;
+        }
+    }
+    public List<SceneInfo> windows = new List<SceneInfo>();
+    public Dictionary<int, List<SceneInfo>> dlglist = new Dictionary<int, List<SceneInfo>>();
+
+    public void initWindow(GameObject window)
+    {
+        SceneInfo sceneInfo = window.AddComponent<SceneInfo>();
+        SceneType stp = (SceneType)System.Enum.Parse(typeof(SceneType), window.name.Split('(')[0]);
+        sceneInfo.setType(stp);
+        int codeint = stp.GetHashCode() / 10000;
+        if (stp.GetHashCode() - (codeint * 10000) == 1)
+        {
+            windows.Add(sceneInfo);
+            //  window.SetActive(false);
+        }
+        else
+        {
+            if (dlglist.ContainsKey(codeint))
+            {
+                List<SceneInfo> dlg = dlglist[codeint];
+                dlg.Add(sceneInfo);
+                dlglist[codeint] = dlg;
+
+            }
+            else
+            {
+                List<SceneInfo> dlg = new List<SceneInfo>();
+                dlg.Add(sceneInfo);
+                dlglist.Add(codeint, dlg);
+            }
+        }
+    }
+
+    public void initRoom()
+    {
+        Debug.Log("HJJLANGCHAORTC   " + mType.RoomInt.GetHashCode());
+        for (int i = 0; i < dlglist[mType.RoomInt.GetHashCode()].Count; i++)
+        {
+            MonoBehaviour alist = dlglist[mType.RoomInt.GetHashCode()][i].GetComponent<MonoBehaviour>();
+            Debug.Log("HJJLANGCHAORTC   " + alist.name);
+            Type t = Type.GetType(alist.name);
+            System.Reflection.MethodInfo md = t.GetMethod("initShow");
+            if (md != null)
+            {
+                md.Invoke(alist, null);
+            }
+        }
+
+    }
+    public void showWindow(SceneType sceneType)
+    {
+        switch (sceneType)
+        {
+            case SceneType.GameStartLogo:
+                break;
+            case SceneType.ShowLogin:
+                break;
+            case SceneType.ShowChoose:
+                XRRGBCamera.Instance.playCamera(1280, 720);
+                break;
+            case SceneType.ShowXunJian:
+                XRRGBCamera.Instance.playCamera(1280, 720);
+                break;
+            case SceneType.ShowXJ:
+                break;
+            case SceneType.ShowDH:
+                XRRGBCamera.Instance.playCamera(1280, 720);
+                break;
+            case SceneType.ShowRTC:
+                XRRGBCamera.Instance.playCamera(1280, 720);
+                break;
+            case SceneType.ShowRTCRoomMain:
+                break;
+            case SceneType.ShowRTCHistory:
+                break;
+            case SceneType.ShowDevice:
+                break;
+            case SceneType.ShowBasicDevice:
+                break;
+            case SceneType.DeviceDetails:
+                break;
+            case SceneType.Navigationing:
+                break;
+            case SceneType.ShowOffice:
+                break;
+            case SceneType.CreateRoom:
+                break;
+            case SceneType.JoinRoom:
+                break;
+            case SceneType.UserSystem:
+                break;
+            case SceneType.RemoteSystem:
+                break;
+            case SceneType.OfficeWindow:
+                break;
+            case SceneType.ShowRoom:
+                break;
+            case SceneType.RoomMain:
+                break;
+            case SceneType.RoomOtherUser:
+                break;
+            case SceneType.RoomInfo:
+                break;
+            case SceneType.RoomFile:
+                break;
+            case SceneType.PopPublic:
+                break;
+            case SceneType.PopPeerView:
+                break;
+            case SceneType.PopCall:
+                break;
+            case SceneType.ShowMail:
+                XRRGBCamera.Instance.playCamera(1280, 720);
+                break;
+            default:
+                break;
+        }
+
+        for (int i = 0; i < windows.Count; i++)
+        {
+            int codeint = windows[i]._sceneType.GetHashCode() / 10000;
+            if (windows[i]._sceneType == sceneType || codeint == mType.publicInt.GetHashCode())
+            {
+                windows[i].gameObject.SetActive(true);
+                MonoBehaviour alist = windows[i].GetComponent<MonoBehaviour>();
+                Debug.Log("alist.name===>"+ alist.name);
+                Type t = Type.GetType(alist.name);
+                System.Reflection.MethodInfo md = t.GetMethod("initShow");
+                if (md != null)
+                {
+                    md.Invoke(alist, null);
+                }
+                onlineSceneType = sceneType;
+            }
+            else
+            {
+                windows[i].gameObject.SetActive(false);
+            }
+        }
+    }
+
+    public SceneType getWindow()
+    {
+        return onlineSceneType;
+    }
+
+    public void initPopUp()
+    {
+        //   for (int i = 0; i < dlglist[mType.publicInt.GetHashCode()].Count; i++)
+        //  {
+        // dlglist[mType.publicInt.GetHashCode()][i].gameObject.SetActive(false);
+        //  }
+
+    }
+
+    private PopPublic _popPublic;
+    public PopPublic popPublic
+    {
+        get
+        {
+            if (!_popPublic)
+            {
+                for (int i = 0; i < dlglist[mType.publicInt.GetHashCode()].Count; i++)
+                {
+                    PopPublic ppc = dlglist[mType.publicInt.GetHashCode()][i].GetComponent<PopPublic>();
+                    if (ppc)
+                        _popPublic = ppc;
+                }
+            }
+
+            return _popPublic;
+        }
+    }
+
+
+    public void showPop()
+    {
+        popPublic.gameObject.SetActive(true);
+    }
+}

+ 11 - 0
Assets/Game/ScenesManager.cs.meta

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

+ 8 - 0
Assets/Game/XRToolkit.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Resources.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Resources/ArtConf.meta

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

+ 18 - 0
Assets/Game/XRToolkit/ArtShow/Resources/ArtConf/ArtResConf_Model.asset

@@ -0,0 +1,18 @@
+%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: a95a34bd7dd1d654384e1c5931916e40, type: 3}
+  m_Name: ArtResConf_Model
+  m_EditorClassIdentifier: 
+  resModelList:
+  - {fileID: -927199367670048503, guid: f57501cada9792d49877262b287c0d38, type: 3}
+  artType: 1
+  instaceType: 5

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Resources/ArtConf/ArtResConf_Model.asset.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/Component.meta

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

+ 91 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/Component/PictureComponent.prefab

@@ -0,0 +1,91 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7348851123652139509
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7715293319658782032}
+  - component: {fileID: 8690359900730592601}
+  - component: {fileID: 6404018229167614103}
+  - component: {fileID: 8950796067774410682}
+  m_Layer: 5
+  m_Name: PictureComponent
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7715293319658782032
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7348851123652139509}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8690359900730592601
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7348851123652139509}
+  m_CullTransparentMesh: 0
+--- !u!114 &6404018229167614103
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7348851123652139509}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0fe802bfa265a72478db14a6806beb78, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+  icon: {fileID: 0}
+--- !u!114 &8950796067774410682
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7348851123652139509}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8a3b9971130c1f940bd2f028e11fe3ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 7 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/Component/PictureComponent.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e48736fad7e78ee47bdce15a99e0101f
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1161 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/ModelContainer.prefab

@@ -0,0 +1,1161 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1162688380292953945
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8966945890872210017}
+  - component: {fileID: 7216562458663927216}
+  - component: {fileID: 4895520205962565269}
+  m_Layer: 3
+  m_Name: ProcessLabel
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8966945890872210017
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1162688380292953945}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: -0.2, z: -0.0266}
+  m_LocalScale: {x: 0.03, y: 0.03, z: 0.03}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 8813769521014321180}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &7216562458663927216
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1162688380292953945}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!102 &4895520205962565269
+TextMesh:
+  serializedVersion: 3
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1162688380292953945}
+  m_Text: 
+  m_OffsetZ: 0
+  m_CharacterSize: 1
+  m_LineSpacing: 1
+  m_Anchor: 4
+  m_Alignment: 0
+  m_TabSize: 4
+  m_FontSize: 30
+  m_FontStyle: 0
+  m_RichText: 1
+  m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+  m_Color:
+    serializedVersion: 2
+    rgba: 4294967295
+--- !u!1 &2026433689991986288
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8813769521014321180}
+  m_Layer: 3
+  m_Name: DownInfo
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8813769521014321180
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2026433689991986288}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 4994529286529523537}
+  - {fileID: 8966945890872210017}
+  m_Father: {fileID: 7921608366927118930}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2299076893635782350
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3280291957776214261}
+  - component: {fileID: 5091274959986939861}
+  - component: {fileID: 8167846651000151647}
+  - component: {fileID: 8960292228596389999}
+  - component: {fileID: 5259984490870202336}
+  m_Layer: 3
+  m_Name: DeleteBtn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3280291957776214261
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2299076893635782350}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.028400041}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 7185903658820440537}
+  m_Father: {fileID: 3955217127918357540}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0.034, y: -0.119}
+  m_SizeDelta: {x: 0.05, y: 0.05}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5091274959986939861
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2299076893635782350}
+  m_CullTransparentMesh: 0
+--- !u!114 &8167846651000151647
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2299076893635782350}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.10980393, g: 0.10980393, b: 0.10980393, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!65 &8960292228596389999
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2299076893635782350}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 0.06, y: 0.06, z: 0.07}
+  m_Center: {x: 0, y: 0, z: -0.01}
+--- !u!114 &5259984490870202336
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2299076893635782350}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b3ba789618d29764280b4afcd4513b22, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  scaleType: 0
+  duration: 0.3
+  scaleRatio: 0.2
+  PositionAnimation: 0
+  forwardRatio: 0.05
+  onClick:
+    m_PersistentCalls:
+      m_Calls: []
+  onEnter:
+    m_PersistentCalls:
+      m_Calls: []
+  onDown:
+    m_PersistentCalls:
+      m_Calls: []
+  onUp:
+    m_PersistentCalls:
+      m_Calls: []
+  onExit:
+    m_PersistentCalls:
+      m_Calls: []
+  initScale: {x: 0, y: 0, z: 0}
+  initPosition: {x: 0, y: 0, z: 0}
+--- !u!1 &3461705295923618914
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8367030212661217725}
+  - component: {fileID: 134817974857888470}
+  - component: {fileID: 5040715890315308679}
+  m_Layer: 3
+  m_Name: ChooseKuang
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8367030212661217725
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3461705295923618914}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3955217127918357540}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0.2, y: 0.2}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &134817974857888470
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3461705295923618914}
+  m_CullTransparentMesh: 0
+--- !u!114 &5040715890315308679
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3461705295923618914}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: d6e3829de74df9442ad78437fcdd60b2, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &3602640589707517169
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6253251744958362425}
+  - component: {fileID: 9067558092234585941}
+  - component: {fileID: 7861061573497631544}
+  - component: {fileID: 8053279119561691771}
+  - component: {fileID: 6435132643489834462}
+  m_Layer: 3
+  m_Name: HideBtn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6253251744958362425
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3602640589707517169}
+  m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: -0.0284}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 5901473997965203294}
+  m_Father: {fileID: 3955217127918357540}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -0.045999996, y: -0.119}
+  m_SizeDelta: {x: 0.05, y: 0.05}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &9067558092234585941
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3602640589707517169}
+  m_CullTransparentMesh: 0
+--- !u!114 &7861061573497631544
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3602640589707517169}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!65 &8053279119561691771
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3602640589707517169}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 0.06, y: 0.06, z: 0.07}
+  m_Center: {x: 0, y: 0, z: -0.01}
+--- !u!114 &6435132643489834462
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3602640589707517169}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b3ba789618d29764280b4afcd4513b22, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  scaleType: 0
+  duration: 0.3
+  scaleRatio: 0.2
+  PositionAnimation: 0
+  forwardRatio: 0.05
+  onClick:
+    m_PersistentCalls:
+      m_Calls: []
+  onEnter:
+    m_PersistentCalls:
+      m_Calls: []
+  onDown:
+    m_PersistentCalls:
+      m_Calls: []
+  onUp:
+    m_PersistentCalls:
+      m_Calls: []
+  onExit:
+    m_PersistentCalls:
+      m_Calls: []
+  initScale: {x: 0, y: 0, z: 0}
+  initPosition: {x: 0, y: 0, z: 0}
+--- !u!1 &6611000693616827970
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4994529286529523537}
+  - component: {fileID: 3135331731969057509}
+  m_Layer: 3
+  m_Name: app_icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4994529286529523537
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6611000693616827970}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.04, y: 0.04, z: 0.04}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 8813769521014321180}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &3135331731969057509
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6611000693616827970}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 21300000, guid: 137323842ecb30a4186049f0f10d8964, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 5.12, y: 5.12}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!1 &6741740997663229583
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2514328941397787759}
+  - component: {fileID: 7970067416411668148}
+  - component: {fileID: 19409617397089322}
+  m_Layer: 3
+  m_Name: NameText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &2514328941397787759
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6741740997663229583}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0.1}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3955217127918357540}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -0.0084, y: -0.24801}
+  m_SizeDelta: {x: 0.1, y: 0.02399}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7970067416411668148
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6741740997663229583}
+  m_CullTransparentMesh: 0
+--- !u!114 &19409617397089322
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6741740997663229583}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
+--- !u!1 &6931927349216589014
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7185903658820440537}
+  - component: {fileID: 7484894179125415856}
+  - component: {fileID: 4653297030583531500}
+  m_Layer: 3
+  m_Name: DeleteImage
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7185903658820440537
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6931927349216589014}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 3280291957776214261}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0.03, y: 0.03}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7484894179125415856
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6931927349216589014}
+  m_CullTransparentMesh: 0
+--- !u!114 &4653297030583531500
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6931927349216589014}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: e3b9bce004c69cd42ac3592aaf78e3d8, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7921608366927118931
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7921608366927118930}
+  - component: {fileID: 7921608366927118935}
+  - component: {fileID: 7921608366927118932}
+  - component: {fileID: 7921608366927118933}
+  - component: {fileID: 7921608366927118934}
+  - component: {fileID: 7921608366927118921}
+  - component: {fileID: 463633449772349043}
+  - component: {fileID: 1783179119547974561}
+  m_Layer: 3
+  m_Name: ModelContainer
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7921608366927118930
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 1}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 7921608367376971771}
+  - {fileID: 6901466653404652261}
+  - {fileID: 8813769521014321180}
+  - {fileID: 3955217127918357540}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &7921608366927118935
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 23cc907c2e632384dac15c806eea121c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  activation: 0
+  flattenAxis: 0
+  activeHandle: 6
+  m_HandlerAssets: {fileID: 0}
+  activeScaleMinRestrict: 1
+  scaleMinimum: 0.2
+  activeScaleMaxRestrict: 0
+  scaleMaximum: 2
+  BoundBoxCollider: {fileID: 0}
+  showRotationHandleForX: 1
+  showRotationHandleForY: 1
+  showRotationHandleForZ: 1
+  activeAxis: -2
+  RotateStartAudio: 4
+  RotateStopAudio: 3
+  ScaleStartAudio: 4
+  ScaleStopAudio: 3
+  RotateStarted:
+    m_PersistentCalls:
+      m_Calls: []
+  RotateStopped:
+    m_PersistentCalls:
+      m_Calls: []
+  ScaleStarted:
+    m_PersistentCalls:
+      m_Calls: []
+  ScaleStopped:
+    m_PersistentCalls:
+      m_Calls: []
+  Rotating:
+    m_PersistentCalls:
+      m_Calls: []
+  Scaling:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &7921608366927118932
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5320dc7c6a20f3448875d16b459c7149, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  PointerEnter:
+    m_PersistentCalls:
+      m_Calls: []
+  PointerDown:
+    m_PersistentCalls:
+      m_Calls: []
+  PointerClick:
+    m_PersistentCalls:
+      m_Calls: []
+  PointerUp:
+    m_PersistentCalls:
+      m_Calls: []
+  PointerExit:
+    m_PersistentCalls:
+      m_Calls: []
+  PointerDrag:
+    m_PersistentCalls:
+      m_Calls: []
+  Target: {fileID: 0}
+  StartAudio: 6
+  EndAudio: 5
+  headRotate: 1
+  oneGameControllerRotate: 1
+  canOneHandRotate: 1
+  canTwoHandRotate: 1
+  canTwoHandScale: 1
+  minScaleRatio: 0.8
+  maxScaleRatio: 3
+  isParentDrag: 0
+--- !u!114 &7921608366927118933
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8f8ba16b6be60154694163e1357f21ab, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  GrabbaleTransform: {fileID: 0}
+--- !u!114 &7921608366927118934
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e223e2faf7a309845b707cda5f0817ac, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isLookHead: 0
+  normalHandType: 6
+  editorHandType: 14
+  autoDisDrag: 6.18
+  isDragEnable: 0
+--- !u!114 &7921608366927118921
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 9f0896a6535c4db49b13ff9422d45f00, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  artType: 1
+  smoothTween: 3
+  ChooseKuang: {fileID: 3461705295923618914}
+  offset: {x: 0.02, y: 0.02, z: 0.02}
+--- !u!114 &463633449772349043
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f185977e6cc6fc649b2b33953904d414, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  nameText: {fileID: 19409617397089322}
+  deleteBtn: {fileID: 5259984490870202336}
+  hideBtn: {fileID: 6435132643489834462}
+  ChooseKuang: {fileID: 3461705295923618914}
+--- !u!65 &1783179119547974561
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608366927118931}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &7921608367376971768
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7921608367376971771}
+  m_Layer: 3
+  m_Name: ModelRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7921608367376971771
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7921608367376971768}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7921608366927118930}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8136838343089844870
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5901473997965203294}
+  - component: {fileID: 6770198063472470974}
+  - component: {fileID: 2930991742844062298}
+  m_Layer: 3
+  m_Name: HideImage
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5901473997965203294
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8136838343089844870}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 6253251744958362425}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0.03, y: 0.03}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6770198063472470974
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8136838343089844870}
+  m_CullTransparentMesh: 0
+--- !u!114 &2930991742844062298
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8136838343089844870}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 8022a6ad5c7296446b27c19fc1b4dac4, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8945295222668491995
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3955217127918357540}
+  - component: {fileID: 8318460399776526520}
+  - component: {fileID: 4509915836268377876}
+  - component: {fileID: 69972489372268428}
+  m_Layer: 3
+  m_Name: Canvas
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3955217127918357540
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8945295222668491995}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2514328941397787759}
+  - {fileID: 8367030212661217725}
+  - {fileID: 6253251744958362425}
+  - {fileID: 3280291957776214261}
+  m_Father: {fileID: 7921608366927118930}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &8318460399776526520
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8945295222668491995}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 2
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &4509915836268377876
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8945295222668491995}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &69972489372268428
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8945295222668491995}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!1 &9076709572738006406
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6901466653404652261}
+  - component: {fileID: 2187686680123956044}
+  m_Layer: 3
+  m_Name: ColliderBody
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6901466653404652261
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9076709572738006406}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 7921608366927118930}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &2187686680123956044
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9076709572738006406}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 0.25, y: 0.25, z: 0.25}
+  m_Center: {x: 0, y: 0, z: 0}

+ 7 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/ModelContainer.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3facb915645449f47bbf411a7c5fff72
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3222 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/WorldDlgContainer.prefab

@@ -0,0 +1,3222 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2428927608654121611
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608654121612}
+  - component: {fileID: 2428927608654121613}
+  - component: {fileID: 4185990696850608176}
+  - component: {fileID: -840740882841024364}
+  - component: {fileID: 6058706112313037571}
+  - component: {fileID: 2428927608654121614}
+  - component: {fileID: 4147240638112552382}
+  m_Layer: 5
+  m_Name: WorldDlgContainer
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927608654121612
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0.5}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 8965803184693807463}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 300, y: 300}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2428927608654121613
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 23cc907c2e632384dac15c806eea121c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  activation: 0
+  flattenAxis: 3
+  activeHandle: 6
+  boxFocusDisplayMat: {fileID: 2100000, guid: 4a9aae3094118f44593e7f8000e24c31, type: 2}
+  boxGrabDisplayMat: {fileID: 2100000, guid: 7e4095c5609075846b657c8917aae797, type: 2}
+  HandleMaterial: {fileID: 2100000, guid: 986558eab447a9847bbe138149edc1b4, type: 2}
+  HandleGrabMaterial: {fileID: 2100000, guid: bf37b5eab60b288498d02fd524325d10, type: 2}
+  CornerPrefab: {fileID: 1361136173122186969, guid: ba9083550f965e545a628b53bfa80c9e,
+    type: 3}
+  CornerSlatePrefab: {fileID: 1134031327877807717, guid: c45e552a6d92491468c421c35c5dd63d,
+    type: 3}
+  scaleMinimum: 0.2
+  scaleMaximum: 2
+  scaleHandleSize: 0.016
+  BoundBoxCollider: {fileID: 0}
+  SidePrefab: {fileID: 3868891704370700786, guid: 969c9b04d1b1848489de0d6efe6250fc,
+    type: 3}
+  rotationHandleSize: 0.016
+  showRotationHandleForX: 1
+  showRotationHandleForY: 1
+  showRotationHandleForZ: 1
+  facePrefab: {fileID: 0}
+  axisScaleHandleSize: 0.016
+  activeAxis: -2
+  RotateStartAudio: 4
+  RotateStopAudio: 3
+  ScaleStartAudio: 4
+  ScaleStopAudio: 3
+  RotateStarted:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  RotateStopped:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  ScaleStarted:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  ScaleStopped:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  Rotating:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  Scaling:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!114 &4185990696850608176
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5320dc7c6a20f3448875d16b459c7149, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  PointerEnter:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  PointerDown:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  PointerClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  PointerUp:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  PointerExit:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  PointerDrag:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: PointerUnityEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral,
+      PublicKeyToken=null
+  Target: {fileID: 0}
+  StartAudio: 6
+  EndAudio: 5
+  canOneHandRotate: 1
+  canTwoHandRotate: 1
+  canTwoHandScale: 1
+  minScaleRatio: 0.8
+  maxScaleRatio: 3
+--- !u!114 &-840740882841024364
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 8f8ba16b6be60154694163e1357f21ab, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  GrabbaleTransform: {fileID: 0}
+--- !u!114 &6058706112313037571
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 53329a5a889d7284abdbbb239508bb82, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isLookHead: 0
+  normalHandType: 6
+  editorHandType: 12
+  autoDisDrag: 6.18
+  isDragEnable: 0
+--- !u!114 &2428927608654121614
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: cf9f192fbf1c4c648b978b70651595e3, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  dragOffset: {x: -360, y: -380}
+  containerState: 0
+  isAddBgCollider: 1
+  isShowTitle: 0
+  titleDis: 25
+  effectType: 0
+  isOnBoard: 0
+  isShowEffect: 0
+  isDisCollider: 1
+--- !u!114 &4147240638112552382
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608654121611}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1daa13d8c768eab4d8adf65841b8f9bd, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  artType: 64
+  smoothTween: 3
+--- !u!1 &2428927608671432456
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608671432457}
+  m_Layer: 5
+  m_Name: UIRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927608671432457
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608671432456}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.005}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609288151042}
+  - {fileID: 2428927610116620097}
+  - {fileID: 2428927609504324897}
+  m_Father: {fileID: 2428927609593982669}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 900, y: 80}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2428927608676629967
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608676629952}
+  - component: {fileID: 2428927608676629954}
+  - component: {fileID: 2428927608676629953}
+  m_Layer: 0
+  m_Name: jgg08
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927608676629952
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608676629967}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609159194362}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927608676629954
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608676629967}
+  m_Mesh: {fileID: -5736619128863821990, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927608676629953
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608676629967}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927608703424969
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608703424970}
+  - component: {fileID: 2428927608703424972}
+  - component: {fileID: 2428927608703424971}
+  m_Layer: 0
+  m_Name: jgg07
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927608703424970
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608703424969}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: -0.000010728836, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927610126035930}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927608703424972
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608703424969}
+  m_Mesh: {fileID: -8518086336147944972, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927608703424971
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608703424969}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927608780660435
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608780660436}
+  - component: {fileID: 2428927608780660438}
+  - component: {fileID: 2428927608780660437}
+  m_Layer: 0
+  m_Name: jgg03
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927608780660436
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608780660435}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: -0.000011950731, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609605614399}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927608780660438
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608780660435}
+  m_Mesh: {fileID: -8997365228856103617, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927608780660437
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608780660435}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927608787732090
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608787732091}
+  - component: {fileID: 2428927608787732092}
+  m_Layer: 0
+  m_Name: Bian
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &2428927608787732091
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608787732090}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 3.3}
+  m_LocalScale: {x: 900, y: 900, z: 455.17242}
+  m_Children:
+  - {fileID: 2428927609605614399}
+  - {fileID: 2428927609676553559}
+  - {fileID: 2428927610454765704}
+  - {fileID: 2428927610488764051}
+  - {fileID: 2428927609848130392}
+  - {fileID: 2428927609523711697}
+  - {fileID: 2428927609115852809}
+  - {fileID: 2428927609159194362}
+  m_Father: {fileID: 2428927610301547091}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2428927608787732092
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608787732090}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 09d96711ceb1ff44097c63459c6cdc79, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  horizontals:
+  - {fileID: 2428927609605614399}
+  - {fileID: 2428927609676553559}
+  verticals:
+  - {fileID: 2428927610454765704}
+  - {fileID: 2428927610488764051}
+  corners:
+  - {fileID: 2428927609848130392}
+  - {fileID: 2428927609523711697}
+  - {fileID: 2428927609115852809}
+  - {fileID: 2428927609159194362}
+  scaleType: 1
+--- !u!1 &2428927608869540436
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608869540437}
+  - component: {fileID: 2428927608869540439}
+  - component: {fileID: 2428927608869540438}
+  m_Layer: 0
+  m_Name: jgg06
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927608869540437
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608869540436}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0.000018328428, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927610598196244}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927608869540439
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608869540436}
+  m_Mesh: {fileID: 7195682724243826601, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927608869540438
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608869540436}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927608930960970
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927608930960971}
+  - component: {fileID: 2428927608930960972}
+  m_Layer: 0
+  m_Name: Bian
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927608930960971
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608930960970}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 4.2}
+  m_LocalScale: {x: 900, y: 80, z: 579.31036}
+  m_Children:
+  - {fileID: 2428927609025374702}
+  - {fileID: 2428927610126035930}
+  - {fileID: 2428927609468156402}
+  - {fileID: 2428927609932590428}
+  - {fileID: 2428927609648066514}
+  - {fileID: 2428927609326127337}
+  - {fileID: 2428927610598196244}
+  - {fileID: 2428927610726306538}
+  m_Father: {fileID: 2428927609593982669}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2428927608930960972
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927608930960970}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 09d96711ceb1ff44097c63459c6cdc79, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  horizontals:
+  - {fileID: 2428927609025374702}
+  - {fileID: 2428927610126035930}
+  verticals:
+  - {fileID: 2428927609468156402}
+  - {fileID: 2428927609932590428}
+  corners:
+  - {fileID: 2428927609648066514}
+  - {fileID: 2428927609326127337}
+  - {fileID: 2428927610598196244}
+  - {fileID: 2428927610726306538}
+  scaleType: 1
+--- !u!1 &2428927609025374701
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609025374702}
+  m_Layer: 0
+  m_Name: Up
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609025374702
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609025374701}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0.5, z: 0}
+  m_LocalScale: {x: 1.1301588, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609267818568}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609115852808
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609115852809}
+  m_Layer: 0
+  m_Name: DownLeft
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609115852809
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609115852808}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.5, y: -0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927610654414970}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609145191398
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609145191399}
+  - component: {fileID: 2428927609145191385}
+  - component: {fileID: 2428927609145191384}
+  m_Layer: 0
+  m_Name: jgg01
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609145191399
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609145191398}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609932590428}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609145191385
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609145191398}
+  m_Mesh: {fileID: 1708933289084616970, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609145191384
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609145191398}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609159194361
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609159194362}
+  m_Layer: 0
+  m_Name: DownRight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609159194362
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609159194361}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.5, y: -0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927608676629952}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609162035912
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609162035913}
+  - component: {fileID: 2428927609162035915}
+  - component: {fileID: 2428927609162035914}
+  m_Layer: 0
+  m_Name: jgg04
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609162035913
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609162035912}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: -0.000014066696, y: 0.00002002716, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.25}
+  m_Children: []
+  m_Father: {fileID: 2428927609848130392}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609162035915
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609162035912}
+  m_Mesh: {fileID: 398128240476730411, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609162035914
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609162035912}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609174054864
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609174054865}
+  m_Layer: 5
+  m_Name: UIRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927609174054865
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609174054864}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.002}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927610301547091}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 900, y: 900}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2428927609267818583
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609267818568}
+  - component: {fileID: 2428927609267818570}
+  - component: {fileID: 2428927609267818569}
+  m_Layer: 0
+  m_Name: jgg03
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609267818568
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609267818583}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: -0.000011950731, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609025374702}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609267818570
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609267818583}
+  m_Mesh: {fileID: -8997365228856103617, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609267818569
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609267818583}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609288151041
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609288151042}
+  - component: {fileID: 2428927609288151045}
+  - component: {fileID: 2428927609288151044}
+  - component: {fileID: 2428927609288151043}
+  m_Layer: 5
+  m_Name: CloseButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927609288151042
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609288151041}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927608671432457}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: -60, y: 0}
+  m_SizeDelta: {x: 60, y: 60}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927609288151045
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609288151041}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927609288151044
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609288151041}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: 8022a6ad5c7296446b27c19fc1b4dac4, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &2428927609288151043
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609288151041}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 2428927609288151044}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+--- !u!1 &2428927609326127336
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609326127337}
+  m_Layer: 0
+  m_Name: UpRight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609326127337
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609326127336}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.5, y: 0.5, z: 0}
+  m_LocalScale: {x: 0.08888889, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927610687176862}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609393333546
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609393333547}
+  - component: {fileID: 2428927609393333549}
+  - component: {fileID: 2428927609393333548}
+  m_Layer: 0
+  m_Name: jgg04
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609393333547
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609393333546}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: -0.000014066696, y: 0.00002002716, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.25}
+  m_Children: []
+  m_Father: {fileID: 2428927609648066514}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609393333549
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609393333546}
+  m_Mesh: {fileID: 398128240476730411, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609393333548
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609393333546}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609417610186
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609417610187}
+  - component: {fileID: 2428927609417610189}
+  - component: {fileID: 2428927609417610188}
+  m_Layer: 0
+  m_Name: Front
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609417610187
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609417610186}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.001}
+  m_LocalScale: {x: 900, y: 80, z: 900}
+  m_Children: []
+  m_Father: {fileID: 2428927609593982669}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609417610189
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609417610186}
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2428927609417610188
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609417610186}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 6baa51228cf42254998bdd59f9810792, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609421771379
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609421771380}
+  - component: {fileID: 2428927609421771382}
+  - component: {fileID: 2428927609421771381}
+  m_Layer: 0
+  m_Name: jgg07
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609421771380
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609421771379}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: -0.000010728836, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609676553559}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609421771382
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609421771379}
+  m_Mesh: {fileID: -8518086336147944972, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609421771381
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609421771379}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609468156401
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609468156402}
+  m_Layer: 0
+  m_Name: Left
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609468156402
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609468156401}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.5, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927610075741427}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609495634163
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609495634164}
+  - component: {fileID: 2428927609495634166}
+  - component: {fileID: 2428927609495634165}
+  m_Layer: 0
+  m_Name: Front
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &2428927609495634164
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609495634163}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.001}
+  m_LocalScale: {x: 900, y: 900, z: 900}
+  m_Children: []
+  m_Father: {fileID: 2428927610301547091}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609495634166
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609495634163}
+  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2428927609495634165
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609495634163}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609504324896
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609504324897}
+  - component: {fileID: 2428927609504324900}
+  - component: {fileID: 2428927609504324899}
+  - component: {fileID: 2428927609504324898}
+  m_Layer: 5
+  m_Name: TransferButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927609504324897
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609504324896}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927608671432457}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: -300, y: 0}
+  m_SizeDelta: {x: 60, y: 60}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927609504324900
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609504324896}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927609504324899
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609504324896}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: 11be7467c2f7f2748990632b11c0572b, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &2428927609504324898
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609504324896}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c171e8a377e444746b63023228ada478, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 2428927609504324899}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  closeImg: {fileID: 21300000, guid: 11be7467c2f7f2748990632b11c0572b, type: 3}
+  openImg: {fileID: 21300000, guid: cbcdb6ea1a9909c4d9c9976153aea79a, type: 3}
+  isOn: 1
+--- !u!1 &2428927609523711696
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609523711697}
+  m_Layer: 0
+  m_Name: UpRight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609523711697
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609523711696}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.5, y: 0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609948286204}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609593982668
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609593982669}
+  - component: {fileID: 2428927609593982671}
+  - component: {fileID: 2428927609593982670}
+  m_Layer: 5
+  m_Name: XRTitle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &2428927609593982669
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609593982668}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927610296695155}
+  - {fileID: 2428927608930960971}
+  - {fileID: 2428927609417610187}
+  - {fileID: 2428927608671432457}
+  m_Father: {fileID: 2428927610458053679}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 515}
+  m_SizeDelta: {x: 900, y: 80}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927609593982671
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609593982668}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927609593982670
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609593982668}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0c45e99262cdd3a4dbf872d3b3d2d8e7, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+  thickness: 0.28
+  isNeedFront: 1
+  isNeedBg: 1
+  isAutoScale: 0
+--- !u!1 &2428927609595823267
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609595823268}
+  - component: {fileID: 2428927609595823270}
+  - component: {fileID: 2428927609595823269}
+  m_Layer: 0
+  m_Name: jgg01
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609595823268
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609595823267}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927610488764051}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609595823270
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609595823267}
+  m_Mesh: {fileID: 1708933289084616970, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609595823269
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609595823267}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609605614398
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609605614399}
+  m_Layer: 0
+  m_Name: Up
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609605614399
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609605614398}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927608780660436}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609648066513
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609648066514}
+  m_Layer: 0
+  m_Name: UpLeft
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609648066514
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609648066513}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.5, y: 0.5, z: 0}
+  m_LocalScale: {x: 0.08888889, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609393333547}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609676553558
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609676553559}
+  m_Layer: 0
+  m_Name: Down
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609676553559
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609676553558}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: -0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609421771380}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609727091410
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609727091411}
+  - component: {fileID: 2428927609727091413}
+  - component: {fileID: 2428927609727091412}
+  m_Layer: 0
+  m_Name: jgg05
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609727091411
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609727091410}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927610454765704}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609727091413
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609727091410}
+  m_Mesh: {fileID: -7937321758099369564, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609727091412
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609727091410}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609848130407
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609848130392}
+  m_Layer: 0
+  m_Name: UpLeft
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609848130392
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609848130407}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.5, y: 0.5, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609162035913}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609932590427
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609932590428}
+  m_Layer: 0
+  m_Name: Right
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609932590428
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609932590427}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.5, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609145191399}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927609948286203
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609948286204}
+  - component: {fileID: 2428927609948286206}
+  - component: {fileID: 2428927609948286205}
+  m_Layer: 0
+  m_Name: jgg02
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609948286204
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948286203}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609523711697}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609948286206
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948286203}
+  m_Mesh: {fileID: 724216316272328771, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609948286205
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948286203}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927609948824415
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927609948824400}
+  - component: {fileID: 2428927609948824402}
+  - component: {fileID: 2428927609948824401}
+  m_Layer: 0
+  m_Name: jgg08
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927609948824400
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948824415}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927610726306538}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927609948824402
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948824415}
+  m_Mesh: {fileID: -5736619128863821990, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927609948824401
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927609948824415}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927610075741426
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610075741427}
+  - component: {fileID: 2428927610075741429}
+  - component: {fileID: 2428927610075741428}
+  m_Layer: 0
+  m_Name: jgg05
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610075741427
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610075741426}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609468156402}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927610075741429
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610075741426}
+  m_Mesh: {fileID: -7937321758099369564, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927610075741428
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610075741426}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927610116620096
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610116620097}
+  - component: {fileID: 2428927610116620100}
+  - component: {fileID: 2428927610116620099}
+  - component: {fileID: 2428927610116620098}
+  m_Layer: 5
+  m_Name: LockButton
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610116620097
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610116620096}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927608671432457}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: -180, y: 0}
+  m_SizeDelta: {x: 60, y: 60}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927610116620100
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610116620096}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927610116620099
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610116620096}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 21300000, guid: a2c5b7a368619a84fae23206001acb87, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &2428927610116620098
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610116620096}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: c171e8a377e444746b63023228ada478, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 2428927610116620099}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
+      Culture=neutral, PublicKeyToken=null
+  closeImg: {fileID: 21300000, guid: a2c5b7a368619a84fae23206001acb87, type: 3}
+  openImg: {fileID: 21300000, guid: 9d62e66cc2798b4469a2e301821508d9, type: 3}
+  isOn: 0
+--- !u!1 &2428927610126035929
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610126035930}
+  m_Layer: 0
+  m_Name: Down
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610126035930
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610126035929}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: -0.5, z: 0}
+  m_LocalScale: {x: 1.1301588, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927608703424970}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927610296695154
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610296695155}
+  - component: {fileID: 2428927610296695157}
+  - component: {fileID: 2428927610296695156}
+  m_Layer: 5
+  m_Name: Back
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610296695155
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610296695154}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 8.4}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927609593982669}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 1314, y: 116.8}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927610296695157
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610296695154}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927610296695156
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610296695154}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: 824b06a984f9aee4dae562c79ad98744, type: 2}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2428927610301547090
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610301547091}
+  - component: {fileID: 2428927610301547093}
+  - component: {fileID: 2428927610301547092}
+  - component: {fileID: 1644126905885554160}
+  m_Layer: 5
+  m_Name: BG
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610301547091
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610301547090}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
+  m_Children:
+  - {fileID: 2428927610685716140}
+  - {fileID: 2428927608787732091}
+  - {fileID: 2428927609495634164}
+  - {fileID: 2428927609174054865}
+  m_Father: {fileID: 8965803184693807463}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 900, y: 900}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927610301547093
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610301547090}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927610301547092
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610301547090}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0c45e99262cdd3a4dbf872d3b3d2d8e7, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0}
+  m_RaycastTarget: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+  thickness: 0
+  isNeedFront: 0
+  isNeedBg: 0
+  isAutoScale: 1
+--- !u!65 &1644126905885554160
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610301547090}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 954, y: 934, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927610410906896
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610410906897}
+  m_Layer: 5
+  m_Name: UIRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610410906897
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610410906896}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -3.0100346}
+  m_LocalScale: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
+  m_Children: []
+  m_Father: {fileID: 8965803184693807463}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 900, y: 900}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2428927610454765719
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610454765704}
+  m_Layer: 0
+  m_Name: Left
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610454765704
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610454765719}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.5, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609727091411}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927610458053678
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610458053679}
+  - component: {fileID: 2428927610458053664}
+  m_Layer: 5
+  m_Name: Title
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610458053679
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610458053678}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
+  m_Children:
+  - {fileID: 2428927609593982669}
+  m_Father: {fileID: 8965803184693807463}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 900, y: 900}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2428927610458053664
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610458053678}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a7908530b054b4a4eae1b8a4cdc6dd03, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  isDelOnClose: 0
+--- !u!1 &2428927610464604017
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610464604018}
+  m_Layer: 5
+  m_Name: FullUIRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2428927610464604018
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610464604017}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -3.0100346}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 3570294974140661963}
+  m_Father: {fileID: 8965803184693807463}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 300, y: 300}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &2428927610488764050
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610488764051}
+  m_Layer: 0
+  m_Name: Right
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610488764051
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610488764050}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.5, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609595823268}
+  m_Father: {fileID: 2428927608787732091}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927610598196243
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610598196244}
+  m_Layer: 0
+  m_Name: DownLeft
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610598196244
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610598196243}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.5, y: -0.5, z: 0}
+  m_LocalScale: {x: 0.08888889, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927608869540437}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2428927610654414969
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610654414970}
+  - component: {fileID: 2428927610654414972}
+  - component: {fileID: 2428927610654414971}
+  m_Layer: 0
+  m_Name: jgg06
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610654414970
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610654414969}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0.000018328428, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609115852809}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927610654414972
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610654414969}
+  m_Mesh: {fileID: 7195682724243826601, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927610654414971
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610654414969}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927610685716139
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610685716140}
+  - component: {fileID: 2428927610685716143}
+  - component: {fileID: 2428927610685716142}
+  m_Layer: 5
+  m_Name: Back
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &2428927610685716140
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610685716139}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 6.6}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927610301547091}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 1314, y: 1314}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2428927610685716143
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610685716139}
+  m_CullTransparentMesh: 0
+--- !u!114 &2428927610685716142
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610685716139}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 2100000, guid: 824b06a984f9aee4dae562c79ad98744, type: 2}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+    m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
+      Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2428927610687176861
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610687176862}
+  - component: {fileID: 2428927610687176848}
+  - component: {fileID: 2428927610687176863}
+  m_Layer: 0
+  m_Name: jgg02
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610687176862
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610687176861}
+  m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.25, y: 1.250001, z: 1.250001}
+  m_Children: []
+  m_Father: {fileID: 2428927609326127337}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2428927610687176848
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610687176861}
+  m_Mesh: {fileID: 724216316272328771, guid: 0f295634400acf54b86da8dc5a001b27, type: 3}
+--- !u!23 &2428927610687176863
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610687176861}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ad2e7a1e0b07c614db0c0786647e9111, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+--- !u!1 &2428927610726306537
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2428927610726306538}
+  m_Layer: 0
+  m_Name: DownRight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2428927610726306538
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2428927610726306537}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0.5, y: -0.5, z: 0}
+  m_LocalScale: {x: 0.08888889, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2428927609948824400}
+  m_Father: {fileID: 2428927608930960971}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7500325995090933687
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8965803184693807463}
+  m_Layer: 5
+  m_Name: DlgRoot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8965803184693807463
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7500325995090933687}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
+  m_Children:
+  - {fileID: 2428927610301547091}
+  - {fileID: 2428927610458053679}
+  - {fileID: 2428927610410906897}
+  - {fileID: 2428927610464604018}
+  m_Father: {fileID: 2428927608654121612}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &8211453817454492062
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3570294974140661963}
+  m_Layer: 5
+  m_Name: Container
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3570294974140661963
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8211453817454492062}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.003}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2428927610464604018}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}

+ 7 - 0
Assets/Game/XRToolkit/ArtShow/Resources/Container/WorldDlgContainer.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e277c0accda758c4d84aa1054c88c890
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Scripts.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art.meta

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

+ 347 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs

@@ -0,0 +1,347 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 资源的处理类
+    /// 相同资源只会创建一个实例
+    /// </summary>
+    public class ArtHandler : ArtInstance, ArtPlay
+    {
+        //public ArtHandler() {
+        //    Debug.Log("ArtHandler:" + UnityUtil.CurTimeString);
+        //}
+        private ArtInstanceHandler instancer;
+        private ArtPlay artDisPlay;
+        private ArtInfo info;
+
+        public ArtInstanceHandler Instancer { get => instancer; set => instancer = value; }
+        public ArtPlay ArtDisPlay { get => artDisPlay; set => artDisPlay = value; }
+        public float DownProcess { get => Instancer.DownProcess; set => Instancer.DownProcess = value; }
+
+        public event Action<ArtPlay> OnCreateArt;
+        private Texture artIcon;
+        //private Action<float> loadProcess;
+        //private Action<UnityEngine.Object> artLoaded;
+        /// <summary>
+        /// 初始化资源
+        /// </summary>
+        /// <param name="info"></param>
+        public virtual void SetData(ArtInfo info, string containerName = "")
+        {
+            if (info != null)
+            {
+                this.info = info;
+                if (info.InstaceType == InstaceType.ResourceLoad)
+                {
+                    Instancer = new ResourcesHandler();
+                }
+                else if (info.InstaceType == InstaceType.UnityBase)
+                {
+                    Instancer = new UnityBaseHandler();
+                }
+                else if (info.InstaceType == InstaceType.References)
+                {
+                    Instancer = new ReferencesLoadHandler();
+                }
+                else if (info.InstaceType == InstaceType.AssetBundle)
+                {
+                    Instancer = new ExtralLoadHandler();
+                }
+                else if (info.InstaceType == InstaceType.ExtralURLDownload)
+                {
+                    Instancer = new ExtralLoadHandler();
+                }
+                else if (info.InstaceType == InstaceType.LocalPath)
+                {
+                    Instancer = new ExtralLoadHandler();
+                }
+                if (Instancer != null)
+                {
+                    Instancer.SetData(info);
+                }
+
+                if (info.ArtType == ArtType.Model)
+                {
+                    ArtDisPlay = new ModelPlayer();
+                }
+                else if (info.ArtType == ArtType.WorldDlg)
+                {
+                    ArtDisPlay = new WorldDlgPlayer();
+                }
+                else if (info.ArtType == ArtType.Image)
+                {
+                    ArtDisPlay = new PictruePlayer();
+                }
+                else if (info.ArtType == ArtType.Movies)
+                {
+                    ArtDisPlay = new ArtVideoPlayer();
+                }
+                else if (info.ArtType == ArtType.Prefab)
+                {
+                    ArtDisPlay = new PrefabPlayer(containerName);
+                }
+                else if (info.ArtType == ArtType.Model2D)
+                {
+                    ArtDisPlay = new Model2DPlayer();
+                }
+                if (ArtDisPlay != null)
+                {
+                    ArtDisPlay.SetData(info);
+                }
+            }
+        }
+        /// <summary>
+        /// 同步加载资源
+        /// </summary>
+        /// <returns></returns>
+        public virtual UnityEngine.Object LoadArt()
+        {
+            if (Instancer != null && ArtDisPlay != null)
+            {
+                if (IsNeedLoad())
+                {
+                    return Instancer.LoadArt();
+                }
+            }
+            return null;
+        }
+        /// <summary>
+        /// 异步加载资源
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="process"></param>
+        /// <param name="loaded"></param>
+        public virtual void LoadArtAsyn(string path, Action<float> process, Action<UnityEngine.Object> loaded)
+        {
+            if (Instancer != null && ArtDisPlay != null)
+            {
+                if (IsNeedLoad())
+                {
+                    Instancer.LoadArtAsyn(path, process, loaded);
+                    return;
+                }
+                process?.Invoke(1);
+                loaded?.Invoke(null);
+            }
+        }
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <returns></returns>
+        public virtual UnityEngine.Object InstanceArt()
+        {
+            if (Instancer != null && ArtDisPlay != null)
+            {
+                if (IsNeedInstance())
+                {
+                    return Instancer.InstanceArt();
+                }
+            }
+            return null;
+        }
+        /// <summary>
+        /// 添加到容器中
+        /// </summary>
+        /// <param name="obj"></param>
+        public void AddToNode(UnityEngine.Object obj)
+        {
+            if (ArtDisPlay != null)
+            {
+                ArtDisPlay.AddToNode(obj);
+            }
+        }
+        /// <summary>
+        /// 获取图标
+        /// </summary>
+        /// <returns></returns>
+        public Texture GetIcon()
+        {
+            if (artIcon)
+            {
+                return artIcon;
+            }
+            if ((info.InstaceType == InstaceType.References || info.InstaceType == InstaceType.ResourceLoad ||
+                    info.InstaceType == InstaceType.UnityBase) && Instancer != null)
+            {
+                if (info.ArtType == ArtType.Image)
+                {
+                    var tex = Instancer.LoadArt();
+                    return artIcon = (tex as Texture);
+                }
+                else if (info.ArtType == ArtType.Movies)
+                {
+                    return artIcon = Instancer.GetIcon();
+                }
+                else
+                {
+                    return artIcon = Instancer.GetIcon();
+                }
+            }
+            return artIcon;
+        }
+        /// <summary>
+        /// 获取缩略图
+        /// </summary>
+        /// <param name="loadTex"></param>
+        public void GetIcon(Action<Texture> loadTex)
+        {
+            if (artIcon)
+            {
+                loadTex?.Invoke(artIcon);
+                return;
+            }
+            Instancer.GetIcon(loadTex);
+            loadTex += (tex) => { artIcon = tex; };
+        }
+        /// <summary>
+        /// 创建对应的组件
+        /// </summary>
+        /// <returns></returns>
+        public ArtComponent InstanceComponent()
+        {
+            if (Instancer != null)
+            {
+                return Instancer.InstanceComponent();
+            }
+            return null;
+        }
+
+        public bool IsNeedLoad()
+        {
+            if (ArtDisPlay != null)
+            {
+                return ArtDisPlay.IsNeedLoad();
+            }
+            return false;
+        }
+
+        public bool IsNeedInstance()
+        {
+            if (ArtDisPlay != null)
+            {
+                return ArtDisPlay.IsNeedInstance();
+            }
+            return false;
+        }
+        /// <summary>
+        /// 创建容器
+        /// </summary>
+        /// <returns></returns>
+        public ArtContainer CreateContainer()
+        {
+            if (ArtDisPlay != null)
+            {
+                return ArtDisPlay.CreateContainer();
+            }
+            return null;
+        }
+        /// <summary>
+        /// 创建一个美术展示容器
+        /// </summary>
+        public virtual ArtContainer CreateArt()
+        {
+            ///创建容器
+            var container = CreateContainer();
+            if (container == null)
+            {
+                UnityLog.LogError(info.ArtId + "__" + info.ArtType + "容器不存在!");
+                return null;
+            }
+            AddToNode(container.GetInstace());
+
+
+
+            ///资源的加载走异步处理
+            if ((info.InstaceType == InstaceType.References || info.InstaceType == InstaceType.ResourceLoad ||
+                    info.InstaceType == InstaceType.UnityBase))
+            {
+                UnityEngine.Object obj = null;
+                if (IsNeedLoad())
+                {
+                    obj = LoadArt();
+                }
+                if (IsNeedInstance())
+                {
+                    obj = InstanceArt();
+                }
+                if (obj is GameObject)
+                {
+                    if (!(obj as GameObject).activeSelf)
+                    {
+                        (obj as GameObject).SetActive(true);
+                    }
+                }
+                container.AddToContainer(obj, info);
+                var artComponent = InstanceComponent();
+                container.AddArtComponent(artComponent);
+                if (artComponent != null)
+                {
+                    artComponent.SetContainer(container as ArtContainerHandler, obj, info);
+                }
+            }
+            else
+            {
+                if (IsNeedLoad())
+                {
+                    LoadArtAsyn("", container.UpdateProcess, (obj) =>
+                    {
+                        if (IsNeedInstance())
+                        {
+                            obj = InstanceArt();
+                        }
+                        if (obj is GameObject)
+                        {
+                            if (!(obj as GameObject).activeSelf)
+                            {
+                                (obj as GameObject).SetActive(true);
+                            }
+                        }
+                        container.AddToContainer(obj, info);
+                        var artComponent = InstanceComponent();
+                        container.AddArtComponent(artComponent);
+                        if (artComponent != null)
+                        {
+                            artComponent.SetContainer(container as ArtContainerHandler, obj, info);
+                        }
+                    });
+                }
+            }
+
+            container.SetArtHandler(this);
+            OnCreateArt?.Invoke(ArtDisPlay);
+            return container;
+        }
+        /// <summary>
+        /// 异步创建容器
+        /// </summary>
+        /// <param name="createAction"></param>
+        public virtual void CreateArt(Action<ArtContainer> createAction)
+        {
+
+        }
+        /// <summary>
+        /// 是否已下载
+        /// </summary>
+        /// <returns></returns>
+        public bool IsDownLoad()
+        {
+            if ((info.InstaceType == InstaceType.References || info.InstaceType == InstaceType.ResourceLoad ||
+                    info.InstaceType == InstaceType.UnityBase))
+            {
+                Instancer.DownProcess = 1;
+                return true;
+            }
+            return Instancer.IsDownLoad();
+        }
+
+        public void DownLoad(Action<float, float> downProcess, Action<string, byte[]> downComplete)
+        {
+            Instancer.DownLoad(downProcess, downComplete);
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtHandler.cs.meta

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

+ 171 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs

@@ -0,0 +1,171 @@
+
+using System;
+using UnityEngine;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 资源类型,后续扩展
+    /// </summary>
+    [System.Flags]
+    public enum ArtType
+    {
+        /// <summary>
+        /// 模型
+        /// </summary>
+        Model = 1,
+        /// <summary>
+        /// 图片
+        /// </summary>
+        Image = 2,
+        /// <summary>
+        /// 音频
+        /// </summary>
+        Audio = 4,
+        /// <summary>
+        /// 电影
+        /// </summary>
+        Movies = 8,
+        /// <summary>
+        /// 游戏对象,预制体,可直接实例化展示,可能是模型,粒子动效,特殊组件
+        /// 有可能是文本,线,2D编辑框等等
+        /// </summary>
+        Prefab = 16,
+        /// <summary>
+        /// 2D的模型
+        /// </summary>
+        Model2D = 32,
+        /// <summary>
+        /// 属于世界UI
+        /// 图片,视频,文本等都属于World
+        /// </summary>
+        WorldDlg = 64
+    }
+    
+    /// <summary>
+    /// 实例化方式
+    /// </summary>
+    public enum InstaceType
+    {
+        /// <summary>
+        /// 外部url下载
+        /// </summary>
+        ExtralURLDownload = 0,
+        /// <summary>
+        /// Unity的基本组件,Cube等
+        /// </summary>
+        UnityBase = 1,
+        /// <summary>
+        /// 存放于Resource路径下的资源
+        /// </summary>
+        ResourceLoad = 2,
+        /// <summary>
+        /// 存在本地的资源,例如系统相册
+        /// </summary>
+        LocalPath = 3,
+        /// <summary>
+        /// AssetBundle资源,依赖加载
+        /// </summary>
+        AssetBundle = 4,
+        /// <summary>
+        /// 引用类资源,引用类资源如何加上?
+        /// </summary>
+        References = 5
+    }
+    /// <summary>
+    /// 资源的结构体
+    /// </summary>
+    public class ArtInfo
+    {
+        /// <summary>
+        /// 资源id
+        /// </summary>
+        private string artId;
+        private string artName;
+        /// <summary>
+        /// 下载地址/路径/名称等等
+        /// 按照资源的获取/实例化类型来定义
+        /// 如果是外部模型,此为下载链接等
+        /// 如果是Unity基本组件,此为名称
+        /// 如果ResourceLoad、LocalPath,AssetBundle此为路径
+        /// </summary>
+        private string url;
+        /// <summary>
+        /// 资源对应的缩略图
+        /// </summary>
+        private string icon;
+        /// <summary>
+        /// 资源类型
+        /// </summary>
+        private ArtType artType;
+        /// <summary>
+        /// 实例化方式
+        /// </summary>
+        private InstaceType instaceType;
+        /// <summary>
+        /// 资源版本
+        /// </summary>
+        private string version;
+        private float size = 1;
+        private float distance = 2;
+        private string containerName = "";
+        private bool immediateSyn = true;
+        private string component = "";
+        private string description = "";
+        /// <summary>
+        /// art ID
+        /// </summary>
+        public string ArtId { get => artId; set => artId = value; }
+        /// <summary>
+        /// art Name
+        /// </summary>
+        public string ArtName { get => artName; set => artName = value; }
+        /// <summary>
+        /// art url
+        /// </summary>
+        public string Url { get => url; set => url = value; }
+        /// <summary>
+        /// art 缩略图
+        /// </summary>
+        public string Icon { get => icon; set => icon = value; }
+        /// <summary>
+        /// 资源类型,后续扩展
+        /// 模型,图片,音视频,简单预制体等等
+        /// </summary>
+        public ArtType ArtType { get => artType; set => artType = value; }
+        /// <summary>
+        /// 创建方式,实例化方式
+        /// </summary>
+        public InstaceType InstaceType { get => instaceType; set => instaceType = value; }
+        /// <summary>
+        /// 版本
+        /// </summary>
+        public string Version { get => version; set => version = value; }
+        /// <summary>
+        /// 默认大小1
+        /// </summary>
+        public float Size { get => size; set => size = value; }
+        /// <summary>
+        /// 默认距离2
+        /// </summary>
+        public float Distance { get => distance; set => distance = value; }
+        public string ContainerName { get => containerName; set => containerName = value; }
+        /// <summary>
+        /// 是否即时同步
+        /// </summary>
+        public bool ImmediateSyn { get => immediateSyn; set => immediateSyn = value; }
+        /// <summary>
+        /// 引用的组件
+        /// </summary>
+        public string Component { get => component; set => component = value; }
+        /// <summary>
+        /// 文件描述
+        /// </summary>
+        public string Description { get => description; set => description = value; }
+        public static ArtType GetArtType(int type)
+        {
+            ArtType info = (ArtType)Enum.ToObject(typeof(ArtType), (int)Math.Pow(2, type));
+            return info;
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfo.cs.meta

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

+ 1145 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs

@@ -0,0 +1,1145 @@
+using Newtonsoft.Json;
+using PublicTools.XMLDataBase;
+using SC.XR.Unity;
+using ShadowStudio.Tool;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 资源映射表
+    /// 读取,获取资源映射表
+    /// 按照id和类型建立资源映射。通过artid获取对应的artinfo
+    /// 通过资源类型获取对应的artinfo
+    /// 创建一个美术资源:
+    /// </summary>
+    public class ArtInfoMgr : SC.XR.Unity.Singleton<ArtInfoMgr>
+    {
+        private string tableName;
+        private TableInterface table;
+        private bool isInit = false;
+        /// <summary>
+        /// 所有的资源列表,此列表当前服务器和本地各有一份。后期读取服务器列表数据
+        /// </summary>
+        private List<ArtInfo> artInfoList;
+        /// <summary>
+        /// 资源id对应的资源信息
+        /// </summary>
+        private Dictionary<string, ArtInfo> artInfoMap;
+        private Dictionary<string, ArtInfo> otherArtInfoMap;
+        /// <summary>
+        /// 资源类型对应的资源列表
+        /// </summary>
+        private Dictionary<ArtType, List<ArtInfo>> artInfoTypeMap;
+        /// <summary>
+        /// 组件的集合
+        /// </summary>
+        private Dictionary<string, ArtComponent> artComponentMap = new Dictionary<string, ArtComponent>();
+        /// <summary>
+        /// 资源的引用
+        /// </summary>
+        private Dictionary<string, ArtResConf> resArtMap;
+        /// <summary>
+        /// 资源对应的工具类
+        /// </summary>
+        private Dictionary<ArtInfo, ArtHandler> artHandlerMap = new Dictionary<ArtInfo, ArtHandler>();
+        /// <summary>
+        /// 对应资源类型的容器,例如视频播放器,图片浏览器,模型浏览器
+        /// </summary>
+        private Dictionary<ArtType, List<ArtContainer>> artContainerMap = new Dictionary<ArtType, List<ArtContainer>>();
+        /// <summary>
+        /// 数据初始化
+        /// </summary>
+        public event Action InitComplete;
+        /// <summary>
+        /// 对应资源存储的最大的id
+        /// 本地生成goods的一种辅助方案,此方案即将移除
+        /// 此方案已移除,请勿使用2020-09-14
+        /// </summary>
+        private Dictionary<ArtInfo, int> goodsIdMap = new Dictionary<ArtInfo, int>();
+        /// <summary>
+        /// 使用变量缓存服务器下发的物体信息数据
+        /// </summary>
+        private GoodsInfo serverCacheData = new GoodsInfo();
+        /// <summary>
+        /// 此为上传至服务器的物体的数据缓存,理论上上传多个物体列表信息,实际处理中每次只会上传一条物体的同步信息
+        /// </summary>
+        private List<GoodsInfo> goodsDataList = new List<GoodsInfo>();
+        /// <summary>
+        /// 创建容器的事件,某个容器被上传的事件
+        /// </summary>
+        public event Action<ArtContainer> ContainerCreate;
+        /// <summary>
+        /// 删除容器,某个容器被删除的事件
+        /// </summary>
+        public event Action<ArtContainer> ContainerDel;
+        /// <summary>
+        /// 容器被选中或者容器非选中状态的事件
+        /// </summary>
+        public static event Action<ArtContainer, bool> ContainerSelect;
+        /// <summary>
+        /// 编辑菜单的名称
+        /// </summary>
+        private string ModelEditBtnGroup = "ModelEditBtnDlg";
+        //public ArtEditorContainer ModelEditBtn;
+        /// <summary>
+        /// 容器缓存
+        /// 非即时同步容器缓存
+        /// </summary>
+        private Dictionary<string, ArtContainer> containerCache = new Dictionary<string, ArtContainer>();
+        public event Action<string, bool> UserChange;
+        public void AddCacheContainer(string id, ArtContainer container)
+        {
+            if (!ContainerCache.ContainsKey(id))
+            {
+                ContainerCache.Add(id, container);
+            }
+        }
+        public void SetContainerSelect(ArtContainer container, bool isSelect)
+        {
+            ContainerSelect?.Invoke(container, isSelect);
+        }
+        public bool IsSingleMan()
+        {
+            //if (GameNode.Instance)
+            //{
+            //    return GameNode.Instance.UserMap == null || GameNode.Instance.UserMap.Count < 2;
+            //}
+            return true;
+        }
+        public void RemoveArtInfo(List<UnityEngine.Object> resModelList)
+        {
+            for (int i = 0; i < resModelList.Count; i++)
+            {
+                string artid = "ArtId_" + resModelList[i].name;
+                table.DeleteData<ArtInfo>(artid);
+            }
+
+        }
+        /// <summary>
+        /// 将数据添加至xml
+        /// </summary>
+        /// <param name="resModelList"></param>
+        /// <param name="artType"></param>
+        /// <param name="references"></param>
+        public void AddArtInfo(List<UnityEngine.Object> resModelList, ArtType artType, InstaceType references, bool isForceUpdate, string url = "")
+        {
+            if (ArtInfoList == null)
+            {
+                ArtInfoList = new List<ArtInfo>();
+            }
+            for (int i = 0; i < resModelList.Count; i++)
+            {
+                UnityEngine.Object obj = resModelList[i];
+                string artid = "ArtId_" + obj.name;
+                if (isForceUpdate || !ArtInfoContains(artid))
+                {
+                    ArtInfo info = new ArtInfo();
+                    info.ArtId = artid;
+                    info.ArtName = obj.name;
+                    info.ArtType = artType;
+
+                    info.Distance = 1f;
+
+                    ///Icon
+                    info.Icon = "ArtIcon/" + artType + "/" + obj.name;
+                    info.InstaceType = references;
+                    info.Size = 1;
+                    if (artType == ArtType.Prefab)
+                    {
+                        info.Distance = (obj as GameObject).transform.localPosition.z;
+                        info.Size = (obj as GameObject).transform.localScale.x;
+                    }
+                    if (references == InstaceType.References)
+                    {
+                        info.Url = url;
+                    }
+                    else if (references == InstaceType.ResourceLoad)
+                    {
+#if UNITY_EDITOR
+                        string path = AssetDatabase.GetAssetPath(obj);
+                        int index = path.LastIndexOf("Resources");
+                        path = path.Substring((index += "Resources".Length + 1), path.Length - index - 1);
+                        path = path.Replace(Path.GetExtension(path), "");
+                        info.Url = path;
+#endif
+                    }
+                    info.Version = Application.version;
+                    table.InsertData(info);
+                    if (!ArtInfoContains(artid))
+                    {
+                        ArtInfoList.Add(info);
+                    }
+                }
+            }
+            table.Save();
+        }
+
+        public bool ArtInfoContains(string artId)
+        {
+            for (int i = 0; i < ArtInfoList.Count; i++)
+            {
+                if (ArtInfoList[i].ArtId == artId)
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+
+
+        public bool IsInit { get => isInit; set => isInit = value; }
+        public List<ArtInfo> ArtInfoList { get => artInfoList; set => artInfoList = value; }
+        public Dictionary<string, ArtContainer> ContainerCache { get => containerCache; set => containerCache = value; }
+        public Dictionary<string, ArtInfo> OtherArtInfoMap
+        {
+            get
+            {
+                if (otherArtInfoMap == null)
+                {
+                    otherArtInfoMap = new Dictionary<string, ArtInfo>();
+                }
+                return otherArtInfoMap;
+            }
+        }
+
+
+        /// <summary>
+        /// 房间内物体的映射
+        /// 房间id与对应的物体资源映射
+        /// </summary>
+
+        public void LoadModelEditBtn()
+        {
+            //if (!ModelEditBtn)
+            //{
+            //    var tmp = Resources.Load<ArtEditorContainer>(ModelEditBtnGroup);
+            //    if (tmp)
+            //    {
+            //        ModelEditBtn = GameObject.Instantiate(tmp);
+            //        GameNode.Instance.SetParent(ObjNode.WorldCanvas, ModelEditBtn.transform, Vector3.zero, Vector3.zero, Vector3.one * 0.001f, false);
+            //        ModelEditBtn.gameObject.SetActive(false);
+            //    }
+            //}
+        }
+        public ArtInfoMgr()
+        {
+
+            var artResList = Resources.LoadAll<ArtResConf>("ArtConf");
+            resArtMap = new Dictionary<string, ArtResConf>();
+            if (artResList != null)
+            {
+                for (int i = 0; i < artResList.Length; i++)
+                {
+                    resArtMap.Add(artResList[i].name, artResList[i]);
+                }
+            }
+            var containers = Resources.LoadAll<GameObject>("Container");
+            if (containers != null)
+            {
+                for (int i = 0; i < containers.Length; i++)
+                {
+                    var container = containers[i].GetComponent<ArtContainer>();
+                    if (container != null)
+                    {
+                        if (!artContainerMap.ContainsKey(container.GetArtType()))
+                        {
+                            List<ArtContainer> list = new List<ArtContainer>();
+                            list.Add(container);
+                            artContainerMap.Add(container.GetArtType(), list);
+                        }
+                        else
+                        {
+                            List<ArtContainer> list = artContainerMap[container.GetArtType()];
+                            list.Add(container);
+                        }
+                    }
+                }
+            }
+            var components = Resources.LoadAll<GameObject>("Container/Component");
+            if (components != null)
+            {
+                for (int i = 0; i < components.Length; i++)
+                {
+                    var component = containers[i].GetComponent<ArtComponent>();
+                    if (component != null)
+                    {
+                        if (!artComponentMap.ContainsKey(containers[i].name))
+                        {
+                            artComponentMap.Add(containers[i].name, component);
+                        }
+                    }
+                }
+            }
+
+            if (BuildConfigMgr.Instance.IsInit)
+            {
+                //ReadArtInfo(Path.Combine(BuildConfig.Instance.LocalPath, BuildConfig.Instance.artInfoPath));
+            }
+            else
+            {
+                UnityLog.LogError("配置文件丢失!");
+            }
+            //WSHandler.Room.OnBroadcastGood += SyncGoods;
+
+            ContainerSelect += OnContainerSelect;
+        }
+        public void ListenUser()
+        {
+            //if (ShowViewMgr.Instance)
+            //{
+            //    ShowViewMgr.Instance.OnUserChange -= OnUserChange;
+            //    ShowViewMgr.Instance.OnUserChange += OnUserChange;
+            //}
+            //else
+            //{
+            //    ShowViewMgr.InitComplte += () =>
+            //    {
+            //        if (ShowViewMgr.Instance)
+            //        {
+            //            ShowViewMgr.Instance.OnUserChange -= OnUserChange;
+            //            ShowViewMgr.Instance.OnUserChange += OnUserChange;
+            //        }
+            //    };
+            //}
+        }
+        public void ListenPage()
+        {
+            //if (ShowViewMgr.Instance)
+            //{
+            //    ShowViewMgr.Instance.OnRoomPageChange -= OnChangePage;
+            //    ShowViewMgr.Instance.OnRoomPageChange += OnChangePage;
+            //}
+            //else
+            //{
+            //    ShowViewMgr.InitComplte += () =>
+            //    {
+            //        if (ShowViewMgr.Instance)
+            //        {
+            //            ShowViewMgr.Instance.OnRoomPageChange -= OnChangePage;
+            //            ShowViewMgr.Instance.OnRoomPageChange += OnChangePage;
+            //        }
+            //    };
+            //}
+        }
+        private void OnContainerSelect(ArtContainer container, bool isSelect)
+        {
+            if (container.GetGoodsInfo().art_id == "ArtId_PlayerView")
+            {
+                return;
+            }
+            //if (!ModelEditBtn)
+            //{
+            //    LoadModelEditBtn();
+            //}
+            //if (ModelEditBtn)
+            //{
+            //    if (ModelEditBtn.gameObject.activeSelf != isSelect)
+            //    {
+            //        ModelEditBtn.gameObject.SetActive(isSelect);
+            //    }
+            //    if (isSelect)
+            //    {
+            //        ModelEditBtn.SetTarget(container, false);
+            //    }
+            //}
+            //if (ArtMoreEditor.Instance)
+            //{
+            //    if (isSelect)
+            //    {
+            //        ArtMoreEditor.Instance.SetTarget(container, false);
+            //    }
+            //}
+        }
+
+
+        /// <summary>
+        /// 读取美术资源
+        /// </summary>
+        /// <param name="path"></param>
+        private void ReadArtInfo(string path)
+        {
+            //languageIndex = SystemSettingMgr.Instance.settings.Language;
+            tableName = typeof(ArtInfo).Name;
+#if UNITY_EDITOR || !UNITY_ANDROID
+            table = XSql.Instance.OpenTable(path, tableName, ".xml", true);
+            OpenTable();
+#else
+            string fullPath = Path.Combine(path, tableName + ".xml");
+            TimerMgr.Instance.StartCoroutine(XSql.Instance.ReadServerData(fullPath, (List<ArtInfo> packList) =>
+            {
+                InitPackage(packList);
+            }));
+#endif
+        }
+        public void OpenLocalData()
+        {
+            //ReadArtInfo(Path.Combine(BuildConfig.Instance.LocalPath, BuildConfig.Instance.artInfoPath));
+        }
+
+        private void OpenTable()
+        {
+            if (!table.Open())
+            {
+                table.Create(tableName);
+                UnityLog.Log("create table" + tableName);
+            }
+            var list = table.FindAllData<ArtInfo>();
+            for (int i = 0; i < list.Count; i++)
+            {
+                list[i].ArtType = ArtInfo.GetArtType((int)list[i].ArtType);
+            }
+            //table.Save();
+            //languagePackList = table.FindAllData<LanguagePackConf>();
+            InitPackage(list);
+        }
+        /// <summary>
+        /// 初始化包
+        /// </summary>
+        /// <param name="lists"></param>
+        public void InitPackage(List<ArtInfo> lists)
+        {
+            ArtInfoList = lists;
+            if (ArtInfoList == null || ArtInfoList.Count < 1)
+            {
+                UnityLog.LogError("美术资源不存在!");
+#if UNITY_EDITOR
+                AddDefaultArt(ArtType.Model);
+                InitPackage(ArtInfoList);
+#endif
+                return;
+            }
+            else
+            {
+                if (artInfoMap == null)
+                {
+                    artInfoMap = new Dictionary<string, ArtInfo>();
+                }
+                if (artInfoTypeMap == null)
+                {
+                    artInfoTypeMap = new Dictionary<ArtType, List<ArtInfo>>();
+                }
+                for (int i = 0; i < ArtInfoList.Count; i++)
+                {
+                    if (!artInfoMap.ContainsKey(ArtInfoList[i].ArtId))
+                    {
+                        artInfoMap.Add(ArtInfoList[i].ArtId, ArtInfoList[i]);
+                        UnityLog.Log(ArtInfoList[i].Url, 3);
+                    }
+                    if (artInfoTypeMap.ContainsKey(ArtInfoList[i].ArtType))
+                    {
+                        List<ArtInfo> list = artInfoTypeMap[ArtInfoList[i].ArtType];
+                        if (list != null && !list.Contains(ArtInfoList[i]))
+                        {
+                            list.Add(ArtInfoList[i]);
+                        }
+                    }
+                    else
+                    {
+                        List<ArtInfo> list = new List<ArtInfo>();
+                        list.Add(ArtInfoList[i]);
+                        artInfoTypeMap.Add(ArtInfoList[i].ArtType, list);
+                    }
+                }
+            }
+            IsInit = true;
+            InitComplete?.Invoke();
+        }
+        /// <summary>
+        /// 添加Unity基本资源到文本
+        /// </summary>
+        public void AddDefaultArt(ArtType artType)
+        {
+            if (ArtInfoList == null)
+            {
+                ArtInfoList = new List<ArtInfo>();
+            }
+            if (artType == ArtType.Model)
+            {
+                foreach (PrimitiveType primitive in Enum.GetValues(typeof(PrimitiveType)))
+                {
+                    ArtInfo info = new ArtInfo();
+                    info.ArtId = "ArtId_" + (int)primitive;
+                    info.ArtName = primitive.ToString();
+                    info.ArtType = ArtType.Model;
+                    info.Distance = 1f;
+                    ///Icon
+                    info.Icon = "PrimitiveType/" + primitive.ToString();
+                    info.InstaceType = InstaceType.UnityBase;
+                    info.Size = 1;
+                    info.Url = "" + (int)primitive;
+                    info.Version = Application.unityVersion;
+                    table.InsertData(info);
+                    ArtInfoList.Add(info);
+                }
+            }
+            else
+            {
+                ArtInfo info = new ArtInfo();
+                info.ArtId = "ArtId_GameObject";
+                info.ArtName = "GameObject";
+                info.ArtType = ArtType.Prefab;
+                info.Distance = 1f;
+                ///Icon
+                info.Icon = "";
+                info.InstaceType = InstaceType.UnityBase;
+                info.Size = 1;
+                info.Url = "New";
+                info.Version = Application.unityVersion;
+                table.InsertData(info);
+                ArtInfoList.Add(info);
+            }
+            table.Save();
+        }
+        /// <summary>
+        /// 根据资源id获取对应的资源
+        /// </summary>
+        /// <param name="artId"></param>
+        /// <returns></returns>
+        public ArtInfo GetArtInfo(string artId)
+        {
+            if (IsInit && artInfoMap.ContainsKey(artId))
+            {
+                return artInfoMap[artId];
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 根据资源id获取对应的资源
+        /// </summary>
+        /// <param name="artId"></param>
+        /// <returns></returns>
+        public List<ArtInfo> GetArtInfoList(ArtType artType)
+        {
+            if (IsInit)//
+            {
+                if (artInfoTypeMap.ContainsKey(artType))
+                {
+                    return artInfoTypeMap[artType];
+                }
+                List<ArtInfo> tmp = new List<ArtInfo>();
+                foreach (var item in artInfoTypeMap)
+                {
+                    ///包含此key
+                    if ((item.Key & artType) == item.Key)
+                    {
+                        tmp.AddRange(item.Value);
+                    }
+                }
+                artInfoTypeMap.Add(artType, tmp);
+                return tmp;
+            }
+            return null;
+        }
+        ///// <summary>
+        ///// 根据资源id获取对应的资源
+        ///// </summary>
+        ///// <param name="artId"></param>
+        ///// <returns></returns>
+        //public List<ArtInfo> GetArtInfoList(ArtType[] artType)
+        //{
+        //    if (IsInit)//
+        //    {
+        //        List<ArtInfo> ArtInfoList = new List<ArtInfo>();
+        //        for (int i = 0; i < artType.Length; i++)
+        //        {
+        //            if (artInfoTypeMap.ContainsKey(artType[i]))
+        //            {
+        //                ArtInfoList.AddRange(artInfoTypeMap[artType[i]]);
+        //            }
+        //        }
+        //        return ArtInfoList;
+        //    }
+        //    return null;
+        //}
+        /// <summary>
+        /// 根据资源id获取对应的资源
+        /// </summary>
+        /// <param name="artId"></param>
+        /// <returns></returns>
+        public List<ArtInfo> GetArtInfoListSingle(ArtType artType)
+        {
+            if (IsInit)//
+            {
+                return artInfoTypeMap[artType];
+            }
+            return null;
+        }
+        /// <summary>
+        /// 创建一个资源ArtHandler,注意内存回收
+        /// </summary>
+        /// <returns></returns>
+        public ArtHandler CreateArtHandler(ArtInfo art, string containerName = "")
+        {
+            if (string.IsNullOrEmpty(containerName))
+            {
+                containerName = art.ContainerName;
+            }
+            if (artHandlerMap.ContainsKey(art))
+            {
+                return artHandlerMap[art];
+            }
+            ArtHandler handler = new ArtHandler();
+            handler.SetData(art, containerName);
+            artHandlerMap.Add(art, handler);
+            return handler;
+        }
+        /// <summary>
+        /// 删除资源帮助类ArtHandler
+        /// </summary>
+        /// <param name="art"></param>
+        public void DestrorArtHandler(ArtInfo art)
+        {
+            if (artHandlerMap.ContainsKey(art))
+            {
+                var handler = artHandlerMap[art];
+                handler = null;
+                artHandlerMap.Remove(art);
+            }
+        }
+        /// <summary>
+        /// 实例化组件
+        /// </summary>
+        /// <param name="componentName"></param>
+        /// <returns></returns>
+        public ArtComponent InstanceComponent(string componentName)
+        {
+            if (artComponentMap != null && artComponentMap.ContainsKey(componentName))
+            {
+                ArtComponent component = artComponentMap[componentName];
+                var tmp = GameObject.Instantiate(component.GetInstace());
+                return tmp.GetComponent<ArtComponent>();
+            }
+            return null;
+        }
+        /// <summary>
+        /// 实例化出一个容器
+        /// </summary>
+        /// <param name="artType"></param>
+        /// <returns></returns>
+        public ArtContainer CreateContainer(ArtType artType, string containerName = "")
+        {
+            if (artContainerMap != null && artContainerMap.ContainsKey(artType))
+            {
+                var containerList = artContainerMap[artType];
+                if (containerList != null)
+                {
+                    ArtContainer container = null;
+
+                    if (containerList.Count == 1)
+                    {
+                        container = containerList[0];
+                    }
+                    else
+                    {
+                        for (int i = 0; i < containerList.Count; i++)
+                        {
+                            if (containerList[i].GetInstace().name == containerName)
+                            {
+                                container = containerList[i];
+                                break;
+                            }
+                        }
+                    }
+                    if (container != null)
+                    {
+                        var tmp = GameObject.Instantiate(container.GetInstace());
+                        return tmp.GetComponent<ArtContainer>();
+                    }
+                }
+            }
+            return null;
+        }
+        /// <summary>
+        /// 获取对应的配置文件
+        /// </summary>
+        /// <param name="resName"></param>
+        /// <returns></returns>
+        public ArtResConf GetResConf(string resName)
+        {
+            if (resArtMap.ContainsKey(resName))
+            {
+                return resArtMap[resName];
+            }
+            UnityLog.LogError(resName + " is not at resArtMap");
+            return null;
+        }
+        /// <summary>
+        /// 物品的自增id设计
+        /// </summary>
+        /// <param name="info"></param>
+        public int GetGoodsId(ArtInfo info)
+        {
+            int id = 1;
+            if (goodsIdMap.ContainsKey(info))
+            {
+                id = goodsIdMap[info] + 1;
+                goodsIdMap[info] = id;
+            }
+            else
+            {
+                goodsIdMap.Add(info, id);
+            }
+            return id;
+        }
+        /// <summary>
+        /// 同步物体:
+        /// 创建物体时,接收到广播消息时的数据同步都调用此方法
+        /// </summary>
+        /// <param name="rid">用户id,物体的创建者</param>
+        /// <param name="art_id">美术资源id</param>
+        /// <param name="goods_name">物体名称</param>
+        /// <param name="goods_extended">物体额外信息</param>
+        /// <param name="id">物体id</param>
+        /// <param name="goods_info">物体的姿态信息</param>
+        public void SyncGoods(int rid, int status, string art_id, string goods_name, string goods_extended, int id, string goods_info)
+        {
+            serverCacheData.rid = rid;
+            serverCacheData.art_id = art_id;
+            serverCacheData.goods_name = goods_name;
+            serverCacheData.goods_extended = goods_extended;
+            serverCacheData.id = id;
+            serverCacheData.goods_info = goods_info;
+            serverCacheData.status = status;
+            SyncGoods(serverCacheData);
+        }
+        public void SyncGoods(List<GoodsInfo> goodDataList)
+        {
+            if (goodDataList != null)
+            {
+                for (int i = 0; i < goodDataList.Count; i++)
+                {
+                    SyncGoods(goodDataList[i]);
+                }
+            }
+        }
+        /// <summary>
+        /// 同步物体数据
+        /// 服务器同步或者翻页时同步,服务器同步时开始缓存数据
+        /// 翻页时同步不添加缓存数据
+        /// </summary>
+        /// <param name="goodData"></param>
+        /// <param name="isServer"></param>
+        public void SyncGoods(GoodsInfo goodData, bool isServer = true)
+        {
+            //if (GameNode.Instance.GoodsContainerMap == null)
+            //{
+            //    GameNode.Instance.GoodsContainerMap = new Dictionary<int, ArtContainer>();
+            //}
+            //ArtContainer container = null;
+            //bool isCreate = false;
+            //if (SynUser(goodData))
+            //{
+            //    container = GameNode.Instance.UserMap[goodData.art_id].Container;
+            //}
+            //else if (goodData.id != 0)
+            //{
+            //    ///先检查此数据是否在此页面
+            //    ///如果数据不在当前页,则只缓存起来
+            //    ///如果在当前页,则缓存后实例化进行同步
+            //    ///如果不是服务器的数据,仅同步设置,不缓存数据
+            //    if (isServer && goodData.scene_id > 0)
+            //    {
+            //        if (!GameNode.Instance.PageGoods.ContainsKey(goodData.id))
+            //        {
+            //            GameNode.Instance.PageGoods.Add(goodData.id, goodData);
+            //        }
+            //        else
+            //        {
+            //            GameNode.Instance.PageGoods[goodData.id] = goodData;
+            //        }
+            //        if (!GameNode.Instance.PageGoodsId.ContainsKey(goodData.scene_id))
+            //        {
+            //            var list = new List<int>();
+            //            list.Add(goodData.id);
+            //            GameNode.Instance.PageGoodsId.Add(goodData.scene_id, list);
+            //        }
+            //        else
+            //        {
+            //            var list = GameNode.Instance.PageGoodsId[goodData.scene_id];
+            //            if (list == null)
+            //            {
+            //                list = new List<int>();
+            //            }
+            //            if (!list.Contains(goodData.id))
+            //            {
+            //                list.Add(goodData.id);
+            //            }
+            //        }
+            //        if (goodData.scene_id != CommonMethod.currentScene)
+            //        {
+            //            return;
+            //        }
+            //    }
+            //    ///对象已存在,进行同步
+            //    if (GameNode.Instance.GoodsContainerMap.ContainsKey(goodData.id))
+            //    {
+            //        container = GameNode.Instance.GoodsContainerMap[goodData.id];
+            //    }
+            //    else
+            //    {
+            //        ArtInfo info = GetArtInfo(goodData.art_id);
+            //        if (info == null)
+            //        {
+            //            if (OtherArtInfoMap.ContainsKey(goodData.art_id))
+            //            {
+            //                info = OtherArtInfoMap[goodData.art_id];
+            //            }
+            //            else
+            //            {
+            //                NetWorkHeaders.RequestArtInfo(goodData.art_id, (jsonData) =>
+            //                {
+            //                    if (!OtherArtInfoMap.ContainsKey(goodData.art_id))
+            //                    {
+            //                        info = JsonConvert.DeserializeObject<ArtInfo>(jsonData["data"].ToJson());
+            //                        if (info != null)
+            //                        {
+            //                            info.ArtType = CommonMethod.getArtType(int.Parse(jsonData["data"]["art_type"].ToString()));
+            //                            info.ImmediateSyn = jsonData["data"]["immediate_syn"].ToString() == "0" ? false : true;
+            //                            if (string.IsNullOrEmpty(info.Component))
+            //                            {
+            //                                if (info.ArtType == ArtType.Image)
+            //                                {
+            //                                    info.Component = "PictureComponent";
+            //                                }
+            //                                else if (info.ArtType == ArtType.Movies)
+            //                                {
+            //                                    info.Component = "VideoComponent";
+            //                                }
+            //                            }
+
+            //                            OtherArtInfoMap.Add(goodData.art_id, info);
+            //                            SyncGoods(goodData, isServer);
+            //                            UnityLog.Instance.LogError("find artinfo:" + goodData.art_id);
+            //                            return;
+            //                        }
+            //                        else
+            //                        {
+            //                            UnityLog.Instance.LogError("Error find artinfo:" + goodData.art_id);
+            //                        }
+            //                    }
+            //                });
+            //            }
+            //        }
+            //        if (info != null)
+            //        {
+            //            ///容器缓存
+            //            if (ContainerCache.ContainsKey(goodData.art_id))
+            //            {
+            //                container = ContainerCache[goodData.art_id];
+            //                ContainerCache.Remove(goodData.art_id);
+            //            }
+            //            else
+            //            {
+            //                ArtHandler handler = CreateArtHandler(info);
+            //                container = handler.CreateArt();
+            //            }
+            //            GameNode.Instance.GoodsContainerMap.Add(goodData.id, container);
+            //            isCreate = true;
+            //        }
+            //        else
+            //        {
+            //            UnityLog.Instance.LogError(goodData.art_id);
+            //        }
+            //    }
+            //}
+            //try
+            //{
+            //    if (container != null && container.GetInstace())
+            //    {
+            //        container.TransferSyn(goodData, goodData.status == (int)TransferState.Doing);
+            //        if (isCreate)
+            //        {
+            //            ContainerCreate?.Invoke(container);
+            //        }
+            //    }
+            //}
+            //catch
+            //{
+            //    ///某个物体可能被删掉了
+            //    ///此种情况不在处理
+            //}
+        }
+        //Dictionary<string, string> form;
+        //Dictionary<string, string> header;
+        ///// <summary>
+        ///// 读取资源信息
+        ///// </summary>
+        ///// <returns></returns>
+        //public IEnumerator ReqOtherArtInfo(string artId, Action<ArtInfo> onReadComplete)
+        //{
+        //    if (header == null)
+        //    {
+        //        header = new Dictionary<string, string>();
+        //        header.Add("Content-Type", "application/x-www-form-urlencoded");
+        //    }
+        //    if (form == null)
+        //    {
+        //        form = new Dictionary<string, string>();
+        //        form.Add("action", "");
+        //    }
+
+        //    yield return 0;
+        //}
+        /// <summary>
+        /// 同步用户
+        /// </summary>
+        /// <param name="goodData"></param>
+        /// <returns></returns>
+        private bool SynUser(GoodsInfo goodData)
+        {
+            //if (GameNode.Instance.UserMap == null)
+            //{
+            //    GameNode.Instance.UserMap = new Dictionary<string, PlayerContainer>();
+            //}
+            //if (string.IsNullOrEmpty(goodData.art_id))
+            //{
+            //    return false;
+            //}
+            //return GameNode.Instance.UserMap.ContainsKey(goodData.art_id);
+            return false;
+        }
+
+        /// <summary>
+        /// 删除物体
+        /// 可能由用户主动删除,主动删除传参true.删除相关的数据缓存
+        /// 翻页时是被动删除。被动删除不移除相关的数据缓存
+        /// </summary>
+        /// <param name="id">物体的id</param>
+        /// <param name="isRealDel">是否真实删除,默认真实删除</param>
+        public void GoodsDelSync(int id, bool isRealDel = true)
+        {
+            //if (GameNode.Instance.GoodsContainerMap == null)
+            //{
+            //    GameNode.Instance.GoodsContainerMap = new Dictionary<int, ArtContainer>();
+            //}
+            //ArtContainer container = null;
+            /////对象已存在,进行同步
+            //if (GameNode.Instance.GoodsContainerMap.ContainsKey(id))
+            //{
+            //    container = GameNode.Instance.GoodsContainerMap[id];
+            //    //if (ModelEditBtn)
+            //    //{
+            //    //    ModelEditBtn.SetTarget(container, true);
+            //    //}
+            //    if (ArtMoreEditor.Instance)
+            //    {
+            //        ArtMoreEditor.Instance.SetTarget(container, true);
+            //    }
+            //    ContainerDel?.Invoke(container);
+            //    if (container != null)
+            //    {
+            //        container.DestroyArt();
+            //    }
+            //    GameNode.Instance.GoodsContainerMap.Remove(id);
+            //}
+            /////真实删除
+            //if (isRealDel)
+            //{
+            //    ///删除物体的id
+            //    ///先查找物体id对应的Goods
+            //    if (GameNode.Instance.PageGoods.ContainsKey(id))
+            //    {
+            //        ///获得Goods
+            //        var good = GameNode.Instance.PageGoods[id];
+            //        ///查找页对应的物体的id
+            //        if (GameNode.Instance.PageGoodsId.ContainsKey(good.scene_id))
+            //        {
+            //            ///获取页对应的id列表,并
+            //            var list = GameNode.Instance.PageGoodsId[good.scene_id];
+            //            if (list != null && list.Contains(id))
+            //            {
+            //                list.Remove(id);
+            //            }
+            //        }
+            //        GameNode.Instance.PageGoods.Remove(id);
+            //        ContainerDel?.Invoke(null);
+            //    }
+            //}
+        }
+
+        public void SendGoodsTransfer(GoodsInfo info)
+        {
+            //goodsDataList.Add(info);
+            ////WSHandler.Room.BroadcastGood(goodsDataList);
+            //goodsDataList.Clear();
+        }
+        public void SendTransfer(GoodsInfo info)
+        {
+            //goodsDataList.Add(info);
+            ////WSHandler.Room.TransmitGood(goodsDataList);
+            //goodsDataList.Clear();
+        }
+        /// <summary>
+        /// 当新用户进入时的事件
+        /// </summary>
+        /// <param name="userList"></param>
+        //public void OnUserChange(List<Peer> userList, bool isJoin)
+        //{
+        //    if (GameNode.Instance.UserMap == null)
+        //    {
+        //        GameNode.Instance.UserMap = new Dictionary<string, PlayerContainer>();
+        //    }
+        //    if (userList != null)
+        //    {
+        //        for (int i = 0; i < userList.Count; i++)
+        //        {
+        //            if (GameNode.Instance.UserMap.ContainsKey(userList[i].PeerId))
+        //            {
+        //                if (isJoin)
+        //                {
+        //                    continue;
+        //                }
+        //                else
+        //                {
+        //                    var container = GameNode.Instance.UserMap[userList[i].PeerId];
+        //                    container.StopSyn();
+
+        //                    container.DestroyArt();
+        //                    UserChange?.Invoke(userList[i].PeerId, false);
+        //                    GameNode.Instance.UserMap.Remove(userList[i].PeerId);
+        //                }
+        //            }
+        //            else
+        //            {
+        //                if (isJoin)
+        //                {
+        //                    ArtInfo info = GetArtInfo(PlayerContainer.userArtId);
+        //                    if (info != null)
+        //                    {
+        //                        //string cName = info.ContainerName;
+        //                        //if (string.IsNullOrEmpty(cName))
+        //                        //{
+        //                        //    cName = PlayerContainer.containerName;
+        //                        //}
+        //                        //ArtHandler handler = CreateArtHandler(info, PlayerContainer.containerName);
+        //                        ArtHandler handler = CreateArtHandler(info);
+        //                        var container = handler.CreateArt();
+        //                        if (container != null)
+        //                        {
+        //                            if (container.ArtComponent != null && container.ArtComponent.GetInstace())
+        //                            {
+        //                                if (container.ArtComponent is PlayerContainer)
+        //                                {
+        //                                    (container.ArtComponent as PlayerContainer).SetPeer(userList[i]);
+        //                                    GameNode.Instance.UserMap.Add(userList[i].PeerId, container.ArtComponent as PlayerContainer);
+        //                                    UserChange?.Invoke(userList[i].PeerId, true);
+        //                                }
+        //                            }
+        //                        }
+        //                    }
+        //                    else
+        //                    {
+        //                        UnityLog.Instance.LogError(PlayerContainer.userArtId + " cant find art");
+        //                    }
+        //                }
+        //                else
+        //                {
+        //                    continue;
+        //                }
+        //            }
+        //        }
+        //    }
+        //}
+        /// <summary>
+        /// 删除场景的物体
+        /// </summary>
+        /// <param name="id"></param>
+        /// <param name="isOnlyScene"></param>
+        public void DelGoodsById(int id)
+        {
+            //bool isCanDel = true;
+
+            //if (GameNode.Instance.PageGoods.ContainsKey(id))
+            //{
+            //    var goods = GameNode.Instance.PageGoods[id];
+            //    if (goods.scene_id == CommonMethod.currentScene)
+            //    {
+            //        isCanDel = true;
+            //    }
+            //}
+
+            //if (isCanDel)
+            //{
+            //    WSHandler.Room.DeleteGood(new int[] { id });
+            //}
+        }
+        public void DelGoodsByIds(List<int> ids)
+        {
+            //List<int> list = new List<int>();
+            //for (int i = 0; i < ids.Count; i++)
+            //{
+            //    int id = ids[i];
+            //    if (GameNode.Instance.PageGoods.ContainsKey(id))
+            //    {
+            //        var goods = GameNode.Instance.PageGoods[id];
+            //        if (goods.scene_id == CommonMethod.currentScene)
+            //        {
+            //            list.Add(id);
+            //        }
+            //    }
+            //}
+            //if (list.Count > 0)
+            //{
+            //    WSHandler.Room.DeleteGood(list.ToArray());
+            //}
+        }
+
+        /// <summary>
+        /// 翻页的数据处理
+        /// 翻页时注意,删除旧的数据
+        /// 同步新的数据
+        /// </summary>
+        /// <param name="all"></param>
+        /// <param name="current"></param>
+        public void OnChangePage(int all, int current)
+        {
+            //if (GameNode.Instance)
+            //{
+            //    if (GameNode.Instance.DefaultPageIndex != current)
+            //    {
+            //        if (GameNode.Instance.DefaultPageIndex >= 0)
+            //        {
+            //            if (GameNode.Instance.PageGoodsId.ContainsKey(GameNode.Instance.DefaultPageIndex))
+            //            {
+            //                var list = GameNode.Instance.PageGoodsId[GameNode.Instance.DefaultPageIndex];
+            //                for (int i = 0; i < list.Count; i++)
+            //                {
+            //                    GoodsDelSync(list[i], false);
+            //                }
+            //            }
+            //        }
+            //        if (ModelEditBtn)
+            //        {
+            //            ModelEditBtn.gameObject.SetActive(false);
+            //        }
+            //        GameNode.Instance.DefaultPageIndex = current;
+            //        if (GameNode.Instance.DefaultPageIndex >= 0)
+            //        {
+            //            if (GameNode.Instance.PageGoodsId.ContainsKey(GameNode.Instance.DefaultPageIndex))
+            //            {
+            //                var list = GameNode.Instance.PageGoodsId[GameNode.Instance.DefaultPageIndex];
+            //                for (int i = 0; i < list.Count; i++)
+            //                {
+            //                    if (GameNode.Instance.PageGoods.ContainsKey(list[i]))
+            //                    {
+            //                        SyncGoods(GameNode.Instance.PageGoods[list[i]], false);
+            //                    }
+            //                }
+            //            }
+            //        }
+            //    }
+            //}
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInfoMgr.cs.meta

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

+ 48 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs

@@ -0,0 +1,48 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 美术资源实例化
+    /// </summary>
+    public interface ArtInstance
+    {
+        /// <summary>
+        /// 初始化资源
+        /// </summary>
+        /// <param name="info"></param>
+        void SetData(ArtInfo info, string containerName = "");
+        /// <summary>
+        /// 获取缩略图
+        /// </summary>
+        /// <returns></returns>
+        Texture GetIcon();
+        void GetIcon(Action<Texture> loadTex);
+        /// <summary>
+        /// 同步加载资源
+        /// </summary>
+        /// <returns></returns>
+        UnityEngine.Object LoadArt();
+        /// <summary>
+        /// 异步加载资源
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="process"></param>
+        /// <param name="loaded"></param>
+        void LoadArtAsyn(string path, Action<float> process, Action<UnityEngine.Object> loaded);
+        /// <summary>
+        /// 实例化对象
+        /// </summary>
+        UnityEngine.Object InstanceArt();
+        ArtComponent InstanceComponent();
+        /// <summary>
+        /// 是否已下载
+        /// </summary>
+        /// <returns></returns>
+        bool IsDownLoad();
+        void DownLoad(Action<float, float> downProcess, Action<string, byte[]> downComplete);
+        float DownProcess { get; set; }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstance.cs.meta

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

+ 266 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs

@@ -0,0 +1,266 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using UnityEngine;
+using UnityEngine.Networking;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 资源实例化抽象类
+    /// 此类按照Resource方式进行简单实现
+    /// </summary>
+    public abstract class ArtInstanceHandler : ArtInstance
+    {
+        private ArtInfo info;
+
+        public ArtInfo Info { get => info; set => info = value; }
+        public UnityEngine.Object LoadCache { get => loadCache; set => loadCache = value; }
+
+        private UnityEngine.Object loadCache;
+        private string localPath;
+        private Texture artIcon;
+        private float process;
+
+        /// <summary>
+        /// 网络中下载到本地的文件路径
+        /// </summary>
+        public string localExtralPath
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(localPath))
+                {
+                    localPath = Path.Combine(BuildConfig.Instance.UserPath, Info.ArtType.ToString());
+                }
+                return localPath;
+            }
+        }
+
+        public float DownProcess { get => process; set => process = value; }
+
+        /// <summary>
+        /// 获取缩略图
+        /// </summary>
+        /// <returns></returns>
+        public virtual Texture GetIcon()
+        {
+            if (!artIcon)
+            {
+                if (Info != null && (Info.InstaceType == InstaceType.References || Info.InstaceType == InstaceType.ResourceLoad ||
+                    Info.InstaceType == InstaceType.UnityBase))
+                {
+                    return artIcon = Resources.Load<Texture>(Info.Icon);
+                }
+            }
+            return artIcon;
+        }
+        /// <summary>
+        /// 实例化物体
+        /// </summary>
+        /// <returns></returns>
+        public virtual UnityEngine.Object InstanceArt()
+        {
+            if (LoadCache)
+            {
+                return GameObject.Instantiate(LoadCache);
+            }
+            return null;
+        }
+
+        /// <summary>
+        /// 同步加载资源
+        /// </summary>
+        /// <returns></returns>
+        public virtual UnityEngine.Object LoadArt()
+        {
+            if (Info != null)
+            {
+                return LoadCache = Resources.Load(Info.Url);
+            }
+            return null;
+        }
+        /// <summary>
+        /// 异步加载资源
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="process"></param>
+        /// <param name="loaded"></param>
+        public virtual void LoadArtAsyn(string path, Action<float> process, Action<UnityEngine.Object> loaded)
+        {
+            if (Info != null)
+            {
+                TimerMgr.Instance.StartCoroutine(LoadAsyn(path, process, loaded));
+            }
+            else
+            {
+                LoadCache = null;
+                process?.Invoke(1);
+                loaded?.Invoke(LoadCache);
+            }
+        }
+        /// <summary>
+        /// 异步加载
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="process"></param>
+        /// <param name="loaded"></param>
+        /// <returns></returns>
+        public virtual IEnumerator LoadAsyn(string path, Action<float> process, Action<UnityEngine.Object> loaded)
+        {
+            var sync = Resources.LoadAsync(path);
+            while (!sync.isDone)
+            {
+                process?.Invoke(sync.progress);
+                yield return new WaitForFixedUpdate();
+            }
+            LoadCache = sync.asset;
+            process?.Invoke(1);
+            loaded?.Invoke(LoadCache);
+        }
+        /// <summary>
+        /// 初始化数据
+        /// </summary>
+        /// <param name="info"></param>
+        public virtual void SetData(ArtInfo info, string containerName = "")
+        {
+            this.Info = info;
+        }
+        /// <summary>
+        /// 创建资源对应的组件
+        /// </summary>
+        /// <returns></returns>
+        public virtual ArtComponent InstanceComponent()
+        {
+            if (Info != null && !string.IsNullOrEmpty(Info.Component))
+            {
+                return ArtInfoMgr.Instance.InstanceComponent(Info.Component);
+            }
+            return null;
+        }
+        /// <summary>
+        /// 获取外部资源的缩略图
+        /// 如果是模型,获取icon的图片资源
+        /// 如果是图片,直接获取本身url作为缩略图
+        /// 如果是视频,则自行获取对应的缩略图:使用VideoPlayer读取对应帧,此处不提供方法
+        /// </summary>
+        /// <param name="loadTex"></param>
+        public virtual void GetIcon(Action<Texture> loadTex)
+        {
+            if (artIcon)
+            {
+                loadTex?.Invoke(artIcon);
+                return;
+            }
+            if (Info.ArtType == ArtType.Model || Info.ArtType == ArtType.Image || Info.ArtType == ArtType.Movies)
+            {
+                string url = Info.Icon;
+                if (string.IsNullOrEmpty(url) && Info.ArtType == ArtType.Image)
+                {
+                    url = Info.Url;
+                }
+                string serverPath = BuildConfig.Instance.ServerUrl + "/" + url;// Path.Combine(ResourcesManager.ArtServerPath, url);
+                string filePath = Path.Combine(localExtralPath, url);
+                try
+                {
+                    ///文件不存在,下载
+                    ///下载后,加载
+                    DownloadHandlerTexture texHander = new DownloadHandlerTexture(true);
+                    if (!File.Exists(filePath))
+                    {
+                        TimerMgr.Instance.StartCoroutine(DataFileUtil.DownLoadData(serverPath, filePath, (isComplete, handler) =>
+                        {
+                            LoadTexture(loadTex, handler.downloadHandler);
+                        }, texHander));
+                    }
+                    else
+                    {
+                        TimerMgr.Instance.StartCoroutine(DataFileUtil.RequestDownData(@"file://" + filePath, (isComplete, handler) =>
+                        {
+                            LoadTexture(loadTex, handler.downloadHandler);
+                        }, texHander));
+                    }
+                }
+                catch (Exception ex)
+                {
+                    UnityLog.LogError(JsonConvert.SerializeObject(Info) + "icon error" + ex.ToString());
+                }
+            }
+            else if (Info.ArtType == ArtType.Movies)
+            {
+                loadTex?.Invoke(null);
+            }
+        }
+        public virtual void LoadTexture(Action<Texture> loadIcon, DownloadHandler handler)
+        {
+            Texture texture = null;
+            if (handler != null)
+            {
+                var texHandler = handler as DownloadHandlerTexture;
+                if (texHandler != null)
+                {
+                    texture = texHandler.texture;
+                }
+                else
+                {
+                    UnityLog.LogError(JsonConvert.SerializeObject(Info) + "icon load error");
+                }
+            }
+            else
+            {
+                UnityLog.LogError(JsonConvert.SerializeObject(Info) + "icon handler error");
+            }
+            if (texture == null)
+            {
+                UnityLog.LogError(JsonConvert.SerializeObject(Info) + "no iconread");
+            }
+            loadIcon?.Invoke(texture);
+            artIcon = texture;
+        }
+        /// <summary>
+        /// 判断是否已下载指定文件
+        /// </summary>
+        /// <returns></returns>
+        public bool IsDownLoad()
+        {
+            string filePath = Path.Combine(localExtralPath, Info.Url);
+            return File.Exists(filePath);
+        }
+        public string GetFilePath(string url)
+        {
+            string[] arr = url.Split('/');
+            string path = url;
+            if (arr.Length > 2)
+            {
+                path = "";
+                for (int i = arr.Length - 2; i < arr.Length; i++)
+                {
+                    if (i != arr.Length -1)
+                    {
+                        path += arr[i] + "/";
+                    }
+                    else
+                    {
+                        path += arr[i];
+                    }
+                }
+            }
+            UnityLog.Log(path);
+            return path;
+        }
+        public void DownLoad(Action<float, float> downProcess, Action<string, byte[]> downComplete)
+        {
+            string url = Info.Url;
+            string serverPath = Path.Combine(BuildConfig.Instance.ServerUrl, url);
+            string filePath = Path.Combine(localExtralPath, GetFilePath(url));
+            TimerMgr.Instance.StartCoroutine(DataFileUtil.DownLoadData(serverPath, filePath, (string path, UnityWebRequest handler) =>
+            {
+                downComplete?.Invoke(path, handler.downloadHandler.data);
+            }
+            ));
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtInstanceHandler.cs.meta

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

+ 38 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs

@@ -0,0 +1,38 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 美术资源的展示
+    /// </summary>
+    public interface ArtPlay
+    {
+        /// <summary>
+        /// 添加到容器中,模型,预制体,图片等加入到容器中展示
+        /// </summary>
+        /// <param name="obj"></param>
+        void AddToNode(UnityEngine.Object obj);
+        /// <summary>
+        /// 是否需要加载,有些资源无需加载,例如视频和UnityBase
+        /// </summary>
+        /// <returns></returns>
+        bool IsNeedLoad();
+        /// <summary>
+        /// 是否需要实例化,图片无需实例化,加载可用
+        /// </summary>
+        /// <returns></returns>
+        bool IsNeedInstance();
+        /// <summary>
+        /// 创建容器
+        /// </summary>
+        /// <returns></returns>
+        ArtContainer CreateContainer();
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        /// <param name="info"></param>
+        void SetData(ArtInfo info,string containerName="");
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtPlay.cs.meta

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

+ 38 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs

@@ -0,0 +1,38 @@
+using System.Collections.Generic;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    public class ArtResConf : ScriptableObject
+    {
+        public List<Object> resModelList;
+        public ArtType artType;
+        public InstaceType instaceType = InstaceType.References;
+#if UNITY_EDITOR
+
+        [MenuItem("Assets/Create/DataBase/ArtResConf", false, 0)]
+        static void CreateDynamicConf()
+        {
+            Object obj = Selection.activeObject;
+            if (obj)
+            {
+                string path = AssetDatabase.GetAssetPath(obj);
+                ArtResConf bullet = CreateInstance<ArtResConf>();
+                if (bullet)
+                {
+                    string confName = UnityUtil.TryGetName<ArtResConf>(path);
+                    AssetDatabase.CreateAsset(bullet, confName);
+                }
+                else
+                {
+                    Debug.Log(typeof(ArtResConf) + " is null");
+                }
+            }
+        }
+#endif
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/ArtResConf.cs.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor.meta

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

+ 43 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs

@@ -0,0 +1,43 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 资源
+    /// </summary>
+    [InitializeOnLoad]
+    [CustomEditor(typeof(ArtResConf))]
+    public class ArtResConfEditor : Editor
+    {
+        private ArtResConf artConf;
+        private bool isForceUpdate;
+        private void OnEnable()
+        {
+            artConf = target as ArtResConf;
+        }
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+            isForceUpdate = GUILayout.Toggle(isForceUpdate, "强制刷新");
+            if (GUILayout.Button("资源添加到xml", GUILayout.Width(200)))
+            {
+                if (artConf.instaceType == InstaceType.UnityBase)
+                {
+                    ArtInfoMgr.Instance.AddDefaultArt(artConf.artType);
+                }
+                else
+                {
+                    ArtInfoMgr.Instance.AddArtInfo(artConf.resModelList, artConf.artType, artConf.instaceType, isForceUpdate, artConf.name);
+                }
+            }
+            if (GUILayout.Button("删除此列表资源", GUILayout.Width(200)))
+            {
+                ArtInfoMgr.Instance.RemoveArtInfo(artConf.resModelList);
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Editor/ArtResConfEditor.cs.meta

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

+ 21 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs

@@ -0,0 +1,21 @@
+using PublicTools.Unity;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 物体的同步对象数据
+    /// </summary>
+    public struct GoodsInfo
+    {
+        public int rid;
+        public string art_id;
+        public string goods_name;
+        public string goods_extended;
+        public int id;
+        public string goods_info;
+        public int status;
+        public int scene_id;
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/GoodsInfo.cs.meta

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

+ 13 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs

@@ -0,0 +1,13 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    public struct Posture
+    {
+        public Vector3 position;
+        public Vector3 angle;
+        public Vector3 scale;
+        public int count;
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Art/Posture.cs.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component.meta

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

+ 38 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/ArtComponent.cs

@@ -0,0 +1,38 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 美术资源的组件接口
+    /// 组件依附于容器,并扩展容器的初始化接口
+    /// 组件可能是文本,视频窗口,图片容器等等
+    /// </summary>
+    public interface ArtComponent
+    {
+        /// <summary>
+        /// 初始化容器
+        /// </summary>
+        /// <param name="art"></param>
+        /// <param name="info"></param>
+        void SetContainer(ArtContainerHandler container,UnityEngine.Object art, ArtInfo info);
+        /// <summary>
+        /// 容器的同步
+        /// </summary>
+        /// <param name="goods"></param>
+        /// <param name="smooth"></param>
+        void TransferSyn(GoodsInfo goods, bool smooth = true);
+        /// <summary>
+        /// 发送同步状态
+        /// </summary>
+        /// <param name="state"></param>
+        /// <param name="status"></param>
+        void SendTransfer(int state, int status);
+        /// <summary>
+        /// 获取组件的实例
+        /// </summary>
+        /// <returns></returns>
+        GameObject GetInstace();
+        void DestroyArt();
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/ArtComponent.cs.meta

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

+ 74 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/GoodsComponen.cs

@@ -0,0 +1,74 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 物体的组件
+    /// </summary>
+    public class GoodsComponen : MonoBehaviour, ArtComponent
+    {
+        private ArtContainerHandler container;
+        public ArtContainerHandler Container { get => container; }
+        /// <summary>
+        /// 删除资源
+        /// </summary>
+        public virtual void DestroyArt()
+        {
+            if (Container)
+            {
+                Destroy(Container.gameObject);
+            }
+            //Destroy(gameObject);
+        }
+
+        /// <summary>
+        /// 引用实例
+        /// </summary>
+        /// <returns></returns>
+        public virtual GameObject GetInstace()
+        {
+            return gameObject;
+        }
+
+        /// <summary>
+        /// 发送同步数据
+        /// </summary>
+        /// <param name="state"></param>
+        /// <param name="status"></param>
+        public virtual void SendTransfer(int state, int status)
+        {
+            if (Container != null)
+            {
+                Container.SendTransfer(state, status);
+            }
+        }
+        /// <summary>
+        /// 设置容器
+        /// </summary>
+        /// <param name="container"></param>
+        /// <param name="art"></param>
+        /// <param name="info"></param>
+        public virtual void SetContainer(ArtContainerHandler container, Object art, ArtInfo info)
+        {
+            this.container = container;
+            //if (art is GameObject)
+            //{
+            //    GameObject obj = art as GameObject;
+            //    UnityUtil.SetParent(transform, obj.transform);
+            //}
+        }
+
+        /// <summary>
+        /// 同步数据
+        /// </summary>
+        /// <param name="goods"></param>
+        /// <param name="smooth"></param>
+        public virtual void TransferSyn(GoodsInfo goods, bool smooth = true)
+        {
+
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/GoodsComponen.cs.meta

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

+ 107 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/PictureComponent.cs

@@ -0,0 +1,107 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using XRTool.Util;
+using XRTool.WorldUI;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 图片组件
+    /// </summary>
+    public class PictureComponent : UIComponent
+    {
+        private XRIcon xrIcon;
+        /// <summary>
+        /// 图片
+        /// </summary>
+        public XRIcon XrIcon
+        {
+            get
+            {
+                if (!xrIcon)
+                {
+                    xrIcon = GetComponent<XRIcon>();
+                }
+                return xrIcon;
+            }
+        }
+        /// <summary>
+        /// 设置组件
+        /// </summary>
+        /// <param name="artContainer"></param>
+        /// <param name="art"></param>
+        /// <param name="info"></param>
+        public override void SetContainer(ArtContainerHandler artContainer, UnityEngine.Object art, ArtInfo info)
+        {
+            base.SetContainer(artContainer, art, info);
+            print(art);
+            if (art is Texture2D || art is Sprite||art is Texture)
+            {
+                Sprite sprite = null;
+                if (art is Sprite)
+                {
+                    sprite = art as Sprite;
+                }
+                Texture2D img = art as Texture2D;
+                Vector2 size = Vector2.zero;
+                if (img)
+                {
+                    size.x = img.width;
+                    size.y = img.height;
+                }
+                if (sprite)
+                {
+                    size.x = sprite.texture.width;
+                    size.y = sprite.texture.height;
+                }
+                while (size.magnitude > 2000)
+                {
+                    size /= 2;
+                }
+                while (size.magnitude < 100)
+                {
+                    size *= 2;
+                }
+                if (DlgContainer && DlgContainer.Dlg)
+                {
+                    DlgContainer.Dlg.DlgTrans.sizeDelta = size;
+                    DlgContainer.Dlg.SetScale(size, 1);
+                    if (DlgContainer.Transfer && DlgContainer.Transfer.IsInit)
+                    {
+                        DlgContainer.Transfer.RemoveBound();
+
+                        //DlgContainer.Transfer.RemoveBound();
+                        TimerMgr.Instance.CreateTimer(() => { DlgContainer.Transfer.IsDragEnable = false; }, 0);
+                    }
+                    //TimerMgr.Instance.CreateTimer(() =>
+                    //{
+                    //    DlgContainer.Transfer.RemoveBound();
+                    //}, 0);
+
+                    //TimerMgr.Instance.CreateTimer(() =>
+                    //{
+                    //    DlgContainer.Transfer.IsDragEnable = false;
+                    //}, 0.01f);
+
+                    //DlgContainer.Transfer.RemoveBound();
+                    //TimerMgr.Instance.CreateTimer(() => { DlgContainer.Transfer.IsDragEnable = false; }, 0.01f);
+                }
+                if (XrIcon)
+                {
+                    XrIcon.rectTransform.offsetMax = Vector2.zero;
+                    XrIcon.rectTransform.offsetMin = Vector2.zero;
+                    if (sprite)
+                    {
+                        XrIcon.AutoSetSprite(sprite);
+                    }
+                    else if (img)
+                    {
+                        XrIcon.AutoSetSprite(img);
+                    }
+                }
+
+            }
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/PictureComponent.cs.meta

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

+ 24 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/UIComponent.cs

@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    public class UIComponent : GoodsComponen
+    {
+        private WorldDlgContainer dlgContainer;
+
+        public WorldDlgContainer DlgContainer { get => dlgContainer; set => dlgContainer = value; }
+
+        public override void SetContainer(ArtContainerHandler container, Object art, ArtInfo info)
+        {
+            DlgContainer = container as WorldDlgContainer;
+            if (DlgContainer&&DlgContainer.Dlg && DlgContainer.Dlg.Container)
+            {
+                UnityUtil.SetParent(DlgContainer.Dlg.Container, transform);
+            }
+            base.SetContainer(container, art, info);
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Component/UIComponent.cs.meta

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

+ 8 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container.meta

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

+ 152 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainer.cs

@@ -0,0 +1,152 @@
+using ShadowStudio.Tool;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 美术资源容器
+    /// </summary>
+    public interface ArtContainer
+    {
+        /// <summary>
+        /// 获取物体的信息
+        /// </summary>
+        /// <returns></returns>
+        GoodsInfo GetGoodsInfo();
+
+        void AddArtComponent(ArtComponent component);
+        /// <summary>
+        /// 添加到容器
+        /// </summary>
+        /// <param name="art"></param>
+        void AddToContainer(UnityEngine.Object art, ArtInfo info);
+        /// <summary>
+        /// 获取容器类型
+        /// </summary>
+        /// <returns></returns>
+        ArtType GetArtType();
+        /// <summary>
+        /// 获取容器的实例
+        /// </summary>
+        /// <returns></returns>
+        GameObject GetInstace();
+        /// <summary>
+        /// 销毁容器
+        /// </summary>
+        void DestroyArt();
+        /// <summary>
+        /// 设置当前的容器的显示或隐藏
+        /// </summary>
+        /// <param name="isShow"></param>
+        void SetArtActive(bool isShow);
+        /// <summary>
+        /// 播放动效
+        /// </summary>
+        void PlayEffect();
+        /// <summary>
+        /// 发送当前的姿态
+        /// 此函数已失效,请使用SendTransfer(int state, int status);
+        /// </summary>
+        //void SendTransfer(int state, bool isEditting);
+        void SendTransfer(int state, int status);
+        /// <summary>
+        /// 同步容器的状态
+        /// </summary>
+        void TransferSyn(GoodsInfo goods, bool smooth = true);
+        /// <summary>
+        /// 锁定此容器
+        /// </summary>
+        void LockContainer();
+        /// <summary>
+        /// 解锁此容器
+        /// </summary>
+        void UnLockContainer();
+        /// <summary>
+        /// 能否被编辑
+        /// </summary>
+        /// <returns></returns>
+        bool CanEditor();
+        /// <summary>
+        /// 获取容器的缩略图
+        /// </summary>
+        /// <returns></returns>
+        Texture GetContainerIcon();
+        void GetContainerIcon(Action<Texture> load);
+        /// <summary>
+        /// 设置资源的帮助实例化类
+        /// </summary>
+        /// <param name="handler"></param>
+        void SetArtHandler(ArtHandler handler);
+        /// <summary>
+        /// 设置物体选中状态
+        /// </summary>
+        void SetSelect();
+        /// <summary>
+        /// 设置物体非选中状态
+        /// </summary>
+        void UnSetSelect();
+        /// <summary>
+        /// 重置编辑菜单的位置
+        /// </summary>
+        void ResetEditorPosition();
+        /// <summary>
+        /// 获取物体编辑节点
+        /// </summary>
+        /// <returns></returns>
+        Transform GetEditorCenter();
+        /// <summary>
+        /// 后退
+        /// </summary>
+        bool GoBack();
+        /// <summary>
+        /// 前进
+        /// </summary>
+        bool GoAhead();
+        /// <summary>
+        /// 获取可后退的步数
+        /// </summary>
+        /// <returns></returns>
+        int BackCount();
+        /// <summary>
+        /// 获取可前进的步数
+        /// </summary>
+        /// <returns></returns>
+        int AheadCount();
+        /// <summary>
+        /// 克隆此物体
+        /// </summary>
+        void CloneContainer();
+        /// <summary>
+        /// 物体的坐标,本地相对坐标
+        /// </summary>
+        Vector3 Position { get; set; }
+        /// <summary>
+        /// 物体的角度,本地相对角度
+        /// </summary>
+        Vector3 Angle { get; set; }
+        /// <summary>
+        /// 物体的缩放值
+        /// </summary>
+        Vector3 Scale { get; set; }
+        /// <summary>
+        /// 此物体距离头部的距离
+        /// </summary>
+        float Distance { get; }
+        /// <summary>
+        /// 物体的透明度
+        /// </summary>
+        float Alpha { get; set; }
+        /// <summary>
+        /// 物体的颜色值
+        /// </summary>
+        Color GoodsColor { get; set; }
+        /// <summary>
+        /// 物体编辑
+        /// </summary>
+        TransferCell Transfer { get; set; }
+        ArtComponent ArtComponent{ get; }
+        void UpdateProcess(float process);
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainer.cs.meta

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

+ 610 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainerHandler.cs

@@ -0,0 +1,610 @@
+using DG.Tweening;
+using LitJson;
+using PublicTools.Unity;
+using ShadowStudio.Model;
+using ShadowStudio.Tool;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using XRTool.Util;
+using static BoundingBox;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 容器抽象类
+    /// </summary>
+    public abstract class ArtContainerHandler : MonoBehaviour, ArtContainer
+    {
+        public ArtType artType;
+        private ArtInfo info;
+        //private GoodState goodsState = GoodState.Init;
+        /// <summary>
+        /// 同步时不会传递初始化符合
+        /// </summary>
+        private TransferState transferState = TransferState.Init;
+        public ArtInfo Info { get => info; set => info = value; }
+        public float smoothTween = 3f;
+        /// <summary>
+        /// 保存的向服务器发送数据的对象
+        /// </summary>
+        public GoodsInfo data = new GoodsInfo();
+        private ArtHandler handler;
+        private Transform editorRoot;
+
+        public virtual Transform EditorRoot { get => editorRoot; set => editorRoot = value; }
+        public virtual Vector3 Position
+        {
+            get => transform.localPosition; set
+            {
+                transform.localPosition = value;
+                if (Transfer)
+                {
+                    Transfer.OnRotateStopped();
+                }
+            }
+        }
+        public virtual Vector3 Angle
+        {
+            get => transform.localEulerAngles;
+            set
+            {
+                transform.localEulerAngles = value;
+                if (Transfer)
+                {
+                    Transfer.OnRotateStopped();
+                }
+            }
+        }
+        public virtual Vector3 Scale
+        {
+            get => transform.localScale;
+            set
+            {
+                transform.localScale = value;
+                if (Transfer)
+                {
+                    Transfer.OnScaleStopped();
+                }
+                //SendTransfer(2, (int)TransferState.Stop);
+            }
+        }
+
+        public virtual float Distance => Vector3.Distance(Camera.main.transform.position, transform.position);
+        private float alpha = 1;
+        public virtual float Alpha { get => 1; set => alpha = value; }
+        private Color goodsColor = Color.white;
+        private Timer autoUnLockTimer;
+        private ArtComponent artComponent;
+
+        public virtual Color GoodsColor { get => Color.white; set => goodsColor = value; }
+        /// <summary>
+        /// 虚假的定义
+        /// </summary>
+        public virtual TransferCell Transfer { get => null; set { } }
+        /// <summary>
+        /// 物体的状态
+        /// 同步服务器的状态
+        /// </summary>
+        public TransferState TransferState
+        {
+            get => transferState; set
+            {
+                if (transferState != value)
+                {
+                    transferState = value;
+                    ///同步开始,锁定物体
+                    if (transferState == TransferState.Start)
+                    {
+                        ClearTimer();
+                        LockContainer();
+                    }
+                    ///同步结束,结束锁定
+                    else if (transferState == TransferState.Over)
+                    {
+                        ClearTimer();
+                        UnLockContainer();
+                    }
+                    ///姿态同步完成,自动倒计时解除锁定状态
+                    else if (transferState == TransferState.Stop)
+                    {
+                        TransferSyn(data, false);
+                        ClearTimer();
+                        autoUnLockTimer = TimerMgr.Instance.CreateTimer(() =>
+                         {
+                             TransferState = TransferState.Over;
+                         }, 7f);
+                    }
+                }
+            }
+        }
+
+        public ArtComponent ArtComponent { get => artComponent; }
+
+        private void ClearTimer()
+        {
+            if (autoUnLockTimer != null && TimerMgr.Instance != null)
+            {
+                autoUnLockTimer = TimerMgr.Instance.DestroyTimer(autoUnLockTimer);
+            }
+        }
+        public virtual void OnDisable()
+        {
+            ClearTimer();
+        }
+
+        /// <summary>
+        /// 添加美术资源到容器中
+        /// </summary>
+        /// <param name="art"></param>
+        /// <param name="info"></param>
+        public virtual void AddToContainer(UnityEngine.Object art, ArtInfo info)
+        {
+            this.Info = info;
+            name = name + "_" + info.ArtName;
+
+            //if (ArtComponent != null)
+            //{
+            //    ArtComponent.SetContainer(this, art, info);
+            //}
+            Debug.Log("添加AddToContainer");
+            if (art is GameObject)
+            {
+                GameObject obj = art as GameObject;
+
+                //artTaskChild = obj.GetComponentInChildren<ArtTaskChild>();
+                //if (artTaskChild != null)
+                //{
+                //    XBoundingBox xBox = Transfer.BoundBox;
+                //    xBox.ActiveHandle = HandleType.Rotation;
+                //    xBox.ShowRotationHandleForX = false;
+                //    xBox.ShowRotationHandleForY = true;
+                //    xBox.ShowRotationHandleForZ = false;
+                //    xBox.ActiveAxis = AxisType.None;
+                //    artTaskChild.artContainerHandler = this;
+                //}
+                //artTaskAction = obj.GetComponentInChildren<ArtTaskAction>();
+                //if (artTaskAction != null)
+                //{
+                //    XBoundingBox xBox = Transfer.BoundBox;
+                //    xBox.ActiveHandle = HandleType.None;
+                //    xBox.ShowRotationHandleForX = false;
+                //    xBox.ShowRotationHandleForY = false;
+                //    xBox.ShowRotationHandleForZ = false;
+                //    xBox.ActiveAxis = AxisType.None;
+                //    artTaskAction.artContainerHandler = this;
+                //}
+            }
+        }
+        /// <summary>
+        /// 销毁此物体
+        /// </summary>
+        public virtual void DestroyArt()
+        {
+            if (ArtComponent != null)
+            {
+                ArtComponent.DestroyArt();
+            }
+            Destroy(gameObject);
+        }
+        /// <summary>
+        /// 获取资源的类型
+        /// </summary>
+        /// <returns></returns>
+        public virtual ArtType GetArtType()
+        {
+            return artType;
+        }
+        /// <summary>
+        /// 获取此info的信息
+        /// </summary>
+        /// <returns></returns>
+        public virtual GoodsInfo GetGoodsInfo()
+        {
+            return this.data;
+        }
+        /// <summary>
+        /// 获取实例化的数据信息
+        /// </summary>
+        /// <returns></returns>
+        public virtual GameObject GetInstace()
+        {
+            return gameObject;
+        }
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="isShow"></param>
+        public virtual void SetArtActive(bool isShow)
+        {
+            gameObject.SetActive(isShow);
+        }
+
+        public virtual void PlayEffect()
+        {
+            StartCoroutine(ContainerEffect());
+        }
+
+        private IEnumerator ContainerEffect()
+        {
+            while (string.IsNullOrEmpty(data.goods_info))
+            {
+                yield return new WaitForFixedUpdate();
+            }
+            if (!string.IsNullOrEmpty(data.goods_info))
+            {
+                transform.DOKill();
+                Posture posture = UnityUtil.GetPosture(data.goods_info);
+                Vector3 endPos = Camera.main.transform.TransformPoint(posture.position);
+
+                bool isClone = false;
+                if (data.status == (int)TransferState.Clone)
+                {
+                    isClone = true;
+                    data.status = (int)TransferState.Init;
+                }
+
+                Vector3 endScale = posture.scale;
+                if (!isClone)
+                {
+                    //if (IconItem.ItemPos != Vector3.zero)
+                    //{
+                    //    // Vector3 startPos = GameSession.Instance.GetHeadForwadPos(info.Distance / 5f, false);
+                    //    Vector3 startPos = IconItem.ItemPos;
+                    //    transform.position = startPos;
+                    //    transform.DOMove(endPos, 1f).SetEase<Tween>(Ease.OutCubic);
+                    //    IconItem.ItemPos = Vector3.zero;
+                    //}
+                    //else if (ItemView.itemPos != Vector3.zero)
+                    //{
+                    //    // Vector3 startPos = GameSession.Instance.GetHeadForwadPos(info.Distance / 5f, false);
+                    //    Vector3 startPos = ItemView.itemPos;
+                    //    transform.position = startPos;
+                    //    transform.DOMove(endPos, 1f).SetEase<Tween>(Ease.OutCubic);
+                    //    IconItem.ItemPos = Vector3.zero;
+                    //}
+                    //else
+                    //{
+                        transform.position = endPos;
+                    //}
+                }
+                else
+                {
+                    transform.localEulerAngles = posture.angle;
+                    transform.localScale = posture.scale;
+                    Vector3 startPos = endPos - Camera.main.transform.right * 0.5f;
+                    transform.position = startPos;
+                    transform.DOMove(endPos, 1f).SetEase<Tween>(Ease.OutCubic);
+                }
+                if (!isClone)
+                {
+                    Vector3 startScale = endScale / 2f;
+                    transform.localScale = startScale;
+                }
+                transform.DOScale(endScale, 0.8f).SetEase<Tween>(Ease.OutCubic).SetDelay(0.2f).OnComplete(() =>
+                {
+                    TransferState = TransferState.Over;
+                    TransferSyn(data, false);
+                    // transform.DOKill();
+                }).OnKill(() =>
+                {
+                    TransferState = TransferState.Over;
+                    TransferSyn(data, false);
+                });
+            }
+        }
+        /// <summary>
+        /// 传输同步信息
+        /// </summary>
+        /// <param name="state"></param>
+        /// <param name="status"></param>
+        public virtual void SendTransfer(int state, int status)
+        {
+            if (!string.IsNullOrEmpty(data.goods_info))
+            {
+                data.goods_info = UnityUtil.TransferToString(transform, state);
+                data.status = status;
+                if (status == (int)TransferState.Stop)
+                {
+                    ResetEditorPosition();
+                    //GameNode.Instance.PageGoods[data.id] = data;
+                }
+                if (Info != null)
+                {
+                    ///单人模式下,减少数据传输
+                    if (ArtInfoMgr.Instance.IsSingleMan() && status == (int)TransferState.Doing)
+                    {
+                        return;
+                    }
+                    if (Info.ImmediateSyn)
+                    {
+                        ArtInfoMgr.Instance.SendGoodsTransfer(data);
+                    }
+                    else
+                    {
+                        ArtInfoMgr.Instance.SendTransfer(data);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 同步物体状态
+        /// 初始化状态时,不同步
+        /// 当物体处于catch或者release状态时进行同步
+        /// </summary>
+        /// <param name="goods"></param>
+        /// <param name="smooth"></param>
+        public virtual void TransferSyn(GoodsInfo goods, bool smooth = true)
+        {
+            //if (!string.IsNullOrEmpty(goods.goods_info))
+            //{
+            //    data = goods;
+            //    Posture posture = UnityUtil.GetPosture(goods.goods_info);
+            //    if (TransferState != TransferState.Init)
+            //    {
+            //        if ((TransferState)goods.status != TransferState.Init)
+            //        {
+            //            TransferState = (TransferState)goods.status;
+            //        }
+
+            //        if (TransferState == TransferState.Stop)
+            //        {
+            //            smooth = false;
+            //            GameNode.Instance.PageGoods[data.id] = data;
+            //        }
+            //        else if (TransferState == TransferState.Over)
+            //        {
+            //            if (ArtComponent != null)
+            //            {
+            //                ArtComponent.TransferSyn(goods, smooth);
+            //            }
+            //            return;
+            //        }
+            //        if (smooth)
+            //        {
+            //            if (posture.count >= 0)
+            //            {
+            //                transform.localPosition = Vector3.Lerp(transform.localPosition, posture.position, (Time.deltaTime * smoothTween));
+            //            }
+            //            if (posture.count >= 1)
+            //            {
+            //                Quaternion q = Quaternion.Euler(posture.angle);
+            //                transform.localRotation = Quaternion.Lerp(transform.localRotation, q, (Time.deltaTime * smoothTween));
+            //            }
+            //            if (posture.count >= 2)
+            //            {
+            //                transform.localScale = Vector3.Lerp(transform.localScale, posture.scale, (Time.deltaTime * smoothTween));
+            //            }
+            //        }
+            //        else
+            //        {
+            //            if (posture.count >= 0)
+            //            {
+            //                transform.DOLocalMove(posture.position, Vector3.Distance(posture.position, transform.position) / (smoothTween * smoothTween));
+            //            }
+            //            if (posture.count >= 1)
+            //            {
+            //                transform.DOLocalRotate(posture.angle, 0.1f);
+            //            }
+            //            if (posture.count >= 2)
+            //            {
+            //                transform.DOScale(posture.scale, 0.1f);
+            //            }
+            //        }
+            //    }
+            //}
+            //if (ArtComponent != null)
+            //{
+            //    ArtComponent.TransferSyn(goods, smooth);
+            //}
+
+            //if (artTaskAction != null)
+            //{
+            //    JsonData dataInfo = new JsonData();
+            //    try
+            //    {
+            //        dataInfo = JsonMapper.ToObject(data.goods_extended);
+            //        if (dataInfo["task"] != null)
+            //        {
+            //            artTaskAction.showType(dataInfo["task"].ToString());
+            //        }
+            //    }
+            //    catch
+            //    {
+
+            //    }
+            //}
+        }
+
+        /// <summary>
+        /// 锁定此容器
+        /// 将此容器设置为不可编辑状态,取消此容器的选中效果等等
+        /// </summary>
+        public virtual void LockContainer()
+        {
+
+        }
+        /// <summary>
+        /// 解锁此容器
+        /// 将此容器设置为可编辑状态
+        /// </summary>
+        public virtual void UnLockContainer()
+        {
+
+        }
+
+        /// <summary>
+        /// 当处于Release状态时可被编辑(删除)
+        /// </summary>
+        /// <returns></returns>
+        public bool CanEditor()
+        {
+            return TransferState == TransferState.Over;
+        }
+
+        public void DelArtSync()
+        {
+            //WSHandler.Room.DeleteGood(new int[] { data.id });
+        }
+
+        public virtual Texture GetContainerIcon()
+        {
+            if (handler != null)
+            {
+                return handler.GetIcon();
+            }
+            return null;
+        }
+        public virtual void GetContainerIcon(Action<Texture> load)
+        {
+            if (handler != null)
+            {
+                handler.GetIcon(load);
+            }
+            else
+            {
+                load?.Invoke(null);
+            }
+        }
+
+        public virtual void SetArtHandler(ArtHandler handler)
+        {
+            this.handler = handler;
+        }
+
+
+        /// <summary>
+        /// 设置此容器的选中状态
+        /// </summary>
+        public virtual void SetSelect()
+        {
+
+        }
+
+        public virtual void UnSetSelect()
+        {
+
+        }
+
+        public Transform GetEditorCenter()
+        {
+            if (!EditorRoot)
+            {
+                var obj = new GameObject(name + "_EditorRoot");
+                EditorRoot = obj.transform;
+                UnityUtil.SetParent(transform, EditorRoot);
+            }
+            ResetEditorPosition();
+            return EditorRoot;
+        }
+        /// <summary>
+        /// 计算位置信息
+        /// </summary>
+        public virtual void ResetEditorPosition()
+        {
+
+        }
+        /// <summary>
+        /// 后退
+        /// </summary>
+        /// <returns></returns>
+        public virtual bool GoBack()
+        {
+            return false;
+        }
+        /// <summary>
+        /// 前进
+        /// </summary>
+        /// <returns></returns>
+        public virtual bool GoAhead()
+        {
+            return false;
+        }
+        /// <summary>
+        /// 后退的步骤数量
+        /// </summary>
+        /// <returns></returns>
+        public virtual int BackCount()
+        {
+            return 0;
+        }
+        /// <summary>
+        /// 前进的步骤数量
+        /// </summary>
+        /// <returns></returns>
+        public virtual int AheadCount()
+        {
+            return 0;
+        }
+        public virtual Vector3 GetClonePoint()
+        {
+            var root = GetEditorCenter();
+            Vector3 point = transform.position;
+            point = root.InverseTransformPoint(point);
+            point += Vector3.right * 0.5f;
+            return root.TransformPoint(point);
+        }
+
+        public virtual void CloneContainer()
+        {
+            //Vector3 point = GetClonePoint();
+            //string datainfo = UnityUtil.TransferToString(GameNode.Instance.transform.InverseTransformPoint(point), transform.localEulerAngles, transform.localScale, 2);
+            //GoodsInfo tmp = data;
+            //tmp.id = 0;
+            //tmp.goods_info = datainfo;
+            //tmp.status = (int)TransferState.Clone;
+            //WSHandler.Room.CreateGood(tmp);
+            //Destroy(tmp);
+        }
+        /// <summary>
+        /// 设置对应的组件
+        /// </summary>
+        /// <param name="component"></param>
+        public virtual void AddArtComponent(ArtComponent component)
+        {
+            this.artComponent = component;
+            try
+            {
+                if (artComponent != null && artComponent.GetInstace())
+                {
+                    Transform target = artComponent.GetInstace().transform;
+                    if (target)
+                    {
+                        UnityUtil.SetParent(transform, target);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                UnityLog.LogError(ex.ToString());
+                artComponent = null;
+            }
+        }
+
+        public virtual void UpdateProcess(float process)
+        {
+
+        }
+
+
+        public void ArtState(string type, string info)
+        {
+            JsonData dataInfo = new JsonData();
+            try
+            {
+                dataInfo = JsonMapper.ToObject(data.goods_extended);
+            }
+            catch
+            {
+
+            }
+            dataInfo[type] = info;
+            data.goods_extended = dataInfo.ToJson();
+            Debug.Log("Art状态信息改变" + data.goods_extended);
+            SendTransfer(0, (int)TransferState.Stop);
+        }
+    }
+}

+ 11 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container/ArtContainerHandler.cs.meta

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

+ 175 - 0
Assets/Game/XRToolkit/ArtShow/Scripts/Container/GoodsContainer.cs

@@ -0,0 +1,175 @@
+using ShadowStudio.Tool;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using XRTool.Util;
+
+namespace ShadowStudio.Model
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class GoodsContainer : ArtContainerHandler
+    {
+        private TransferCell transfer;
+        public virtual void Start()
+        {
+            if (Transfer)
+            {
+                //if (!CommonMethod.isLookRoom())
+                //{
+                //    Transfer.EditTransfer += OnEditTransfer;
+                //    //Transfer.TransferSelect += OnTransferSelect;
+                //    Transfer.ZoomTransfer += OnZoomTransfer;
+                //}
+                //else
+                //{
+                //    Transfer.IsCanEditor = false;
+                //}
+                //Transfer.TransferStateChange += OnTransferStateChange;
+                //Transfer.Box.ScaleStopped.AddListener(OnStopScale);
+                //Transfer.Box.ScaleStarted.AddListener(ScaleStarted);
+            }
+        }
+
+        /// <summary>
+        /// 缩放事件
+        /// </summary>
+        /// <param name="state"></param>
+        public virtual void OnZoomTransfer(TransferState state)
+        {
+            if (state == TransferState.Stop)
+            {
+                if (transform.localScale.x < 0)
+                {
+                    transform.localScale = -transform.localScale;
+                }
+                OnEditTransfer(state);
+            }
+        }
+        /// <summary>
+        /// 当编辑了物体时
+        /// </summary>
+        /// <param name="state"></param>
+        public virtual void OnEditTransfer(TransferState state)
+        {
+            if (state == TransferState.Stop)
+            {
+                OnTransferSelect(true);
+            }
+            else if (state == TransferState.Over)
+            {
+                OnTransferSelect(false);
+            }
+            SendTransfer(2, (int)state);
+        }
+
+
+
+        /// <summary>
+        /// 当某物体被选中或被释放
+        /// </summary>
+        /// <param name="arg1"></param>
+        /// <param name="select"></param>
+        public virtual void OnTransferSelect(bool select)
+        {
+            ArtInfoMgr.Instance.SetContainerSelect(this, select);
+        }
+        //public virtual void OnStopScale()
+        //{
+        //    if (transform.localScale.x < 0)
+        //    {
+        //        transform.localScale = -transform.localScale;
+        //    }
+        //}
+        public override TransferCell Transfer
+        {
+            get
+            {
+                if (!transfer)
+                {
+                    transfer = GetComponent<TransferCell>();
+                }
+                return transfer;
+            }
+        }
+        public override void ResetEditorPosition()
+        {
+            if (EditorRoot)
+            {
+                //Vector3 point = Transfer.GetCastPoint(GameSession.Instance.gameHead.position);
+                //point.y -= 0.05f;
+                //EditorRoot.position = point;
+                //Vector3 forwad = point - transform.position;
+                //forwad.y = 0;
+                //EditorRoot.forward = -forwad;
+            }
+        }
+        public override void LockContainer()
+        {
+            base.LockContainer();
+            if (Transfer)
+            {
+                Transfer.IsLock = true;
+            }
+        }
+        public override void UnLockContainer()
+        {
+            base.UnLockContainer();
+            if (Transfer)
+            {
+                Transfer.IsLock = false;
+            }
+        }
+        public override void SetSelect()
+        {
+            base.SetSelect();
+            if (Transfer && !Transfer.IsLock)
+            {
+                Transfer.IsDragEnable = true;
+            }
+        }
+        public override void UnSetSelect()
+        {
+            base.UnSetSelect();
+            if (Transfer && !Transfer.IsLock)
+            {
+                Transfer.IsDragEnable = false;
+                //Transfer.DisActiveCell();
+            }
+        }
+        public override int AheadCount()
+        {
+            if (Transfer)
+            {
+                return Transfer.PostureAhead.Count;
+            }
+            return base.AheadCount();
+        }
+        public override int BackCount()
+        {
+            if (Transfer)
+            {
+                return Transfer.PostureBack.Count;
+            }
+            return base.BackCount();
+        }
+        public override bool GoAhead()
+        {
+            if (Transfer)
+            {
+                return Transfer.PeekAheadNode();
+            }
+            return base.GoAhead();
+        }
+        public override bool GoBack()
+        {
+            if (Transfer)
+            {
+                return Transfer.PeekBackNode();
+            }
+            return base.GoBack();
+        }
+    }
+}

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