diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab b/Assets/Art/UIPrefab/UIImageSelectMap.prefab new file mode 100644 index 00000000..8be7007f --- /dev/null +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab @@ -0,0 +1,1631 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1456779776075396423 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8684970269249796938} + - component: {fileID: 5747189872396141135} + - component: {fileID: 8183197324225808335} + - component: {fileID: 8791239955636502620} + m_Layer: 0 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8684970269249796938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + 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: 1053974557369902190} + m_Father: {fileID: 8195176150318222682} + 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: 0, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!222 &5747189872396141135 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_CullTransparentMesh: 1 +--- !u!114 &8183197324225808335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &8791239955636502620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1456779776075396423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + 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: 3902461113349703364} + m_HandleRect: {fileID: 7471371802902961118} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1679127656931134385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5789014425176515348} + - component: {fileID: 4674184409838659037} + - component: {fileID: 6234933970462649390} + - component: {fileID: 5462896160065121143} + m_Layer: 0 + m_Name: RightItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5789014425176515348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + 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: 8333043509333940129} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 960, y: -540} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4674184409838659037 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_CullTransparentMesh: 1 +--- !u!114 &6234933970462649390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + 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: 0} + 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!114 &5462896160065121143 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1679127656931134385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: LeftItem + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!1 &1729038058009787836 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1053974557369902190} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053974557369902190 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1729038058009787836} + 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: 7471371802902961118} + m_Father: {fileID: 8684970269249796938} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1742335434038873139 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8333043509333940129} + m_Layer: 0 + m_Name: prefabs + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &8333043509333940129 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1742335434038873139} + 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: 5065642014798611877} + - {fileID: 5789014425176515348} + m_Father: {fileID: 3838833872239473580} + 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 &2832418877224820397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6584298779789211397} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6584298779789211397 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2832418877224820397} + 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: 8048533352694695708} + m_Father: {fileID: 2525946039026654729} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3581311008806056906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1318390635077869678} + - component: {fileID: 929900596444975903} + - component: {fileID: 3128808900450456013} + - component: {fileID: 1757905451630621577} + m_Layer: 0 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1318390635077869678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + 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: 6336473892143704609} + m_Father: {fileID: 4103523224226093892} + 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: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &929900596444975903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_CullTransparentMesh: 1 +--- !u!114 &3128808900450456013 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + 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: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &1757905451630621577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3581311008806056906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &3680065591560334169 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4103523224226093892} + - component: {fileID: 2989934290346154672} + - component: {fileID: 6966479315727637165} + - component: {fileID: 5702230170007598446} + m_Layer: 0 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4103523224226093892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + 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: 1318390635077869678} + - {fileID: 394787390200614376} + m_Father: {fileID: 3838833872239473580} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 336.29443, y: -54.999996} + m_SizeDelta: {x: 672.5889, y: -110} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2989934290346154672 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_CullTransparentMesh: 1 +--- !u!114 &6966479315727637165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + 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: 0.392} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &5702230170007598446 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3680065591560334169} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 6336473892143704609} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 1318390635077869678} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 1324067570812135091} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4024388799813096854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5065642014798611877} + - component: {fileID: 2953680020842013688} + - component: {fileID: 5092658527967839279} + - component: {fileID: 3958728393826437956} + m_Layer: 0 + m_Name: LeftItem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5065642014798611877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + 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: 8914544173708230318} + m_Father: {fileID: 8333043509333940129} + 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 &2953680020842013688 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_CullTransparentMesh: 1 +--- !u!114 &5092658527967839279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + 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: 0} + 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!114 &3958728393826437956 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024388799813096854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: LeftItem + CustomComment: + mComponentName: UnityEngine.UI.Image +--- !u!1 &4138736096266597115 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8048533352694695708} + - component: {fileID: 4476319710925218141} + - component: {fileID: 7297836506493679} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8048533352694695708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + 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: 6584298779789211397} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4476319710925218141 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + m_CullTransparentMesh: 1 +--- !u!114 &7297836506493679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4138736096266597115} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &4335887278641882288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6336473892143704609} + - component: {fileID: 1181747651547168674} + - component: {fileID: 1467124759781623263} + m_Layer: 0 + m_Name: LeftContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6336473892143704609 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + 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: 1318390635077869678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.0005044027} + m_SizeDelta: {x: 0, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1181747651547168674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 120, y: 120} + m_Spacing: {x: 10, y: 10} + m_Constraint: 0 + m_ConstraintCount: 2 +--- !u!114 &1467124759781623263 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4335887278641882288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: Content + CustomComment: + mComponentName: RectTransform +--- !u!1 &4835406052127461971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8914544173708230318} + - component: {fileID: 5613198329882542977} + - component: {fileID: 6312209549581201463} + m_Layer: 0 + m_Name: Pic + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8914544173708230318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + 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: 5065642014798611877} + 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 &5613198329882542977 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + m_CullTransparentMesh: 1 +--- !u!114 &6312209549581201463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4835406052127461971} + 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: 0 + 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!1 &4900020430220917441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6608813160943937009} + - component: {fileID: 5390595855353182900} + - component: {fileID: 5518550782261125692} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6608813160943937009 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + 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: 6058473778588375874} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5390595855353182900 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + m_CullTransparentMesh: 1 +--- !u!114 &5518550782261125692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4900020430220917441} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &5231692418628772328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8195176150318222682} + - component: {fileID: 8240270928057047746} + - component: {fileID: 2785932821700596982} + - component: {fileID: 2699145837462799152} + m_Layer: 0 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8195176150318222682 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + 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: 5249969822239494612} + - {fileID: 8684970269249796938} + - {fileID: 2525946039026654729} + m_Father: {fileID: 3838833872239473580} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -364.56055, y: -55} + m_SizeDelta: {x: 730, y: -110} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8240270928057047746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_CullTransparentMesh: 1 +--- !u!114 &2785932821700596982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + 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: 0.392} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &2699145837462799152 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5231692418628772328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 6690386520824484871} + m_Horizontal: 0 + m_Vertical: 0 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 5249969822239494612} + m_HorizontalScrollbar: {fileID: 8791239955636502620} + m_VerticalScrollbar: {fileID: 4830704509972715571} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5533578643516125822 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5249969822239494612} + - component: {fileID: 8468620193606598014} + - component: {fileID: 2039402422259965534} + - component: {fileID: 7317893052516074551} + m_Layer: 0 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5249969822239494612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + 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: 6690386520824484871} + m_Father: {fileID: 8195176150318222682} + 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: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!222 &8468620193606598014 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_CullTransparentMesh: 1 +--- !u!114 &2039402422259965534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + 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: 10917, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &7317893052516074551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5533578643516125822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &6096318315612650036 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2525946039026654729} + - component: {fileID: 2173444022361033529} + - component: {fileID: 6986069924218128084} + - component: {fileID: 4830704509972715571} + m_Layer: 0 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2525946039026654729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + 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: 6584298779789211397} + m_Father: {fileID: 8195176150318222682} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2173444022361033529 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_CullTransparentMesh: 1 +--- !u!114 &6986069924218128084 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &4830704509972715571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6096318315612650036} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + 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: 7297836506493679} + m_HandleRect: {fileID: 8048533352694695708} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6547800660382164721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6058473778588375874} + m_Layer: 0 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6058473778588375874 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6547800660382164721} + 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: 6608813160943937009} + m_Father: {fileID: 394787390200614376} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7814570042150248306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6690386520824484871} + - component: {fileID: 3568317990091449983} + - component: {fileID: 6126463599289851190} + - component: {fileID: 2212699225699437522} + m_Layer: 0 + m_Name: RightContent + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6690386520824484871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + 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: 5249969822239494612} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.0008044916} + m_SizeDelta: {x: 0, y: 300} + m_Pivot: {x: 0, y: 1} +--- !u!114 &3568317990091449983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3} + m_Name: + m_EditorClassIdentifier: + MarkType: 0 + CustomComponentName: RightContent + CustomComment: + mComponentName: RectTransform +--- !u!222 &6126463599289851190 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + m_CullTransparentMesh: 1 +--- !u!114 &2212699225699437522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7814570042150248306} + 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: 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 &8228266746100192071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 394787390200614376} + - component: {fileID: 6708653711916478926} + - component: {fileID: 1891542050000837780} + - component: {fileID: 1324067570812135091} + m_Layer: 0 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &394787390200614376 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + 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: 6058473778588375874} + m_Father: {fileID: 4103523224226093892} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: -17} + m_Pivot: {x: 1, y: 1} +--- !u!222 &6708653711916478926 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_CullTransparentMesh: 1 +--- !u!114 &1891542050000837780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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 &1324067570812135091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8228266746100192071} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + 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: 5518550782261125692} + m_HandleRect: {fileID: 6608813160943937009} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &8636616114181872079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3838833872239473580} + - component: {fileID: 1388199598429812564} + m_Layer: 0 + m_Name: UIImageSelectMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3838833872239473580 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636616114181872079} + 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: 4103523224226093892} + - {fileID: 8195176150318222682} + - {fileID: 8333043509333940129} + m_Father: {fileID: 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!114 &1388199598429812564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636616114181872079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8fa5d149f86eeb54d89208e36562e2d8, type: 3} + m_Name: + m_EditorClassIdentifier: + LeftContent: {fileID: 6336473892143704609} + LeftItem: {fileID: 5092658527967839279} + RightItem: {fileID: 6234933970462649390} + RightContent: {fileID: 6690386520824484871} +--- !u!1 &8646243921430610519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7471371802902961118} + - component: {fileID: 4758506154025675790} + - component: {fileID: 3902461113349703364} + m_Layer: 0 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7471371802902961118 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + 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: 1053974557369902190} + 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: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4758506154025675790 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + m_CullTransparentMesh: 1 +--- !u!114 &3902461113349703364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8646243921430610519} + 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: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta b/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta new file mode 100644 index 00000000..7083810f --- /dev/null +++ b/Assets/Art/UIPrefab/UIImageSelectMap.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ae12c898f4042949bc5cc317c63d77d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: uiimageselectmap_prefab + assetBundleVariant: diff --git a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs index 359c8d97..97e67a82 100644 --- a/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs +++ b/Assets/QFramework/Toolkits/_CoreKit/ActionKit/Scripts/Utility/Utility.cs @@ -423,4 +423,34 @@ public class Utility list[j] = temp; } } + + + // 该方法用于打乱当前脚本所挂载物体的子物体顺序 + public static void ShuffleChildObjects(Transform parent) + { + List children = new List(); + + for (int i = 0; i < parent.childCount; i++) + { + children.Add(parent.GetChild(i)); + } + + // 打乱子物体数组的顺序 + for (int i = 0; i < children.Count; i++) + { + int randomIndex = UnityEngine.Random.Range(i, children.Count); + Transform temp = children[randomIndex]; + children[randomIndex] = children[i]; + children[i] = temp; + } + + // 按照打乱后的顺序重新设置子物体的顺序 + for (int i = 0; i < children.Count; i++) + { + children[i].SetSiblingIndex(i); + } + } + + + } \ No newline at end of file diff --git a/Assets/WebPlatform/Scripts.meta b/Assets/Resources/LYTWebGL.meta similarity index 77% rename from Assets/WebPlatform/Scripts.meta rename to Assets/Resources/LYTWebGL.meta index 978d3f73..bc2681ad 100644 --- a/Assets/WebPlatform/Scripts.meta +++ b/Assets/Resources/LYTWebGL.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b8dbba4c57255fc4495c422b41445cbe +guid: d0622dae4bc2b2a4d937ad88a765e87a folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private b/Assets/Resources/LYTWebGL/RSA.txt similarity index 100% rename from Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private rename to Assets/Resources/LYTWebGL/RSA.txt diff --git a/Assets/Resources/LYTWebGL/RSA.txt.meta b/Assets/Resources/LYTWebGL/RSA.txt.meta new file mode 100644 index 00000000..4c11c38c --- /dev/null +++ b/Assets/Resources/LYTWebGL/RSA.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fa05fa85bd33f6c4ca626c1e0317d53d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity new file mode 100644 index 00000000..a1373e08 --- /dev/null +++ b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity @@ -0,0 +1,975 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &377343312 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377343313} + m_Layer: 5 + m_Name: CanvasPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &377343313 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 377343312} + 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: 2114871786} + 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 &801682693 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 801682694} + - component: {fileID: 801682696} + - component: {fileID: 801682695} + m_Layer: 5 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &801682694 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + serializedVersion: 2 + 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: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &801682695 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 1 +--- !u!114 &801682696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 801682693} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!1 &995027251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 995027252} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &995027252 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 995027251} + 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: 2114871786} + 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 &1084276686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1084276689} + - component: {fileID: 1084276687} + - component: {fileID: 1084276688} + m_Layer: 5 + m_Name: UICamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!20 &1084276687 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 3 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: 99 + m_CullingMask: + serializedVersion: 2 + m_Bits: 32 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!124 &1084276688 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + m_Enabled: 1 +--- !u!4 &1084276689 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1084276686} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1126280010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1126280011} + m_Layer: 5 + m_Name: Common + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1126280011 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1126280010} + 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: 2114871786} + 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 &1161286720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1161286721} + - component: {fileID: 1161286724} + - component: {fileID: 1161286723} + - component: {fileID: 1161286722} + m_Layer: 5 + m_Name: RightBottom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1161286721 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + 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: 2114871786} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1828.92, y: 0} + m_Pivot: {x: 1, y: -0.000000461936} +--- !u!222 &1161286722 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_CullTransparentMesh: 1 +--- !u!114 &1161286723 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!114 &1161286724 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1161286720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 8 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 1 +--- !u!1 &1320020531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1320020532} + m_Layer: 5 + m_Name: PopUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1320020532 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320020531} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000799, y: 1.0000799, z: 1.0000799} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2114871786} + 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 &1349401529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1349401531} + - component: {fileID: 1349401530} + m_Layer: 0 + m_Name: TestUIImageSelectMap + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1349401530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349401529} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6b7a3e7dc894eaca1053ef166cdad33, type: 3} + m_Name: + m_EditorClassIdentifier: + PanelName: UIImageSelectMap + Level: 0 + mOtherPanels: [] +--- !u!4 &1349401531 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1349401529} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1635592603 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635592604} + - component: {fileID: 1635592605} + m_Layer: 5 + m_Name: Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1635592604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635592603} + 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: 2114871786} + 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!114 &1635592605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635592603} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5dc84f25d84334e168bf64050b91e1fb, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1661191870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1661191871} + - component: {fileID: 1661191872} + m_Layer: 5 + m_Name: Design + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1661191871 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661191870} + 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: 8931408189093656909} + m_Father: {fileID: 2114871786} + 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!114 &1661191872 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1661191870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6eba024ea32574239b57b098f1dc6282, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2114871781 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2114871786} + - component: {fileID: 2114871785} + - component: {fileID: 2114871784} + - component: {fileID: 2114871783} + - component: {fileID: 2114871782} + m_Layer: 5 + m_Name: UIRoot + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2114871782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2db7fffd623c478eba3d2cb84034d2f, type: 3} + m_Name: + m_EditorClassIdentifier: + UICamera: {fileID: 1084276687} + Canvas: {fileID: 2114871785} + CanvasScaler: {fileID: 2114871784} + GraphicRaycaster: {fileID: 2114871783} + Bg: {fileID: 995027252} + Common: {fileID: 1126280011} + PopUI: {fileID: 1320020532} + RightBottom: {fileID: 1161286721} + CanvasPanel: {fileID: 377343313} +--- !u!114 &2114871783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 0 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2114871784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &2114871785 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 1084276687} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 1 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 100 + m_TargetDisplay: 0 +--- !u!224 &2114871786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2114871781} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 995027252} + - {fileID: 1126280011} + - {fileID: 1161286721} + - {fileID: 1320020532} + - {fileID: 377343313} + - {fileID: 1661191871} + - {fileID: 801682694} + - {fileID: 1084276689} + - {fileID: 1635592604} + m_Father: {fileID: 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: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &8931408189093656908 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 1661191871} + m_Modifications: + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1318390635077869678, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2525946039026654729, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5249969822239494612, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5702230170007598446, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_HorizontalScrollbar + value: + objectReference: {fileID: 0} + - target: {fileID: 6336473892143704609, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0009040238 + objectReference: {fileID: 0} + - target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6608813160943937009, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6690386520824484871, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.0009040238 + objectReference: {fileID: 0} + - target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7471371802902961118, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8048533352694695708, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8636616114181872079, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_Name + value: UIImageSelectMap + objectReference: {fileID: 0} + - target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8684970269249796938, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} +--- !u!224 &8931408189093656909 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 3838833872239473580, guid: 8ae12c898f4042949bc5cc317c63d77d, type: 3} + m_PrefabInstance: {fileID: 8931408189093656908} + m_PrefabAsset: {fileID: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 2114871786} + - {fileID: 1349401531} diff --git a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta similarity index 74% rename from Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta rename to Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta index 288425aa..db57b472 100644 --- a/Assets/WebPlatform/LaiYiTe/Resrouces/RSA.Private.meta +++ b/Assets/Scenes/TestUIPanels/TestUIImageSelectMap.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 72fe0ae24cde45946914fa10b54896b0 +guid: 6aebd18275784904b8bee1a5e43e817a DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Scripts/Actions/ActionBase.cs b/Assets/Scripts/Actions/ActionBase.cs index dc832519..e3823656 100644 --- a/Assets/Scripts/Actions/ActionBase.cs +++ b/Assets/Scripts/Actions/ActionBase.cs @@ -23,6 +23,19 @@ namespace XMLTool public Dictionary args = new Dictionary(); } + public class ImageSelectMapAction : Action + { + public class Item + { + public string pic; + public string pos; + public string size; + } + + public Dictionary args = new Dictionary(); + public List items = new List(); + } + public class DictionaryCondition : Condition { diff --git a/Assets/Scripts/Actions/ActionHelper.cs b/Assets/Scripts/Actions/ActionHelper.cs index fe7162ac..c29005a1 100644 --- a/Assets/Scripts/Actions/ActionHelper.cs +++ b/Assets/Scripts/Actions/ActionHelper.cs @@ -284,6 +284,11 @@ public class ActionHelper var dictAction = (XMLTool.DictionaryAction)act; return QFramework.ShowScoreAction.Allocate(dictAction.args); } + case "ImageSelectMap": + { + var dictAction = (XMLTool.ImageSelectMapAction)act; + return QFramework.ImageSelectMapAction.Allocate(dictAction.args,dictAction.items); + } default: Debug.LogError($"ûҵAction{act.Type}"); break; diff --git a/Assets/Scripts/Actions/ImageSelectMapAction.cs b/Assets/Scripts/Actions/ImageSelectMapAction.cs new file mode 100644 index 00000000..582d7acf --- /dev/null +++ b/Assets/Scripts/Actions/ImageSelectMapAction.cs @@ -0,0 +1,115 @@ +using QFramework.Example; +using System; +using System.Collections.Generic; +using UnityEngine; +using XMLTool; + +namespace QFramework +{ + internal class ImageSelectMapAction : IAction + { + public string txt; + + + public System.Action OnFinished { get; set; } + + + private ImageSelectMapAction() + { + } + + private static readonly SimpleObjectPool mPool = + new SimpleObjectPool(() => new ImageSelectMapAction(), null, 10); + Dictionary datas; + List items; + public static ImageSelectMapAction Allocate(Dictionary datas, List items, System.Action OnFinished = null) + { + var retNode = mPool.Allocate(); + retNode.ActionID = ActionKit.ID_GENERATOR++; + retNode.Deinited = false; + retNode.datas = datas; + retNode.items = items; + retNode.Reset(); + retNode.OnFinished = OnFinished; + return retNode; + } + + + public ulong ActionID { get; set; } + public ActionStatus Status { get; set; } + + public void OnStart() + { + + UIImageSelectMapData data = new UIImageSelectMapData(); + data.totalScore = 0; + if (datas.ContainsKey("totalScore")) + { + float.TryParse(datas["totalScore"], out data.totalScore); + } + data.rightScore = 0; + if (datas.ContainsKey("rightScore")) + { + float.TryParse(datas["rightScore"], out data.rightScore); + } + data.wrongScore = 0; + if (datas.ContainsKey("wrongScore")) + { + float.TryParse(datas["wrongScore"], out data.wrongScore); + } + data.scoreName = datas.ContainsKey("scoreName") ? datas["scoreName"] : ""; + data.rightLabel = datas.ContainsKey("rightLabel") ? datas["rightLabel"] : ""; + data.wrongLabel = datas.ContainsKey("wrongLabel") ? datas["wrongLabel"] : ""; + data.finishedEvent = datas.ContainsKey("finishedEvent") ? datas["finishedEvent"] : ""; + data.rightBg = datas.ContainsKey("rightBg") ? datas["rightBg"] : ""; + + foreach (var item in items) + { + data.items.Add(new UIImageSelectMapData.OptionItem() + { + pic = item.pic, + pos = Utility.GetVector2FromStrArray(item.pos), + size = Utility.GetVector2FromStrArray(item.size) + }); + } + + UIKit.OpenPanelAsync(uiData: data, canvasLevel: UILevel.PopUI).ToAction().StartGlobal(() => + { + + this.Finish(); + OnFinished?.Invoke(); + }); + + } + + public void OnExecute(float dt) + { + } + + public void OnFinish() + { + } + + public void Reset() + { + Status = ActionStatus.NotStart; + Paused = false; + } + + public bool Paused { get; set; } + + public void Deinit() + { + if (!Deinited) + { + OnFinished = null; + Deinited = true; + mPool.Recycle(this); + } + } + + public bool Deinited { get; set; } + } + + +} \ No newline at end of file diff --git a/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta b/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta new file mode 100644 index 00000000..c995180c --- /dev/null +++ b/Assets/Scripts/Actions/ImageSelectMapAction.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 93d6ed89dd2e1974f8712dde5a2c6c31 +timeCreated: 1647655796 \ No newline at end of file diff --git a/Assets/Scripts/Controller/PlayerController.cs b/Assets/Scripts/Controller/PlayerController.cs new file mode 100644 index 00000000..d9bb945b --- /dev/null +++ b/Assets/Scripts/Controller/PlayerController.cs @@ -0,0 +1,45 @@ +using QFramework; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XMLTool; + +public class PlayerController : MonoSingleton +{ + private PlayerController() { } + + public class HasDevice + { + public Device device; + public int count; + } + + + Dictionary hasDevices = new Dictionary(); + + public void DropDevice(string key, int count = 1) + { + if (hasDevices.ContainsKey(key)) + { + hasDevices[key].count -= count; + if (hasDevices[key].count <= 0) + { + hasDevices.Remove(key); + } + } + } + + public void PickDevice(string key, int count = 1) + { + if (hasDevices.ContainsKey(key)) + { + hasDevices[(string)key].count += count; + } + else + { + hasDevices.Add(key, new HasDevice() { count = count, device = DeviceController.Instance.GetDevice(key) }); + } + + } + +} diff --git a/Assets/Scripts/Controller/PlayerController.cs.meta b/Assets/Scripts/Controller/PlayerController.cs.meta new file mode 100644 index 00000000..5daecb62 --- /dev/null +++ b/Assets/Scripts/Controller/PlayerController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d963e03aaa61c0241a2a7b3a8e7bf611 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Controller/ScoreController.cs b/Assets/Scripts/Controller/ScoreController.cs index 5a31979b..449b455e 100644 --- a/Assets/Scripts/Controller/ScoreController.cs +++ b/Assets/Scripts/Controller/ScoreController.cs @@ -1,10 +1,9 @@ +using Newtonsoft.Json; using QFramework; using System; -using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; -using UnityEngine.SocialPlatforms.Impl; using XMLTool; public class ScoreController : MonoSingleton @@ -48,6 +47,40 @@ public class ScoreController : MonoSingleton } + public string GetModuleDictJson(string name = "", string id = "", string sum = "") + { + var resultDict = new Dictionary(); + DateTime curTime = DateTime.Now; + resultDict.Add("name", name); + resultDict.Add("id", id); + resultDict.Add("sum", sum); + resultDict.Add("time", curTime.ToString("yyyy.MM.dd")); + resultDict.Add("year", curTime.Year); + resultDict.Add("month", curTime.Month); + foreach (var dataPair in moduleDict) + { + var data = dataPair.Value; + if (data.scoreDict != null) + { + foreach (var scoreStepPair in data.scoreDict) + { + var scoreStep = scoreStepPair.Value; + string key = $"{scoreStep.step}{scoreStep.name}"; + resultDict[key] = scoreStep.value; + + string value = "\u00A0"; + if (string.IsNullOrEmpty(scoreStep.time) == false) + { + value = scoreStep.time; + } + resultDict.Add(key + "Time", value); + } + } + } + + return JsonConvert.SerializeObject(resultDict); + } + private void OnStart(OnModuleStart start) { @@ -84,6 +117,8 @@ public class ScoreController : MonoSingleton { scoreDict[key].value = 0; } + DateTime currentTime = DateTime.Now; + scoreDict[key].time = currentTime.ToString(scoreDict[key].timeFormat); } else { diff --git a/Assets/Scripts/Editor/FixedMainEditor.cs b/Assets/Scripts/Editor/FixedMainEditor.cs index 44d2fa2c..be177835 100644 --- a/Assets/Scripts/Editor/FixedMainEditor.cs +++ b/Assets/Scripts/Editor/FixedMainEditor.cs @@ -1,3 +1,6 @@ +using QFramework; +using System; +using System.IO; using UnityEditor; using UnityEngine; @@ -31,5 +34,49 @@ public class FixedMainEditor Menu.SetChecked("Tools/ǿMain", isFixedMain); return true; } + + + + [MenuItem("Tools/ʱ")] + private static void TimerLock() + { + //Դļ + //Ǽ̳ScriptableObject + TimerLock asset = ScriptableObject.CreateInstance(); + //ǰһԴֻǴڴУҪ浽 + //ͨ༭APIһԴļڶΪԴļAssetsĿ¼µ· + AssetDatabase.CreateAsset(asset, "Assets/TimerLock.asset"); + //洴Դ + AssetDatabase.SaveAssets(); + //ˢ½ + AssetDatabase.Refresh(); + } + + [MenuItem("Tools/Timerļ")] + private static void GeneratorTimer() + { + if (File.Exists(Application.dataPath + "/TimerLock.asset")) + { + string path = "Assets/TimerLock.asset"; + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + if (string.IsNullOrEmpty(asset.time) == false) + { + //һλȡȡϵͳʱ + DateTime currentDateTime = DateTime.Now; + string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = asset.time + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } + } + } + //ˢ½ + AssetDatabase.Refresh(); + } + + + + } #endif \ No newline at end of file diff --git a/Assets/Scripts/Editor/TimerLock.cs b/Assets/Scripts/Editor/TimerLock.cs new file mode 100644 index 00000000..a7482a9f --- /dev/null +++ b/Assets/Scripts/Editor/TimerLock.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[CreateAssetMenu(fileName = "ʱ", menuName = "ʱ/ļ")] +public class TimerLock : ScriptableObject +{ + [Header("Ч")] + public string time; + +} diff --git a/Assets/Scripts/Editor/TimerLock.cs.meta b/Assets/Scripts/Editor/TimerLock.cs.meta new file mode 100644 index 00000000..d412f066 --- /dev/null +++ b/Assets/Scripts/Editor/TimerLock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fa014c2238b5a942b96b9f55a3f9841 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/VirtualFPostProcess.cs b/Assets/Scripts/Editor/VirtualFPostProcess.cs index a687e3f0..d84b64ab 100644 --- a/Assets/Scripts/Editor/VirtualFPostProcess.cs +++ b/Assets/Scripts/Editor/VirtualFPostProcess.cs @@ -7,10 +7,20 @@ using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; -public class VirtualFPostProcess : IPostprocessBuildWithReport +public class VirtualFPostProcess : IPostprocessBuildWithReport, IPreprocessBuildWithReport { public int callbackOrder => 0; + /// + /// ǰʱ + /// + /// + public void OnPreprocessBuild(BuildReport report) + { + // ʱ + GneratorTimerLock(); + } + public void OnPostprocessBuild(BuildReport report) { string projectPath = Application.dataPath; @@ -29,6 +39,32 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogWarning("δҵĿ¼: " + dataFolderPath); } DeletAssetBundle(buildOutputPath); + AssetDatabase.Refresh(); + } + + /// + /// ʱļ + /// + public void GneratorTimerLock() + { + if (File.Exists(Application.dataPath + "/TimerLock.asset")) + { + string path = "Assets/TimerLock.asset"; + var asset = AssetDatabase.LoadAssetAtPath(path); + if (asset != null) + { + if (string.IsNullOrEmpty(asset.time) == false) + { + //һλȡȡϵͳʱ + DateTime currentDateTime = DateTime.Now; + string RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = asset.time + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } + } + } + + } /// @@ -64,7 +100,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogError($"Directory not found: {path}"); } } - else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows|| EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64) + else if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows || EditorUserBuildSettings.activeBuildTarget == BuildTarget.StandaloneWindows64) { string path = Path.Combine(buildOutPutPath, "VirtualFramwork_Data", "StreamingAssets", "AssetBundles"); if (Directory.Exists(path)) @@ -92,7 +128,7 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport Debug.LogError($"Directory not found: {path}"); } } - + } @@ -145,4 +181,6 @@ public class VirtualFPostProcess : IPostprocessBuildWithReport } return new string(chars); } + + } \ No newline at end of file diff --git a/Assets/Scripts/Tools/AsposeHelper.cs b/Assets/Scripts/Tools/AsposeHelper.cs index 2fdf7b4a..14300c27 100644 --- a/Assets/Scripts/Tools/AsposeHelper.cs +++ b/Assets/Scripts/Tools/AsposeHelper.cs @@ -9,34 +9,77 @@ public class AsposeHelper : MonoBehaviour { + //public static void Writer(string json, Action callback = null) + //{ + // // Wordĵ + // Document doc = new Document(Global.reportDemoPath); + + // JObject jObject = JObject.Parse(json); + + // foreach (JProperty property in jObject.Properties()) + // { + // string key = property.Name; + // string value = property.Value.ToString(); + // doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); + // } + + // string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]); + // if (string.IsNullOrEmpty(filePath) == false) + // { + // doc.Save(filePath); + // } + // callback?.Invoke(); + // // 滻ı + // //SaveWithDialog(doc, callback); + // //Debug.Log("ĵɣĵѱ浽: " + outputFilePath); + //} + public static void Writer(string json, Action callback = null) { // Wordĵ Document doc = new Document(Global.reportDemoPath); - JObject jObject = JObject.Parse(json); - - foreach (JProperty property in jObject.Properties()) - { - string key = property.Name; - string value = property.Value.ToString(); - doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); - } + JToken jToken = JToken.Parse(json); + TraverseAndReplace(jToken, doc); string filePath = ChinarFileController.SaveProject(Path.GetFileName(Global.reportDemoPath).Split('.')[1]); - if (string.IsNullOrEmpty(filePath) == false) + if (!string.IsNullOrEmpty(filePath)) { doc.Save(filePath); } callback?.Invoke(); - // 滻ı - //SaveWithDialog(doc, callback); - //Debug.Log("ĵɣĵѱ浽: " + outputFilePath); - - - } + private static void TraverseAndReplace(JToken jToken, Document doc) + { + if (jToken.Type == JTokenType.Object) + { + foreach (JProperty property in ((JObject)jToken).Properties()) + { + if (property.Value.Type == JTokenType.Object || property.Value.Type == JTokenType.Array) + { + TraverseAndReplace(property.Value, doc); + } + else + { + string key = property.Name; + string value = property.Value.ToString(); + doc.Range.Replace($"{{{key}}}", $"{value}", new FindReplaceOptions()); + } + } + } + else if (jToken.Type == JTokenType.Array) + { + foreach (JToken item in jToken) + { + TraverseAndReplace(item, doc); + } + } + } + + + + //private static void SaveWithDialog(Document doc, Action callback) //{ // SaveFileDialog dialog = new SaveFileDialog(); diff --git a/Assets/Scripts/Tools/WaterfallScrollView.cs b/Assets/Scripts/Tools/WaterfallScrollView.cs new file mode 100644 index 00000000..e395d037 --- /dev/null +++ b/Assets/Scripts/Tools/WaterfallScrollView.cs @@ -0,0 +1,361 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class WaterfallScrollView : MonoBehaviour +{ + [Header("")] + [SerializeField] private ScrollRect scrollRect; + [SerializeField] private RectTransform viewport; + [SerializeField] private RectTransform content; + [SerializeField] private RectTransform itemPrefab; + [SerializeField] private Image itemImageComponent; // ԤеImage + + [Header("ٲ")] + [SerializeField] private int columnCount = 3; + [SerializeField] private float spacingX = 10f; + [SerializeField] private float spacingY = 10f; + [SerializeField] private float paddingLeft = 10f; + [SerializeField] private float paddingRight = 10f; + [SerializeField] private float paddingTop = 10f; + [SerializeField] private float paddingBottom = 10f; + + private List columnHeights; + private List activeItems = new List(); + private Dictionary pooledItems = new Dictionary(); + private float itemWidth; + private float viewportHeight; + private float contentHeight; + private int totalItemCount = 0; + private int visibleStartIndex = 0; + private int visibleEndIndex = 0; + public List sprites = new List(); // 洢о + private List itemHeights = new List(); // 洢ÿļ߶ + + private void Start() + { + Initialize(); + scrollRect.onValueChanged.AddListener(OnScroll); + + // ʼspritesǷ + if (sprites.Count > 0) + { + SetContent(sprites); + } + else + { + ClearContent(); + } + } + + private void Initialize() + { + // пͼ + float availableWidth = viewport.rect.width - paddingLeft - paddingRight - (columnCount - 1) * spacingX; + itemWidth = availableWidth / columnCount; + + // ʼи߶ + columnHeights = new List(new float[columnCount]); + + // ¼ӿڸ߶ڼɼ + viewportHeight = viewport.rect.height; + } + + // ʹṩľб + public void SetContent(List sprites) + { + this.sprites = sprites ?? new List(); + totalItemCount = this.sprites.Count; + + // ûо飬 + if (totalItemCount == 0) + { + ClearContent(); + return; + } + + // ÿĸ߶ + CalculateItemHeights(); + + // ݸ߶ + contentHeight = CalculateContentHeight(); + content.sizeDelta = new Vector2(content.sizeDelta.x, contentHeight); + + // ¿ɼ + UpdateVisibleItems(); + } + + // + public void ClearContent() + { + // л + foreach (var item in activeItems) + { + item.gameObject.SetActive(false); + } + activeItems.Clear(); + + // ݴС + content.sizeDelta = new Vector2(content.sizeDelta.x, 0); + totalItemCount = 0; + itemHeights.Clear(); + } + + private void CalculateItemHeights() + { + itemHeights.Clear(); + + foreach (Sprite sprite in sprites) + { + if (sprite != null) + { + // 㱣ֿ߱ȵĸ߶ + float aspectRatio = sprite.rect.width / sprite.rect.height; + float height = itemWidth / aspectRatio; + itemHeights.Add(height); + } + else + { + // ΪգʹĬϸ߶ + itemHeights.Add(150f); + } + } + } + + private float CalculateContentHeight() + { + // и߶ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ģⲼּݸ߶ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int shortestColumnIndex = GetShortestColumn(); + columnHeights[shortestColumnIndex] += height + spacingY; + } + + // ҳߵΪݸ߶ + float maxHeight = 0; + foreach (float height in columnHeights) + { + if (height > maxHeight) + { + maxHeight = height; + } + } + + return maxHeight + paddingBottom - spacingY; + } + + private int GetShortestColumn() + { + int shortestIndex = 0; + float minHeight = columnHeights[0]; + + for (int i = 1; i < columnCount; i++) + { + if (columnHeights[i] < minHeight) + { + minHeight = columnHeights[i]; + shortestIndex = i; + } + } + + return shortestIndex; + } + + private void UpdateVisibleItems() + { + // ûĿִκβ + if (totalItemCount == 0) + return; + + // 㵱ǰ±߽ + float viewportTop = -content.anchoredPosition.y; + float viewportBottom = viewportTop + viewportHeight; + + // и߶ڲּ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ɼʼͽ + int newVisibleStartIndex = 0; + int newVisibleEndIndex = totalItemCount - 1; + float currentYPosition = 0; + + // ҵһɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + float itemTop = yPosition; + float itemBottom = yPosition - height; + + // ڿڻн + if (itemBottom <= viewportBottom && itemTop >= viewportTop - viewportHeight) // һĻ߶ȵ + { + newVisibleStartIndex = i; + break; + } + } + + // и߶ٴμ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ҵһɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + float itemTop = yPosition; + float itemBottom = yPosition - height; + + // ڿڻн + if (itemBottom <= viewportBottom + viewportHeight && itemTop >= viewportTop) // һĻ߶ȵ + { + newVisibleEndIndex = i; + } + else if (i > newVisibleStartIndex) // ѾҵʼſʼжϽ + { + break; + } + } + + // ɼΧûб仯򲻸 + if (newVisibleStartIndex == visibleStartIndex && newVisibleEndIndex == visibleEndIndex) + { + return; + } + + visibleStartIndex = newVisibleStartIndex; + visibleEndIndex = newVisibleEndIndex; + + // ղٿɼ + RecycleInvisibleItems(); + + // и߶ٴμ㣬ʵʲ + for (int i = 0; i < columnCount; i++) + { + columnHeights[i] = paddingTop; + } + + // ¿ɼ + for (int i = 0; i < totalItemCount; i++) + { + float height = itemHeights[i]; + int columnIndex = GetShortestColumn(); + float xPosition = paddingLeft + columnIndex * (itemWidth + spacingX); + float yPosition = -columnHeights[columnIndex]; // עUIΪ + + columnHeights[columnIndex] += height + spacingY; + + // ֻɼΧڵ + if (i >= visibleStartIndex && i <= visibleEndIndex) + { + CreateOrUpdateItem(i, xPosition, yPosition, itemWidth, height); + } + } + } + + private void CreateOrUpdateItem(int index, float x, float y, float width, float height) + { + RectTransform item; + if (!pooledItems.TryGetValue(index, out item)) + { + // + item = Instantiate(itemPrefab, content); + item.name = "Item_" + index; + pooledItems[index] = item; + activeItems.Add(item); + } + else if (!activeItems.Contains(item)) + { + // ӳȡ + item.gameObject.SetActive(true); + activeItems.Add(item); + } + + // λúʹС + item.anchorMin = new Vector2(0, 1); + item.anchorMax = new Vector2(0, 1); + item.pivot = new Vector2(0, 1); + item.anchoredPosition = new Vector2(x, y); + item.sizeDelta = new Vector2(width, height); + + // + UpdateItemContent(item, index); + } + + private void UpdateItemContent(RectTransform item, int index) + { + // ȡImage + Image image = item.GetComponentInChildren(); + if (image == null && itemImageComponent != null) + { + // ûҵImageʹԤе + image = Instantiate(itemImageComponent, item); + image.rectTransform.anchorMin = Vector2.zero; + image.rectTransform.anchorMax = Vector2.one; + image.rectTransform.sizeDelta = Vector2.zero; + } + + if (image && index < sprites.Count && sprites[index] != null) + { + // þ + image.sprite = sprites[index]; + image.SetNativeSize(); + + // ImageΪֿ߱ + image.preserveAspect = true; + } + } + + private void RecycleInvisibleItems() + { + // ҳҪյ + List itemsToRecycle = new List(); + foreach (RectTransform item in activeItems) + { + string[] nameParts = item.name.Split('_'); + if (nameParts.Length >= 2 && int.TryParse(nameParts[1], out int itemIndex)) + { + if (itemIndex < visibleStartIndex || itemIndex > visibleEndIndex) + { + itemsToRecycle.Add(item); + } + } + } + + // + foreach (RectTransform item in itemsToRecycle) + { + item.gameObject.SetActive(false); + activeItems.Remove(item); + } + } + + private void OnScroll(Vector2 scrollPosition) + { + UpdateVisibleItems(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/WaterfallScrollView.cs.meta b/Assets/Scripts/Tools/WaterfallScrollView.cs.meta new file mode 100644 index 00000000..86868d47 --- /dev/null +++ b/Assets/Scripts/Tools/WaterfallScrollView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a86eb889d0df8142b20f98a27e5deb4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses.meta b/Assets/Scripts/Tools/ZXKLicenses.meta new file mode 100644 index 00000000..2dfa7e11 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fec87e21a9630c46b1a6ef7dec72ea6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta new file mode 100644 index 00000000..65aade6d --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb335401f53d3c94490f449b410da1ba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs new file mode 100644 index 00000000..bf304845 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs @@ -0,0 +1,139 @@ +using System; +using System.Collections; +using System.IO; +using TMPro; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.Networking; +using UnityEngine.UI; + +public class DateManager : MonoBehaviour +{ + private string EndTimer;//结束时间 + private string RecordData; + public GameObject ui; + public TextMeshProUGUI text; + public Button btn; + private void Awake() + { + ui.gameObject.SetActive(false); + btn.onClick.AddListener(() => + { + Application.Quit(); + }); +#if UNITY_WEBGL + StartCoroutine(WebUpdateTime()); +#else + UpdateTime(DecryptFileReader.ReadAndDecryptData("Timer.txt"), ShowTip, ShowTip, () => + { + gameObject.SetActive(false); + }); +#endif + } + + public void ShowTip(string str) + { + gameObject.SetActive(true); + ui.SetActive(true); + text.text = str; + } + + public IEnumerator WebUpdateTime() + { + string path = Path.Combine(Application.streamingAssetsPath, "Timer.txt"); + using (UnityWebRequest request = new UnityWebRequest(path)) + { + request.downloadHandler = new DownloadHandlerBuffer(); + yield return request.SendWebRequest(); + if (string.IsNullOrEmpty(request.error)) + { + string datas = DecryptFileReader.ReadAndDecryptData(request.downloadHandler.data); + UpdateTime(datas, ShowTip, ShowTip, () => + { + gameObject.SetActive(false); + }); + } + else + { + Debug.LogError(request.error); + } + } + } + + /// + /// 更新系统时间 + /// + public void UpdateTime(string datas, UnityAction error = null, UnityAction timeOut = null, UnityAction updateTimer = null) + { + try + { + EndTimer = datas.Split('|')[0]; + RecordData = datas.Split('|')[1]; + //第一次获取获取系统时间 + DateTime currentDateTime = DateTime.Now; + string Data = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + if (DateTime.TryParse(RecordData, out DateTime recordDateTime) && DateTime.TryParse(Data, out DateTime nowDateTime)) + { + if (recordDateTime > nowDateTime) + { + Debug.Log("仿真文件被损坏,请联系管理员进行修复"); + error?.Invoke("仿真文件被损坏,请联系管理员进行修复"); + } + else + { +#if !UNITY_WEBGL + //把上一次存储得系统时间更新到最新 + string timer = "Timer.txt"; + RecordData = Data; + string strMerge = EndTimer + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, timer); +#endif + updateTimer?.Invoke(); + } + } + } + catch (Exception e) + { + Debug.LogError($"数据出错: {e.Message}"); + error?.Invoke($"数据出错: {e.Message}"); + return; + } + + if (JudgeExpire()) + { + Debug.Log("请联系管理员进行升级"); + timeOut?.Invoke("请联系管理员进行升级"); + return; + } + } + + /// + /// 判断是否到期 + /// + /// + public bool JudgeExpire() + { + if (DateTime.TryParse(EndTimer, out DateTime endDataTime) && DateTime.TryParse(RecordData, out DateTime recordDateTime)) + { + //结束日期小于目前日期代表到期 + if (endDataTime < recordDateTime) + { + return true; + } + } + return false; + } + + + /// + /// 给客户打包的时候,需要设置EndTimer,然后运行一次生成文件并注释掉 + /// + public void CreatTimer() + { + //第一次获取获取系统时间 + DateTime currentDateTime = DateTime.Now; + RecordData = currentDateTime.ToString("yyyy-MM-dd HH:mm:ss"); + string strMerge = EndTimer + "|" + RecordData; + EncryptFileCreator.EncryptAndSaveData(strMerge, "Timer.txt"); + } +} diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta new file mode 100644 index 00000000..604aec1b --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DateManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 718cf7f3f1b16f141ab751a37af8cae1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs new file mode 100644 index 00000000..744b1ab2 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs @@ -0,0 +1,47 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class DecryptFileReader +{ + private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需与加密时一致 + private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节 + + public static string ReadAndDecryptData(string filePath) + { + string fullPath = Path.Combine(Application.streamingAssetsPath, filePath); + if (File.Exists(filePath)) return ""; + // 读取加密文件 + byte[] encryptedData = File.ReadAllBytes(fullPath); + return ReadAndDecryptData(encryptedData); + } + + + public static string ReadAndDecryptData(byte[] encryptedData) + { + + // 创建AES解密器 + using (Aes aesAlg = Aes.Create()) + { + aesAlg.Key = key; + aesAlg.IV = iv; + + ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); + + // 创建内存流和加密流 + using (MemoryStream msDecrypt = new MemoryStream(encryptedData)) + { + using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) + { + byte[] decryptedBytes = new byte[encryptedData.Length]; + int decryptedByteCount = csDecrypt.Read(decryptedBytes, 0, decryptedBytes.Length); + + // 将解密后的数据转换为字符串 + string decryptedData = Encoding.UTF8.GetString(decryptedBytes, 0, decryptedByteCount); + return decryptedData; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta new file mode 100644 index 00000000..a4452c9b --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/DecryptFileReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 354bc54210a77764ebad2d49b5e927ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs new file mode 100644 index 00000000..e19b7f24 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs @@ -0,0 +1,56 @@ +using System.IO; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class EncryptFileCreator +{ + private static byte[] key = Encoding.UTF8.GetBytes("Sixteen byte key"); // 加密密钥,需16字节 + private static byte[] iv = Encoding.UTF8.GetBytes("InitializationVe"); // 确保IV长度为16字节 + + public static void EncryptAndSaveData(string data,string path) + { + string filePath = Path.Combine(Application.streamingAssetsPath, path); + if (!File.Exists(filePath)) + { + try + { + // 创建文件 + File.WriteAllText(filePath, ""); + Debug.Log("文件已创建"); + } + catch (IOException e) + { + Debug.LogError($"创建文件时出错: {e.Message}"); + } + } + // 将数据转换为字节数组 + byte[] plainText = Encoding.UTF8.GetBytes(data); + + // 创建AES加密器 + using (Aes aesAlg = Aes.Create()) + { + aesAlg.Key = key; + aesAlg.IV = iv; + + ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); + + // 创建内存流和加密流 + using (MemoryStream msEncrypt = new MemoryStream()) + { + using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) + { + csEncrypt.Write(plainText, 0, plainText.Length); + csEncrypt.FlushFinalBlock(); + + // 获取加密后的数据 + byte[] encryptedData = msEncrypt.ToArray(); + + // 保存加密文件到StreamingAssets文件夹 + string fullPath = Path.Combine(Application.streamingAssetsPath, filePath); + File.WriteAllBytes(fullPath, encryptedData); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta new file mode 100644 index 00000000..77d8e4b9 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Encryption/EncryptFileCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 22f7660ba2e708d4eb33622fe324499b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs new file mode 100644 index 00000000..dd538b34 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs @@ -0,0 +1,73 @@ +using QFramework; +using System; +using System.Collections; +using UnityEngine; +using UnityEngine.Networking; + +public class HttpRestful : MonoSingleton +{ + public void Get(string url, Action actionResult = null) + { + StartCoroutine(_Get(url, actionResult)); + } + + private IEnumerator _Get(string url, Action action) + { + using (UnityWebRequest request = UnityWebRequest.Get(url)) + { + yield return request.SendWebRequest(); + + string resstr = ""; + if (request.isNetworkError || request.isHttpError) + { + resstr = request.error; + } + else + { + resstr = request.downloadHandler.text; + } + + if (action != null) + { + action(request.isHttpError, resstr); + } + } + } + public void Post(string url, string form, Action callBack, string Header = null, string HeaderValue = null, int timeOut = 3) + { + + StartCoroutine(_Post(url, form, callBack, Header, HeaderValue, timeOut)); + } + + public IEnumerator _Post(string url, string form, Action callBack, string Header = null, string HeaderValue = null, int timeOut = 3) + { + //请求链接,并将form对象发送到远程服务器 + using (UnityWebRequest webRequest = UnityWebRequest.Post(url, form, "application/json"))//;charset=utf-8 + { + if (!string.IsNullOrEmpty(Header) && !string.IsNullOrEmpty(HeaderValue)) + { + webRequest.SetRequestHeader(Header, HeaderValue); + } + webRequest.timeout = timeOut * 1000; + yield return webRequest.SendWebRequest(); + if (webRequest.result!= UnityWebRequest.Result.Success) + { + Debug.Log(webRequest.error); + callBack?.Invoke(false, webRequest.downloadHandler); + } + else + { + callBack?.Invoke(true, webRequest.downloadHandler); + } + //if (webRequest.isHttpError || webRequest.isNetworkError) + //{ + // //Debug.LogError("==========="); + // callBack?.Invoke(false, null); + //} + //else + //{ + // callBack?.Invoke(true, webRequest.downloadHandler); + //} + }; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta new file mode 100644 index 00000000..2fa9020e --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/HttpRestful.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cca16177d7a134a43a4fb3320d5b8fc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence.meta new file mode 100644 index 00000000..a4c0b9c7 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 32677377141e60248a7a2484825ce1d4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs new file mode 100644 index 00000000..d84ee2c5 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LicenceData +{ + public string project_id; + public string user_name; + public string license_code; + public string host_id; + public string duration; //使用时长 + public string sign; +} +public class Datas +{ + public static string Project_id = "7"; + public static string secretKey = "pZNwkYoMRp7MG_O7aGtmA"; + public static string UserName; + public static string Licensecode; + public static string Hostid; + public static int Duration;//持续时间 +} +[Serializable] +public class License +{ + public int id; + public string user_name; + public string license_code; + public int is_authorized; + public string host_id; + public string authorization_at; + public string authorization_end_at; + public string created_at; + public int login_count; + public int duration; + public string last_login; +} + +[Serializable] +public class LicenseValidationResponse +{ + public string status; + public string message; + public License license; +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta new file mode 100644 index 00000000..de5c59a7 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenceData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f40d10c2dcbad941ac179b38fde96bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs new file mode 100644 index 00000000..0246d5db --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs @@ -0,0 +1,180 @@ +using Newtonsoft.Json; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Net.NetworkInformation; +using System.Security.Cryptography; +using System.Text; +using UnityEngine; + +public class LicenseManager : MonoBehaviour +{ + private Dictionary Data = new(); + private LicenseValidationResponse LicenseRes = new LicenseValidationResponse(); + private string Hostid = ""; + + public void Init() + { + Hostid = GetPhysicalAddress(); + Datas.Hostid = Hostid; + } + public LicenceData GetLicenceData(string projectid, string userName, string licensecode, string hostid, int duration) + { + Data.Clear(); + LicenceData licence = new LicenceData(); + licence.project_id = projectid; + licence.user_name = userName; + licence.license_code = licensecode; + licence.host_id = hostid; + licence.duration = duration.ToString(); + if (!Data.ContainsKey("project_id")) + { + Data.Add("project_id", licence.project_id); + } + if (!Data.ContainsKey("user_name")) + { + Data.Add("user_name", licence.user_name); + } + if (!Data.ContainsKey("license_code")) + { + Data.Add("license_code", licence.license_code); + } + if (!Data.ContainsKey("host_id")) + { + Data.Add("host_id", licence.host_id); + } + if (!Data.ContainsKey("duration")) + { + Data.Add("duration", licence.duration); + } + licence.sign = GenerateSignature(Datas.secretKey, Data); + return licence; + } + /// + /// 请求 + /// + /// + /// + public void LicensePost(Action callBack = null) + { + LicenceData licence = GetLicenceData(Datas.Project_id, Datas.UserName, Datas.Licensecode, Datas.Hostid, Datas.Duration); + + string json = JsonConvert.SerializeObject(licence); + HttpRestful.Instance.Post("https://locallicense.zxkedu.com/api/license/validate/", json, (m, n) => + { + JsonConvert.DeserializeObject(n.text); + if (LicenseRes.status == "success") + { + EncryptedFile(); + } + callBack.Invoke(m); + }); + } + + /// + /// 生成密匙 + /// + /// + /// + /// + public string GenerateSignature(string secretKey, Dictionary data) + { + // 添加当前时间戳 + //string timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(); + //获取当前时间戳并四舍五入到最近的分钟 + long timestamp = (long)(DateTimeOffset.UtcNow.ToUnixTimeSeconds() / 60) * 60; + //long timestamp = (long)(GetTimestamp() / 60) * 60; + if (!data.ContainsKey("timestamp")) + { + data.Add("timestamp", timestamp.ToString()); + } + else + { + data["timestamp"] = timestamp.ToString(); + } + // 对键值对进行排序 + var sortedData = data.OrderBy(kvp => kvp.Key); + Debug.Log("sortedData对键值对进行排序:" + sortedData); + + // 构建查询字符串 + string queryString = string.Join("&", sortedData.Select(kvp => $"{kvp.Key}={kvp.Value}")); + Debug.Log("queryString构建查询字符串:" + queryString); + // 使用HMAC-SHA256生成签名 + using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey))) + { + byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(queryString)); + Debug.Log("生成签名:" + BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant()); + return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant(); + } + } + + public void StartSetDuration() + { + if (gameObject.activeSelf) + { + StartCoroutine(SetDuration(60f)); + } + } + + IEnumerator SetDuration(float times) + { + while (true) + { + yield return new WaitForSeconds(times); + Datas.Duration++; + LicensePost(); + Datas.Duration = 0; + } + } + public string GetMachineGuid() + { + if (string.IsNullOrEmpty(Hostid)) + { + NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); + foreach (NetworkInterface ni in nis) + { + if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || + ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet) + { + Hostid = ni.GetPhysicalAddress().ToString(); + break; + } + } + } + return Hostid; + } + + string GetPhysicalAddress() + { + //string physicalAddress = ""; + //NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces(); + //foreach (NetworkInterface ni in nis) + //{ + // if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet && ni.OperationalStatus == OperationalStatus.Up) + // { + // physicalAddress = ni.GetPhysicalAddress().ToString(); + // break; + // } + //} + return SystemInfo.deviceUniqueIdentifier; + } + + /// + /// 本地存储Hostid + /// + public void EncryptedFile() + { + string dataToEncrypt = Datas.UserName + "|" + Datas.Licensecode + "|"; + EncryptFileCreator.EncryptAndSaveData(dataToEncrypt, "encryptedData.txt"); + } + /// + /// 读取Hostid + /// + /// + public string ReadDecryptedFile() + { + string decryptedData = DecryptFileReader.ReadAndDecryptData("encryptedData.txt"); + return decryptedData; + } +} diff --git a/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta new file mode 100644 index 00000000..b85899a3 --- /dev/null +++ b/Assets/Scripts/Tools/ZXKLicenses/Licence/LicenseManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13a2f840c2d90a44b8473ca7cf9adef1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIImageSelectMap.Designer.cs b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs new file mode 100644 index 00000000..1775c1de --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs @@ -0,0 +1,55 @@ +using System; +using UnityEngine; +using UnityEngine.UI; +using QFramework; + +namespace QFramework.Example +{ + // Generate Id:b499f0f9-a71b-40ff-a499-a5e4defad39f + public partial class UIImageSelectMap + { + public const string Name = "UIImageSelectMap"; + + [SerializeField] + public RectTransform LeftContent; + [SerializeField] + public UnityEngine.UI.Image LeftItem; + [SerializeField] + public UnityEngine.UI.Image RightItem; + [SerializeField] + public RectTransform RightContent; + + private UIImageSelectMapData mPrivateData = null; + + protected override void ClearUIComponents() + { + LeftContent = null; + LeftItem = null; + RightItem = null; + RightContent = null; + + mData = null; + } + + public UIImageSelectMapData Data + { + get + { + return mData; + } + } + + UIImageSelectMapData mData + { + get + { + return mPrivateData ?? (mPrivateData = new UIImageSelectMapData()); + } + set + { + mUIData = value; + mPrivateData = value; + } + } + } +} diff --git a/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta new file mode 100644 index 00000000..7249517e --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.Designer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30b3cad2e23c39b43befa7ffb3bae172 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs b/Assets/Scripts/UI/UIImageSelectMap.cs new file mode 100644 index 00000000..cb29749c --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.cs @@ -0,0 +1,188 @@ +using UnityEngine; +using UnityEngine.UI; +using QFramework; +using System.Collections.Generic; +using UnityEngine.EventSystems; +using System; + +namespace QFramework.Example +{ + public class UIImageSelectMapData : UIPanelData + { + public class OptionItem + { + public string pic; + public Vector2 pos; + public Vector2 size; + } + public string scoreName; + public float totalScore; + public float rightScore; + public float wrongScore; + public string rightLabel; + public string wrongLabel; + public string finishedEvent; + public string rightBg; + public List items = new List(); + + } + public partial class UIImageSelectMap : UIPanel + { + ResLoader loader; + GameObject moveObj; + GameObject enterRight; + GameObject leftDragObj; + Dictionary itemDatas = new Dictionary(); + + Dictionary leftObjAndRightObj = new Dictionary(); + protected override void OnInit(IUIData uiData = null) + { + mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); + // please add init code here + loader = ResLoader.Allocate(); + } + + protected override void OnOpen(IUIData uiData = null) + { + mData = uiData as UIImageSelectMapData ?? new UIImageSelectMapData(); + + LeftContent.RemoveAllChildren(); + RightContent.RemoveAllChildren(); + itemDatas.Clear(); + leftObjAndRightObj.Clear(); + foreach (var item in mData.items) + { + var leftObj = GameObject.Instantiate(LeftItem, LeftContent); + leftObj.name = item.pic; + var path = Global.imagePath + item.pic; + loader.Add2Load(path.ToNetImageResName(), (success, res) => + { + if (success) + { + leftObj.transform.Find("Pic").GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); + } + }); + + leftObj.OnBeginDragEvent(LeftOnBeginDrag); + leftObj.OnDragEvent(LeftOnDrag); + leftObj.OnEndDragEvent(LeftOnEndDrag); + itemDatas.Add(leftObj.gameObject, item); + + var rightObj = GameObject.Instantiate(RightItem, RightContent); + rightObj.name = item.pic; + rightObj.rectTransform.anchoredPosition = item.pos; + rightObj.rectTransform.sizeDelta = item.size; + rightObj.OnPointerEnterEvent(RightOnEnter); + rightObj.OnPointerExitEvent(RightOnExit); + rightObj.OnPointerClickEvent(RightOnClick); + } + + + + var rightBgPath = Global.imagePath + mData.rightBg; + loader.Add2Load(rightBgPath.ToNetImageResName(), (success, res) => + { + if (success) + { + RightContent.GetComponent().sprite = Utility.GetSprite(res.Asset as Texture2D); + RightContent.GetComponent().SetNativeSize(); + } + }); + + loader.LoadAsync(); + + + + } + + private void RightOnClick(PointerEventData data) + { + Transform trans = data.pointerClick.transform; + if (trans.childCount > 0) + { + var child = trans.GetChild(0).gameObject; + if (leftObjAndRightObj.ContainsKey(child)) + { + leftObjAndRightObj[child].SetActive(true); + leftObjAndRightObj.Remove(child); + GameObject.Destroy(child); + trans.GetComponent().color = new Color(1, 1, 1, 0); + + } + else + { + Debug.LogError("ûҵӦ"); + } + } + } + + private void RightOnExit(PointerEventData data) + { + enterRight = null; + } + + private void RightOnEnter(PointerEventData data) + { + enterRight = data.pointerEnter.gameObject; + } + + private void LeftOnBeginDrag(PointerEventData data) + { + leftDragObj = data.pointerDrag; + moveObj = GameObject.Instantiate(leftDragObj, gameObject.transform); + moveObj.name = moveObj.name.Replace("(Clone)", ""); + moveObj.GetComponent().sizeDelta = LeftContent.GetComponent().cellSize; + moveObj.GetComponent().raycastTarget = false; + + } + + private void LeftOnEndDrag(PointerEventData data) + { + if (enterRight) + { + if (enterRight.name == itemDatas[leftDragObj].pic) + { + Debug.LogError("ȷ"); + enterRight.GetComponent().color = Color.green; + } + else + { + Debug.LogError(""); + enterRight.GetComponent().color = Color.red; + } + moveObj.transform.parent = enterRight.transform; + moveObj.transform.localPosition = Vector3.zero; + leftObjAndRightObj.Add(moveObj, leftDragObj); + leftDragObj.SetActive(false); + } + else + { + GameObject.Destroy(moveObj); + moveObj = null; + } + leftDragObj = null; + } + + private void LeftOnDrag(PointerEventData data) + { + //data.pointerDrag.transform.position = Input.mousePosition; + if (moveObj) + { + moveObj.transform.position = Input.mousePosition; + } + } + + + protected override void OnShow() + { + } + + protected override void OnHide() + { + } + + protected override void OnClose() + { + } + } +} diff --git a/Assets/Scripts/UI/UIImageSelectMap.cs.meta b/Assets/Scripts/UI/UIImageSelectMap.cs.meta new file mode 100644 index 00000000..9a10b604 --- /dev/null +++ b/Assets/Scripts/UI/UIImageSelectMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8fa5d149f86eeb54d89208e36562e2d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/UIInput.cs b/Assets/Scripts/UI/UIInput.cs index 26e19459..cdaa91a7 100644 --- a/Assets/Scripts/UI/UIInput.cs +++ b/Assets/Scripts/UI/UIInput.cs @@ -53,13 +53,17 @@ namespace QFramework.Example foreach (var item in mData.inputs) { GameObject input = GameObject.Instantiate(InputItem.gameObject, InputContent); + input.name = item.name; input.transform.Find("Name").GetComponent().text = item.name; var inputField = input.transform.Find("Input").GetComponent(); inputField.onEndEdit.AddListener(value => { - float v = 0; - float.TryParse(value, out v); - VarController.Instance.Set(item.var, v); + if (string.IsNullOrEmpty(item.var) == false) + { + float v = 0; + float.TryParse(value, out v); + VarController.Instance.Set(item.var, v); + } }); } @@ -125,12 +129,24 @@ namespace QFramework.Example foreach (var item in mData.inputs) { var list = item.answer.Split('|').ToList(); - if (list.Contains(VarController.Instance.Get(item.var).ToString())==false) + if (string.IsNullOrEmpty(item.var)) { - return false; + Transform trans = InputContent.transform.Find(item.name); + string inputStr = trans.Find("Input").GetComponent().text; + if (list.Contains(inputStr)) + { + return true; + } + } + else + { + if (list.Contains(VarController.Instance.Get(item.var).ToString())) + { + return true; + } } } - return true; + return false; } protected override void OnShow() diff --git a/Assets/Scripts/UI/UIScore.cs b/Assets/Scripts/UI/UIScore.cs index bc346de6..d8b74456 100644 --- a/Assets/Scripts/UI/UIScore.cs +++ b/Assets/Scripts/UI/UIScore.cs @@ -1,6 +1,9 @@ using Newtonsoft.Json; +using System; +using System.Collections.Generic; using TMPro; using UnityEngine; +using static LYTWebGLHelper; namespace QFramework.Example { @@ -30,7 +33,7 @@ namespace QFramework.Example -#if UNITY_WEBGL +#if UNITY_WEBGL&&!UNITY_EDITOR ResLoader loader = ResLoader.Allocate(); loader.Add2Load(Global.reportDemoPath.ToLocalBytesResName(), (success, res) => { @@ -42,7 +45,7 @@ namespace QFramework.Example } }); loader.LoadAsync(); -#elif UNITY_STANDALONE_WIN +#elif UNITY_STANDALONE_WIN||UNITY_EDITOR DownLoad.interactable = false; AsposeHelper.Writer(GetScoreDataJson(), () => { @@ -57,11 +60,7 @@ namespace QFramework.Example public string GetScoreDataJson() { - var data = new LabReprotData(); - data.realname = InputName.text; - data.biaobencaiji_1_buzhou_1 = "[1111]"; - string json = JsonConvert.SerializeObject(data); - return json; + return ScoreController.Instance.GetModuleDictJson(InputName.text, InputId.text, this.Score.text); } @@ -88,6 +87,8 @@ namespace QFramework.Example } + List datas = new List(); + int seq = 1; if (onlyCur) { foreach (var item in ScoreController.Instance.GetCurScoreData()) @@ -99,6 +100,17 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; + datas.Add(new Expstepvtwolist() + { + ExpStepName = item.Value.step + item.Value.name, + maxScore = int.Parse(item.Value.sum), + score = (int)item.Value.value, + startTime = item.Value.time, + endTime = item.Value.time, + seq = seq, + StepState = (int)item.Value.value == float.Parse(item.Value.sum) ? "ȫȷ" : "д" + }); + seq++; } } else @@ -114,6 +126,16 @@ namespace QFramework.Example obj.transform.Find("Score").GetComponent().text = item.Value.value.ToString(); sum += float.Parse(item.Value.sum); score += item.Value.value; + datas.Add(new Expstepvtwolist() + { + ExpStepName = item.Value.step + item.Value.name, + maxScore = int.Parse(item.Value.sum), + score = (int)item.Value.value, + startTime = item.Value.time, + endTime = item.Value.time, + seq = seq + }); + seq++; } } } @@ -122,6 +144,10 @@ namespace QFramework.Example this.Score.text = score.ToString(); this.Sum.text = sum.ToString(); +#if UNITY_WEBGL + + LYTWebGLHelper.Instance.UpLoadData((int)score, datas.ToArray()); +#endif } protected override void OnShow() diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index 4602fa5c..62c12cca 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -1,5 +1,6 @@ using QFramework; using QFramework.Example; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -65,6 +66,8 @@ namespace XMLTool public string BoxColliderCenter { get; set; } public bool MeshCollider { get; set; } + + public int Count = -1; } @@ -81,6 +84,8 @@ namespace XMLTool public string sum; public string bind; public float value; + public string time; + public string timeFormat = "yyyy-MM-dd HH:mm:ss"; } @@ -439,6 +444,7 @@ namespace XMLTool name = item.Attribute("name")?.Value, sum = item.Attribute("sum")?.Value, bind = item.Attribute("bind")?.Value, + timeFormat = item.Attribute("timeFormat")?.Value, }); } } @@ -1674,6 +1680,61 @@ namespace XMLTool newAction = act; } break; + case "ImageSelectMap": + { + var act = new ImageSelectMapAction(); + XAttribute scoreName = action.Attribute("scoreName"); + if (scoreName != null) + { + act.args.Add("scoreName", scoreName.Value); + } + XAttribute totalScore = action.Attribute("totalScore"); + if (totalScore != null) + { + act.args.Add("totalScore", totalScore.Value); + } + XAttribute rightScore = action.Attribute("rightScore"); + if (rightScore != null) + { + act.args.Add("rightScore", rightScore.Value); + } + XAttribute wrongScore = action.Attribute("wrongScore"); + if (wrongScore != null) + { + act.args.Add("wrongScore", wrongScore.Value); + } + XAttribute rightLabel = action.Attribute("rightLabel"); + if (rightLabel != null) + { + act.args.Add("rightLabel", rightLabel.Value); + } + XAttribute wrongLabel = action.Attribute("wrongLabel"); + if (wrongLabel != null) + { + act.args.Add("wrongLabel", wrongLabel.Value); + } + XAttribute finishedEvent = action.Attribute("finishedEvent"); + if (finishedEvent != null) + { + act.args.Add("finishedEvent", finishedEvent.Value); + } + XAttribute rightBg = action.Attribute("rightBg"); + if (rightBg != null) + { + act.args.Add("rightBg", rightBg.Value); + } + foreach (var itemData in action.Elements("Item")) + { + act.items.Add(new ImageSelectMapAction.Item() + { + pic = itemData.Attribute("pic")?.Value, + size = itemData.Attribute("rightSize")?.Value, + pos = itemData.Attribute("rightPos")?.Value + }); + } + newAction = act; + } + break; default: newAction = new Action(); break; diff --git a/Assets/StreamingAssets/Timer.txt b/Assets/StreamingAssets/Timer.txt new file mode 100644 index 00000000..a2dd3e38 --- /dev/null +++ b/Assets/StreamingAssets/Timer.txt @@ -0,0 +1 @@ +ILBJ05 lF)#BȲUv}]u.\G \ No newline at end of file diff --git a/Assets/StreamingAssets/Timer.txt.meta b/Assets/StreamingAssets/Timer.txt.meta new file mode 100644 index 00000000..884fc80c --- /dev/null +++ b/Assets/StreamingAssets/Timer.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b4029b9b6235264f8d2594721eb300a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WebPlatform/Scripts/WebGLHelper.cs b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs similarity index 51% rename from Assets/WebPlatform/Scripts/WebGLHelper.cs rename to Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs index ad0d032f..56356007 100644 --- a/Assets/WebPlatform/Scripts/WebGLHelper.cs +++ b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs @@ -11,21 +11,22 @@ using UnityEngine; using UnityEngine.Events; using UnityEngine.Networking; -public class WebGLHelper : Singleton +public class LYTWebGLHelper : MonoSingleton { - private WebGLHelper() { } + private LYTWebGLHelper() { } public class LabData { public string GUID; public string ExpID; - public string HOST; + public string HOST = string.Empty; public string PARA1; public string PARA; public string PARA2; } +#if UNITY_WEBGL [DllImport("__Internal")] - private static extern string GetURLParameter(string name); - + private static extern IntPtr GetURLParameter(string name); +#endif string token = string.Empty; LabData labData = new LabData(); @@ -35,20 +36,40 @@ public class WebGLHelper : Singleton public string uploadUrl; + private void Awake() + { + Init(); + } public void Init() { - token = GetURLParameter("token").Replace("%2B", "+"); - RSA = Resources.Load("RSA"); - string urlData = Decrypt(token); - var datas = urlData.Split("&"); - labData.GUID = datas[0]; - labData.ExpID = datas[1]; - labData.HOST = datas[2]; - labData.PARA1 = datas[3]; - labData.PARA = datas[4]; - labData.PARA2 = datas[5]; +#if UNITY_WEBGL && !UNITY_EDITOR - uploadUrl = Path.Combine(labData.HOST, "host/public/Exp/AddScore/"); + var paramPtr = GetURLParameter("token"); + if (paramPtr != IntPtr.Zero) + { + string value = Marshal.PtrToStringUTF8(paramPtr); + //token = value.Replace("%2B", "+"); + token = value.Replace(" ", "+"); + Marshal.FreeHGlobal(paramPtr); // ͷŷڴ + } + Debug.LogError("ȡģ" + token); +#endif + + + + RSA = Resources.Load("LYTWebGL/RSA"); + if (string.IsNullOrEmpty(token) == false) + { + string urlData = Decrypt(token); + var datas = urlData.Split("&"); + labData.GUID = datas[0]; + labData.ExpID = datas[1]; + labData.HOST = datas[2]; + labData.PARA1 = datas[3]; + labData.PARA = datas[4]; + labData.PARA2 = datas[5]; + } + uploadUrl = Path.Combine(labData.HOST, "public/Exp/AddScore/"); } /// /// Decrypts encrypted text given a RSA private key file path.· RSA ˽Կļ @@ -83,35 +104,42 @@ public class WebGLHelper : Singleton - public void UpLoadData(int totalScore, List stepNames, List maxScore, List score) + public void UpLoadData(int totalScore, Expstepvtwolist[] datas) { + if (string.IsNullOrEmpty(labData.GUID)) + { + return; + } var data = new UploadData(); data.GUID = labData.GUID; - data.ExpID = int.Parse(labData.ExpID); + int expId = 0; + int.TryParse(labData.ExpID, out expId); + data.ExpID = expId; data.score = totalScore; data.flag = true; + //var list = new List(); + //for (int i = 0; i < stepNames.Count; i++) + //{ + // var step = new Expstepvtwolist(); + // step.ExpStepName = stepNames[i]; + // step.maxScore = maxScore[i]; + // step.score = score[i]; + // step.seq = i + 1; + // list.Add(step); + //} + data.ExpStepVTwoList = datas; - var list = new List(); - for (int i = 0; i < stepNames.Count; i++) - { - var step = new Expstepvtwolist(); - step.ExpStepName = stepNames[i]; - step.maxScore = maxScore[i]; - step.score = score[i]; - } - data.ExpStepVTwoList = list.ToArray(); - - + StartCoroutine(SendScore(JsonConvert.SerializeObject(data))); } - IEnumerator SendScore(string json, UnityAction action) + IEnumerator SendScore(string json, UnityAction action = null) { if (string.IsNullOrEmpty(uploadUrl)) { Debug.LogError("ϴӿڵַ:" + uploadUrl); yield break; } - + Debug.LogError("ϴ:" + json); using (UnityWebRequest request = new UnityWebRequest(uploadUrl, "POST")) { request.SetRequestHeader("Content-Type", "application/json"); @@ -122,6 +150,7 @@ public class WebGLHelper : Singleton if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { + Debug.LogError($"Upload failed: {request.uri}"); Debug.LogError($"Upload failed: {request.error}"); Debug.LogError($"Response Code: {request.responseCode}"); } @@ -132,58 +161,60 @@ public class WebGLHelper : Singleton Debug.Log($"Server Response: {request.downloadHandler.text}"); Response response = JsonConvert.DeserializeObject(request.downloadHandler.text); Debug.LogError(response.msg); + action?.Invoke(response.msg); } } } + + public class UploadData + { + public string GUID { get; set; } + // ʵ ID + public int ExpID { get; set; } + // ɼ + public int score { get; set; } + // ־λĬֵ true + public bool flag { get; set; } + // ʵ鲽б + public Expstepvtwolist[] ExpStepVTwoList { get; set; } + } + + public class Expstepvtwolist + { + // ʵ鲽 + public int seq { get; set; } + // ʵ鲽 + public string ExpStepName = ""; + // ʵ鲽״̬ + public string StepState = ""; + // ʵ鲽迪ʼʱ + public string startTime; + // ʵ鲽ʱ + public string endTime; + // ʵ鲽ʱλ + public int expectTime = 0; + // ʵ鲽֣0 ~100ٷ + public int maxScore = 100; + // ʵ鲽÷֣0 ~100ٷ + public int score = 0; + // ʵ鲽 + public int repeatCount = 1; + // ۣ200 + public string evaluation = ""; + // ģͣ200 + public string scoringModel = ""; + // ע + public string remarks { get; set; } + } + + public class Response + { + public string msg; + public bool success; + } } -public class UploadData -{ - public string GUID { get; set; } - // ʵ ID - public int ExpID { get; set; } - // ɼ - public int score { get; set; } - // ־λĬֵ true - public bool flag { get; set; } - // ʵ鲽б - public Expstepvtwolist[] ExpStepVTwoList { get; set; } -} - -public class Expstepvtwolist -{ - // ʵ鲽 - public int seq { get; set; } - // ʵ鲽 - public string ExpStepName = ""; - // ʵ鲽״̬ - public string StepState = ""; - // ʵ鲽迪ʼʱ - public DateTime startTime = default; - // ʵ鲽ʱ - public DateTime endTime = default; - // ʵ鲽ʱλ - public int expectTime = 0; - // ʵ鲽֣0 ~100ٷ - public int maxScore = 100; - // ʵ鲽÷֣0 ~100ٷ - public int score = 0; - // ʵ鲽 - public int repeatCount = 1; - // ۣ200 - public string evaluation = ""; - // ģͣ200 - public string scoringModel = ""; - // ע - public string remarks { get; set; } -} - -public class Response -{ - public string msg; - public bool success; -} \ No newline at end of file diff --git a/Assets/WebPlatform/Scripts/WebGLHelper.cs.meta b/Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta similarity index 100% rename from Assets/WebPlatform/Scripts/WebGLHelper.cs.meta rename to Assets/WebPlatform/LaiYiTe/LYTWebGLHelper.cs.meta diff --git a/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib b/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib index a460273f..5a076284 100644 --- a/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib +++ b/Assets/WebPlatform/Plugins/WebGL/GetParameters.jslib @@ -1,9 +1,17 @@ -// 名为 "URLParameters.jslib" 的插件文件 mergeInto(LibraryManager.library, { GetURLParameter: function (name) { - var search = window.location.search.substring(1); - var params = new URLSearchParams(search); - var value = params.get(name); - return value ? Pointer_stringify(value) : null; + const paramName = UTF8ToString(name); + const search = window.location.search.substring(1); + const params = new URLSearchParams(search); + const value = params.get(paramName); + console.log('GetURLParameter:', value); + + if (value) { + var buffer = _malloc((value.length + 1) * 2); + stringToUTF8(value, buffer, (value.length + 1) * 2); + return buffer; + } else { + return 0; + } } }); \ No newline at end of file diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index b10f67ff..9d4c7bb3 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -294,22 +294,24 @@ - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 463f24c8..9dff2870 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -970,4 +970,4 @@ PlayerSettings: hmiLoadingImage: {fileID: 0} platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 - insecureHttpOption: 0 + insecureHttpOption: 2