소스 검색

1.允许蓝牙扫描时退出 2.新增GPS权限提示 3.修改所有“同意”为“Next”

lvjincheng 3 년 전
부모
커밋
9f72485dd2

+ 550 - 0
Assets/BowArrow/Resources/Prefabs/Views/ModalConfirmView.prefab

@@ -0,0 +1,550 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1759771882352074987
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6021838994659733952}
+  - component: {fileID: 6655326060265177874}
+  - component: {fileID: 808532463422495915}
+  - component: {fileID: 6950886783336125628}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6021838994659733952
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1759771882352074987}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 8986932229888614480}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6655326060265177874
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1759771882352074987}
+  m_CullTransparentMesh: 1
+--- !u!114 &808532463422495915
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1759771882352074987}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 30
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u77E5\u9053\u4E86"
+--- !u!114 &6950886783336125628
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1759771882352074987}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: modal-confirm-default
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
+--- !u!1 &2490759914253221424
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2705667709857960329}
+  - component: {fileID: 4883677522751488355}
+  - component: {fileID: 4886502705004986872}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2705667709857960329
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2490759914253221424}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6614441225229368537}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: -40, y: -40}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4883677522751488355
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2490759914253221424}
+  m_CullTransparentMesh: 1
+--- !u!114 &4886502705004986872
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2490759914253221424}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 24
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u81EA\u5B9A\u4E49\u5185\u5BB9"
+--- !u!1 &5818464976842896153
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4849430171489560762}
+  - component: {fileID: 297155808017089347}
+  - component: {fileID: 3260348797526822736}
+  m_Layer: 5
+  m_Name: BG
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4849430171489560762
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5818464976842896153}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7334376591686909305}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &297155808017089347
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5818464976842896153}
+  m_CullTransparentMesh: 1
+--- !u!114 &3260348797526822736
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5818464976842896153}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0.60784316}
+  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 &6300225017242725192
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7334376591686909305}
+  - component: {fileID: 294036343681075678}
+  - component: {fileID: 740210732070317689}
+  - component: {fileID: 1066760068857542687}
+  m_Layer: 5
+  m_Name: ModalConfirmView
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7334376591686909305
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6300225017242725192}
+  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_Children:
+  - {fileID: 4849430171489560762}
+  - {fileID: 6614441225229368537}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &294036343681075678
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6300225017242725192}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 20
+  m_TargetDisplay: 0
+--- !u!114 &740210732070317689
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6300225017242725192}
+  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: 1280, y: 720}
+  m_ScreenMatchMode: 1
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &1066760068857542687
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6300225017242725192}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!1 &7619626958091852726
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6614441225229368537}
+  - component: {fileID: 8829621791847901553}
+  - component: {fileID: 456222580493940770}
+  m_Layer: 5
+  m_Name: Frame
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6614441225229368537
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7619626958091852726}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2705667709857960329}
+  - {fileID: 8986932229888614480}
+  m_Father: {fileID: 7334376591686909305}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 600, y: 300}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8829621791847901553
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7619626958091852726}
+  m_CullTransparentMesh: 1
+--- !u!114 &456222580493940770
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7619626958091852726}
+  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 &8399098349137179161
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8986932229888614480}
+  - component: {fileID: 556479076694592721}
+  - component: {fileID: 6367199833454635640}
+  - component: {fileID: 3575260281841763758}
+  m_Layer: 5
+  m_Name: BtnConfirm
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8986932229888614480
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8399098349137179161}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 6021838994659733952}
+  m_Father: {fileID: 6614441225229368537}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 0}
+  m_AnchoredPosition: {x: 0, y: -61}
+  m_SizeDelta: {x: 600, y: 60}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &556479076694592721
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8399098349137179161}
+  m_CullTransparentMesh: 1
+--- !u!114 &6367199833454635640
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8399098349137179161}
+  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: 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 &3575260281841763758
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8399098349137179161}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, 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, g: 0.8706703, b: 1, 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: 6367199833454635640}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []

+ 7 - 0
Assets/BowArrow/Resources/Prefabs/Views/ModalConfirmView.prefab.meta

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

+ 25 - 8
Assets/BowArrow/Scripts/Bluetooth/BluetoothAim.cs

@@ -84,6 +84,7 @@ public class BluetoothAim : MonoBehaviour
         }
         if (status == BluetoothStatusEnum.Connect)
         {
+            connectCanceled = false;
             userDoConnect = true;
             doConnect = true;
             SetStatus(BluetoothStatusEnum.Connecting);
@@ -100,6 +101,8 @@ public class BluetoothAim : MonoBehaviour
             #endif
         }
     }
+    //连接取消,退回登录时需要取消连接(扫描)
+    [NonSerialized] public bool connectCanceled = false;
 
     void OnDisconnect()
     {
@@ -161,6 +164,7 @@ public class BluetoothAim : MonoBehaviour
         doConnect = false;
         scanLock = true;
         canConnect = false;
+        _scanCanRetryCount = 2;
         SetStatus(BluetoothStatusEnum.Connecting);
         #if UNITY_STANDALONE_WIN || UNITY_EDITOR
         ConnectBleByUDP();
@@ -169,6 +173,7 @@ public class BluetoothAim : MonoBehaviour
         #endif
     }
 
+    int _scanCanRetryCount = 2;
     void ConnectBleHelper()
     {
         #if UNITY_ANDROID
@@ -198,6 +203,13 @@ public class BluetoothAim : MonoBehaviour
             {
                 Log("连接成功\n" + helper.getDeviceName());
                 SetStatus(BluetoothStatusEnum.ConnectSuccess);
+
+                if (connectCanceled) {
+                    Debug.Log("ble connectCanceled");
+                    DoConnect();
+                    return;
+                }
+
                 BowCamera.isTouchMode = false;
                 foreach (BluetoothHelperService service in helper.getGattServices())
                 {
@@ -253,10 +265,16 @@ public class BluetoothAim : MonoBehaviour
                     AimHandler.ins.OnDataReceived(bytes);
                 }
             };
-            int scanCount = 0;
             bluetoothHelper.OnScanEnded += (BluetoothHelper helper, LinkedList<BluetoothDevice> nearbyDevices) =>
             {
                 scanLock = false;
+                if (connectCanceled) {
+                    userDoConnect = false;
+                    canConnect = true;
+                    status = BluetoothStatusEnum.Connect;
+                    Debug.Log("ble connectCanceled");
+                    return;
+                }
                 foreach (BluetoothDevice device in nearbyDevices)
                 {
                     Log("发现设备 " + device.DeviceName);
@@ -269,16 +287,15 @@ public class BluetoothAim : MonoBehaviour
                         return;
                     }
                 }
-                if (scanCount < 3)
-                { //如果没扫描到,则重新扫描,达到延迟提示失败的效果
-                    scanCount++;
+                if (_scanCanRetryCount > 0) {
+                    _scanCanRetryCount--;
                     scanLock = true;
-                    bluetoothHelper.ScanNearbyDevices();
-                }
-                else
-                {
+                    ConnectBleHelper();
+                } else {
+                    userDoConnect = false;
                     canConnect = true;
                     Log("没有发现设备");
+                    TextAutoLanguage2.GetTextByKey("ble-dev-notfound");
                     SetStatus(BluetoothStatusEnum.ConnectFail);
                 }
             };

+ 5 - 0
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json

@@ -7,7 +7,11 @@
     "common_del": "删除",
     "common_yes": "是",
     "common_no": "否",
+    "common_cancel": "取消",
 
+    "modal-confirm-default": "知道了",
+
+    "gps_nopermission-tip": "我们需要您的定位,但获取失败。\n原因:您尚未授予定位权限。",
     "gps_notopen": "您还没打开GPS开关",
     "gps_go-to-open": "前往打开",
     "gps_giveup-open": "不打开了",
@@ -153,6 +157,7 @@
     "ble-exception1": "未打开手机蓝牙开关",
     "ble-exception2": "未授予<定位>权限",
     "ble-exception3": "未授予<连接附近的设备>权限",
+    "ble-dev-notfound": "未发现目标设备",
 
     "MagInterferenceTip_content": "由于地磁计初始化易受到周围环境的影响,因此在初始化过程中请按照以下步骤来做:\n1、请在初始化过程中,保持周围环境的稳定,远离金属物体和磁场干扰。\n2、请保持智能弓箭模块和手机、电视等电子设备0.5米以上的距离。\n3、请将安装了模块的智能弓箭或单独模块沿着XYZ三轴进行充分地旋转,直到提示完成为止。\n4、如多次无法完成初始化,也可继续使用,只是瞄准的精度会受到影响,游戏中需多做一次视角归位的操作。",
     "MagInterferenceTip_ok": "确定",

+ 5 - 0
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json

@@ -7,7 +7,11 @@
     "common_del": "Delete",
     "common_yes": "Yes",
     "common_no": "No",
+    "common_cancel": "Cancel",
 
+    "modal-confirm-default": "OK",
+
+    "gps_nopermission-tip": "We need your positioning, but the acquisition failed.\nReason: You have not granted location permission.",
     "gps_notopen": "You haven't turned on the GPS switch",
     "gps_go-to-open": "Go to open",
     "gps_giveup-open": "Not open",
@@ -153,6 +157,7 @@
     "ble-exception1": "Bluetooth switch of mobile phone is not turned on",
     "ble-exception2": "<Get location info> permission not granted",
     "ble-exception3": "<Connect to nearby devices> permission not granted",
+    "ble-dev-notfound": "Target device not found",
 
     "MagInterferenceTip_content": "Since the initialization of the magnetometer is vulnerable to the influence of the surrounding environment, please follow the following steps in the initialization process: \n1. Please keep the surrounding environment stable and away from metal objects and magnetic field interference during the initialization process. \n2. Please keep a distance of more than 0.5m between the smart bow module and electronic devices such as mobile phones and televisions. \n3. Please fully rotate the smart bow or individual module with the module installed along the XYZ axis until the prompt is completed. \n4. If the initialization cannot be completed for many times, it can still be used. However, the accuracy of aiming will be affected, and the game needs to do one more angle of view homing operation.",
     "MagInterferenceTip_ok": "OK",

+ 22 - 1
Assets/BowArrow/Scripts/Expand/GPSTool.cs

@@ -70,7 +70,11 @@ public class GPSTool
                         }
                     }
                 }
-                if (address != null) callback?.Invoke(address);
+                if (address != null)
+                {
+                    Debug.Log("获取地理位置成功:" + string.Join(" ", address));
+                    callback?.Invoke(address);
+                }
                 //如果安卓层未能获取到位置(比如gps刚打开),会等待gps更新,至到知道位置后,会通知Unity
                 //因此可以先保留callback用于下次回调
                 else if (address == null) callbackRecord = callback;
@@ -93,13 +97,24 @@ public class GPSTool
                 needPermissionCount--;
                 if (needPermissionCount == 0) callAndroidMethod.Invoke();
             };
+            bool hasExecuteOnDenied = false;
             requestCB.PermissionDenied += (s) =>
             {
                 Debug.Log("用户拒绝" + s);
+                if (!hasExecuteOnDenied)
+                {
+                    hasExecuteOnDenied = true;
+                    AlertNoPermission();
+                }
             };
             requestCB.PermissionDeniedAndDontAskAgain += (s) =>
             {
                 Debug.Log("用户拒绝且要求不再询问" + s);
+                if (!hasExecuteOnDenied)
+                {
+                    hasExecuteOnDenied = true;
+                    AlertNoPermission();
+                }
             };
             Permission.RequestUserPermissions(permissions.ToArray(), requestCB);
         }
@@ -119,4 +134,10 @@ public class GPSTool
 
 
     }
+
+    //提示用户:尚未授予定位权限
+    static void AlertNoPermission()
+    {
+        ModalManager.ShowConfirmModal_NoLocationPermission();
+    }
 }

+ 3 - 2
Assets/BowArrow/Scripts/Manager/LoginMgr/LoginMgr.cs

@@ -45,8 +45,9 @@ public class LoginMgr : MonoBehaviour
     void Start()
     {
         //退出到登录界面,也要把蓝牙断开
-        if (BluetoothAim.ins && BluetoothAim.ins.status == BluetoothStatusEnum.ConnectSuccess) {
-            BluetoothAim.ins.DoConnect();
+        if (BluetoothAim.ins) {
+            if (BluetoothAim.ins.status == BluetoothStatusEnum.ConnectSuccess) BluetoothAim.ins.DoConnect();
+            else BluetoothAim.ins.connectCanceled = true;
         }
     }
 }

+ 12 - 0
Assets/BowArrow/Scripts/Manager/ModalManager.cs

@@ -0,0 +1,12 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ModalManager : MonoBehaviour
+{
+    public static void ShowConfirmModal_NoLocationPermission()
+    {
+        ModalConfirmView v = ModalConfirmView.Show();
+        v.textKey = "gps_nopermission-tip";
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Manager/ModalManager.cs.meta

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

+ 0 - 1
Assets/BowArrow/Scripts/Network/UserPlayer.cs

@@ -142,7 +142,6 @@ public class UserPlayer : JCEntity
             System.Action eOnAgree = () => {
                 GPSTool.GetAddress((address) => {
                     if (address != null) {
-                        Debug.Log("登陆时获取地理位置成功:" + string.Join(" ", address));
                         if (LoginMgr.myUserInfo.country == address[0]
                             && LoginMgr.myUserInfo.state == address[1]
                             && LoginMgr.myUserInfo.city == address[2]

+ 2 - 0
Assets/BowArrow/Scripts/View/Home/HomeView.cs

@@ -83,6 +83,8 @@ public class HomeView : JCUnityLib.ViewBase
             ModalView m = ModalView.Show();
             string pName = Application.productName;
             m.textKey = "Model_Location-Prominent";
+            m.onAgreeTextKey = "common_next";
+            m.onRejectTextKey = "common_cancel";
             m.textFormatArgs = new object[] {pName};
             m.onAgree = () => {
                 PlayerPrefs.SetInt("Location-Prominent", 1);

+ 42 - 0
Assets/BowArrow/Scripts/View/ModalConfirmView.cs

@@ -0,0 +1,42 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Events;
+
+public class ModalConfirmView : MonoBehaviour
+{
+    public string text;
+    public string textKey;
+    public object[] textFormatArgs = {};
+    public UnityAction onConfirm;
+    public string onConfirmTextKey;
+    public bool willDestroyAfterClick = true;
+
+
+    public static ModalConfirmView Show()
+    {
+        GameObject o = GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/ModalConfirmView"));
+        ModalConfirmView v = o.AddComponent<ModalConfirmView>();
+        return v;
+    }
+
+    void Start()
+    {
+        if (textKey != null) {
+            TextAutoLanguage2 t2 = transform.Find("Frame/Text").gameObject.AddComponent<TextAutoLanguage2>();
+            t2.textFormatArgs = textFormatArgs;
+            t2.SetTextKey(textKey);
+        } else {
+            transform.Find("Frame/Text").GetComponent<Text>().text = text;
+        }
+        Transform btnConfirm = transform.Find("Frame/BtnConfirm");
+        btnConfirm.GetComponent<Button>().onClick.AddListener(() => {
+            onConfirm?.Invoke();
+            if (willDestroyAfterClick) Destroy(gameObject);
+        });
+        if (!string.IsNullOrEmpty(onConfirmTextKey)) {
+            btnConfirm.GetComponentInChildren<TextAutoLanguage2>().SetTextKey(onConfirmTextKey);
+        }
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/View/ModalConfirmView.cs.meta

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