Quellcode durchsuchen

1.合并之后版本
2.其余修改意见完成版

slambb vor 1 Jahr
Ursprung
Commit
c57ff26a0d
54 geänderte Dateien mit 2998 neuen und 272 gelöschten Zeilen
  1. 3 2
      Assets/BowArrow/DoubleScene/Scripts/BLEView.cs
  2. 19 3
      Assets/BowArrow/InfraredCamera/InfraredDemo.cs
  3. 669 48
      Assets/BowArrow/InfraredCamera/Resources/InfraredDemo.prefab
  4. 2 2
      Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab
  5. 2 2
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.prefab
  6. BIN
      Assets/BowArrow/Resources/Audios/gun_shoot.mp3
  7. 22 0
      Assets/BowArrow/Resources/Audios/gun_shoot.mp3.meta
  8. BIN
      Assets/BowArrow/Resources/Audios/gun_shoot2.mp3
  9. 22 0
      Assets/BowArrow/Resources/Audios/gun_shoot2.mp3.meta
  10. 1 1
      Assets/BowArrow/Resources/Prefabs/Views/Home/DeviceView.prefab
  11. 1 1
      Assets/BowArrow/Resources/Prefabs/Views/Home/SmartGunView.prefab
  12. 4 4
      Assets/BowArrow/Resources/Textures/GameIcon/Prefabs/Views/Home/HomeView.prefab
  13. 428 29
      Assets/BowArrow/Scenes/Game.unity
  14. 6 6
      Assets/BowArrow/Scenes/GameDouble.unity
  15. 37 5
      Assets/BowArrow/Scripts/Bluetooth/BluetoothAim.cs
  16. 8 5
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json
  17. 8 4
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json
  18. 12 4
      Assets/BowArrow/Scripts/Game/ArmBow.cs
  19. 17 3
      Assets/BowArrow/Scripts/Game/Arrow.cs
  20. 14 2
      Assets/BowArrow/Scripts/Game/CrossHair.cs
  21. 22 0
      Assets/BowArrow/Scripts/Game/GameAssistUI.cs
  22. 28 9
      Assets/BowArrow/Scripts/GameMode/OnlineObject/ArrowSync.cs
  23. 3 0
      Assets/BowArrow/Scripts/GameMode/TimeLimitGameMode.cs
  24. 19 3
      Assets/BowArrow/Scripts/Manager/AudioMgr.cs
  25. 3 1
      Assets/BowArrow/Scripts/Manager/GameMgr.cs
  26. 12 0
      Assets/BowArrow/Scripts/View/Home/HomeView.cs
  27. 2 0
      Assets/BowArrow/Scripts/View/Home/HomeView_TopBarView.cs
  28. 13 13
      Assets/BowArrow/Scripts/View/Home/ModeSelectView.cs
  29. BIN
      Assets/BowArrow/Textures/Game/IconCrossHair.png
  30. 147 0
      Assets/BowArrow/Textures/Game/IconCrossHair.png.meta
  31. 743 57
      Assets/DuckHunter/Scenes/DuckHunter.unity
  32. 4 1
      Assets/DuckHunter/Scripts/AudioManager.cs
  33. 55 3
      Assets/DuckHunter/Scripts/CrossHair.cs
  34. 22 3
      Assets/DuckHunter/Scripts/GameUI.cs
  35. BIN
      Assets/DuckHunter/Textures/IconBullet.png
  36. 147 0
      Assets/DuckHunter/Textures/IconBullet.png.meta
  37. 1 1
      Assets/FruitMaster/Misc/Arrow/Bullet.prefab
  38. 127 2
      Assets/FruitMaster/Scenes/FruitMaster.unity
  39. 6 1
      Assets/FruitMaster/Scripts/AudioManager.cs
  40. 6 3
      Assets/FruitMaster/Scripts/GamingManager.cs
  41. 46 1
      Assets/FruitMaster/Scripts/JCFruitMaster.cs
  42. 11 1
      Assets/FruitMaster/Scripts/OverallLogics.cs
  43. 7 0
      Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs
  44. 14 12
      Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs
  45. 1 1
      Assets/InfraredProject/WebCamera/Script/ZIM/ZIMUnity/ZIMWebCamera.cs
  46. 32 4
      Assets/Plugins/Android/AndroidManifest.xml
  47. BIN
      Assets/Plugins/Android/UVCCamera/uvc-plugin-9.3.2.aar
  48. 100 0
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/ConnectGuidanceView.prefab
  49. 97 14
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab
  50. 13 14
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredView.prefab
  51. 14 3
      Assets/SmartBow/Scripts/Views/ConnectGuidanceView.cs
  52. 25 4
      Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredScreenPositioningView.cs
  53. BIN
      Assets/SmartBow/SmartBowSDK/SmartBowSDK.dll
  54. 3 0
      ProjectSettings/EditorBuildSettings.asset

+ 3 - 2
Assets/BowArrow/DoubleScene/Scripts/BLEView.cs

@@ -205,12 +205,13 @@ public class BLEView : MonoBehaviour
         int battery = smartBowHelper.GetBattery();
         textBattery.text = battery > 0 ? $"电量值:{battery}" : "未获得电量值";
     }
-
+    string userTags = "smartbow_test";
+    int deviceId2 = 2;
     void OnClick_Connect()
     {
         var s = smartBowHelper.GetBluetoothStatus();
         if (s == SmartBowSDK.BluetoothStatusEnum.Connecting) return;
-        else if (s == SmartBowSDK.BluetoothStatusEnum.None) smartBowHelper.Connect();
+        else if (s == SmartBowSDK.BluetoothStatusEnum.None) smartBowHelper.Connect(userTags, playerIndex);
         else if (s == SmartBowSDK.BluetoothStatusEnum.Connected) smartBowHelper.Disconnect();
     }
 

+ 19 - 3
Assets/BowArrow/InfraredCamera/InfraredDemo.cs

@@ -104,6 +104,9 @@ public class InfraredDemo : MonoBehaviour
 
     [SerializeField] Slider _sliderLineWidth;
 
+    //红外线阈值
+    [SerializeField] Slider _infraredFilter;
+
     //调试UVC参数
     [SerializeField] GameObject _cameraParameterPanel;
     //Dictionary<string, ParamFloatValue> dUVCParameters = new Dictionary<string, ParamFloatValue>();
@@ -116,11 +119,15 @@ public class InfraredDemo : MonoBehaviour
     public ParamFloatValue resoution = new ParamFloatValue("ic_resoution2", 2);
     public ParamFloatValue resoutionNew = new ParamFloatValue("ic_resoutionNew", 0);
 
+    //线段宽度阈值
     public ParamFloatValue lineWidth = new ParamFloatValue("ic_lineWidth", 20.0f);
 
     public ParamFloatValue captureValue = new ParamFloatValue("ic_captureValue", 30.0f);
     public ParamFloatValue delayValue = new ParamFloatValue("ic_delayValue", 30.0f);
 
+    //亮度过滤阈值
+    public ParamFloatValue infraredFileterValue = new ParamFloatValue("ic_infraredFileterValue", 0.8f);
+
     public static InfraredCameraHelper infraredCameraHelper;
     public static bool running { get => infraredCameraHelper != null; }
     private bool _inited;
@@ -413,8 +420,9 @@ public class InfraredDemo : MonoBehaviour
         SetLineWidth(lineWidth.Get());
         _sliderLineWidth.onValueChanged.AddListener(SetLineWidth);
 
-
-
+        //检测红外亮度阈值
+        SetInfraredFilterValue(infraredFileterValue.Get());
+        _infraredFilter.onValueChanged.AddListener(SetInfraredFilterValue);
 
     }
 
@@ -707,7 +715,15 @@ public class InfraredDemo : MonoBehaviour
         _sliderLineWidth.transform.Find("Value").GetComponent<Text>().text = lineWidth.Get().ToString("f1");
     }
     #endregion
-
+    #region 亮度检测部分
+    public void SetInfraredFilterValue(float v)
+    {
+        infraredFileterValue.Set(v);
+        _infraredFilter.SetValueWithoutNotify(infraredFileterValue.Get());
+        _infraredFilter.transform.Find("Value").GetComponent<Text>().text = infraredFileterValue.Get().ToString("f1");
+        infraredCameraHelper.SetInfraredLocateBrightnessThreshold(infraredFileterValue.Get());
+    }
+    #endregion
     public void resetInfraredPlayerPrefs()
     {
         //测试用

+ 669 - 48
Assets/BowArrow/InfraredCamera/Resources/InfraredDemo.prefab

@@ -586,15 +586,15 @@ RectTransform:
   - {fileID: 2947168660929903775}
   - {fileID: 856633507018256926}
   - {fileID: 8378659089701326743}
-  - {fileID: 3641311607898161875}
+  - {fileID: 2081588674167073364}
   - {fileID: 2631074113962813280}
   - {fileID: 8371246328299787720}
-  - {fileID: 5148638679184586783}
   - {fileID: 7974945653309356713}
   - {fileID: 4150705603234044018}
   - {fileID: 8511826247942912975}
   - {fileID: 8187977225539115541}
   - {fileID: 2158124803493339213}
+  - {fileID: 7818170058981052388}
   - {fileID: 1406637764187674216}
   - {fileID: 4031700261794005447}
   - {fileID: 2382243474150527996}
@@ -624,7 +624,7 @@ MonoBehaviour:
     m_Top: 0
     m_Bottom: 0
   m_ChildAlignment: 2
-  m_Spacing: 12.34
+  m_Spacing: 14
   m_ChildForceExpandWidth: 1
   m_ChildForceExpandHeight: 1
   m_ChildControlWidth: 0
@@ -1673,7 +1673,7 @@ RectTransform:
   - {fileID: 7916760681134257126}
   - {fileID: 3381439753804224031}
   m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 9
+  m_RootOrder: 8
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -2128,14 +2128,14 @@ RectTransform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1374948628684180934}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  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: 6326584698232602499}
-  m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 7
+  m_Father: {fileID: 2081588674167073364}
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -2494,7 +2494,7 @@ RectTransform:
   m_Children:
   - {fileID: 5660776098790846546}
   m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 10
+  m_RootOrder: 9
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -4074,6 +4074,86 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: 0.0
+--- !u!1 &2836494882942903200
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7317894542658137277}
+  - component: {fileID: 4859632178877272341}
+  - component: {fileID: 4000299859000419407}
+  m_Layer: 5
+  m_Name: Value
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7317894542658137277
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2836494882942903200}
+  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: 7818170058981052388}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: 165, y: 0}
+  m_SizeDelta: {x: 160, y: 30}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &4859632178877272341
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2836494882942903200}
+  m_CullTransparentMesh: 1
+--- !u!114 &4000299859000419407
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2836494882942903200}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 0.0
 --- !u!1 &2999506074156078503
 GameObject:
   m_ObjectHideFlags: 0
@@ -4110,7 +4190,7 @@ RectTransform:
   - {fileID: 6861940483262767293}
   - {fileID: 7490585259903310480}
   m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 8
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -4524,6 +4604,43 @@ MonoBehaviour:
     y: 0
     width: 1
     height: 1
+--- !u!1 &3442089179055524206
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1770636734082092959}
+  m_Layer: 5
+  m_Name: Handle Slide Area
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1770636734082092959
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3442089179055524206}
+  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: 9114112401451706583}
+  m_Father: {fileID: 7818170058981052388}
+  m_RootOrder: 2
+  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: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3442374063815874463
 GameObject:
   m_ObjectHideFlags: 0
@@ -4711,7 +4828,7 @@ RectTransform:
   - {fileID: 7131717985762970659}
   - {fileID: 6332152186861092404}
   m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 11
+  m_RootOrder: 10
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -4849,6 +4966,43 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: ' StartPreview'
+--- !u!1 &3835375036020515713
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5935061033476141096}
+  m_Layer: 5
+  m_Name: Fill Area
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5935061033476141096
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3835375036020515713}
+  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: 4165682844351629208}
+  m_Father: {fileID: 7818170058981052388}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.25}
+  m_AnchorMax: {x: 1, y: 0.75}
+  m_AnchoredPosition: {x: -5, y: 0}
+  m_SizeDelta: {x: -20, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &3852389307080042400
 GameObject:
   m_ObjectHideFlags: 0
@@ -5677,6 +5831,71 @@ MonoBehaviour:
     y: 0
     width: 1
     height: 1
+--- !u!1 &4627707591659794119
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2081588674167073364}
+  - component: {fileID: 6041499702862749651}
+  m_Layer: 5
+  m_Name: GameObject
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2081588674167073364
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4627707591659794119}
+  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: 3641311607898161875}
+  - {fileID: 5148638679184586783}
+  m_Father: {fileID: 3859395984171938655}
+  m_RootOrder: 4
+  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: 250, y: 30}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &6041499702862749651
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4627707591659794119}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_Spacing: 0
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
 --- !u!1 &4633845211403886467
 GameObject:
   m_ObjectHideFlags: 0
@@ -5860,7 +6079,7 @@ MonoBehaviour:
     y: 0
     width: 1
     height: 1
---- !u!1 &4830295242088652826
+--- !u!1 &4767962664055873778
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -5868,9 +6087,9 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 8536190607360001116}
-  - component: {fileID: 8109270656725344329}
-  - component: {fileID: 5947014266092809502}
+  - component: {fileID: 488815758495368890}
+  - component: {fileID: 3939614787791979345}
+  - component: {fileID: 632631947145975763}
   m_Layer: 5
   m_Name: Label
   m_TagString: Untagged
@@ -5878,19 +6097,19 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &8536190607360001116
+--- !u!224 &488815758495368890
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4830295242088652826}
+  m_GameObject: {fileID: 4767962664055873778}
   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: 4400054169986124149}
+  m_Father: {fileID: 7818170058981052388}
   m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 0.5}
@@ -5898,21 +6117,21 @@ RectTransform:
   m_AnchoredPosition: {x: -170, y: 0}
   m_SizeDelta: {x: 160, y: 30}
   m_Pivot: {x: 1, y: 0.5}
---- !u!222 &8109270656725344329
+--- !u!222 &3939614787791979345
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4830295242088652826}
+  m_GameObject: {fileID: 4767962664055873778}
   m_CullTransparentMesh: 1
---- !u!114 &5947014266092809502
+--- !u!114 &632631947145975763
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4830295242088652826}
+  m_GameObject: {fileID: 4767962664055873778}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -5939,8 +6158,8 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u4EAE\u5EA6"
---- !u!1 &4853992757867565890
+  m_Text: "\u68C0\u6D4B\u4EAE\u5EA6\u7684\u9608\u503C"
+--- !u!1 &4830295242088652826
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -5948,65 +6167,145 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 7840860981642768564}
-  - component: {fileID: 951777189016711016}
-  - component: {fileID: 7366551456021917670}
+  - component: {fileID: 8536190607360001116}
+  - component: {fileID: 8109270656725344329}
+  - component: {fileID: 5947014266092809502}
   m_Layer: 5
-  m_Name: Background
+  m_Name: Label
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &7840860981642768564
+--- !u!224 &8536190607360001116
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4853992757867565890}
-  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_GameObject: {fileID: 4830295242088652826}
+  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: 2947168660929903775}
-  m_RootOrder: 0
+  m_Father: {fileID: 4400054169986124149}
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0.25}
-  m_AnchorMax: {x: 1, y: 0.75}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &951777189016711016
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: -170, y: 0}
+  m_SizeDelta: {x: 160, y: 30}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &8109270656725344329
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4853992757867565890}
+  m_GameObject: {fileID: 4830295242088652826}
   m_CullTransparentMesh: 1
---- !u!114 &7366551456021917670
+--- !u!114 &5947014266092809502
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4853992757867565890}
+  m_GameObject: {fileID: 4830295242088652826}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  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_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 14
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 5
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u4EAE\u5EA6"
+--- !u!1 &4853992757867565890
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7840860981642768564}
+  - component: {fileID: 951777189016711016}
+  - component: {fileID: 7366551456021917670}
+  m_Layer: 5
+  m_Name: Background
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7840860981642768564
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4853992757867565890}
+  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: 2947168660929903775}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.25}
+  m_AnchorMax: {x: 1, y: 0.75}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &951777189016711016
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4853992757867565890}
+  m_CullTransparentMesh: 1
+--- !u!114 &7366551456021917670
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4853992757867565890}
+  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
@@ -6540,6 +6839,7 @@ MonoBehaviour:
   _dropdownResolution: {fileID: 1035873056238131760}
   _dropdownResolution2: {fileID: 5532158134157829136}
   _sliderLineWidth: {fileID: 1102185249127428893}
+  _infraredFilter: {fileID: 3628402291604927427}
   _cameraParameterPanel: {fileID: 7872086919795260368}
   togglePrefab: {fileID: 3321674522110947561}
   sliderPrefab: {fileID: 1370545611145449811}
@@ -7382,7 +7682,7 @@ RectTransform:
   - {fileID: 6369594101510719740}
   - {fileID: 6594205236581986696}
   m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 12
+  m_RootOrder: 11
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -8488,14 +8788,14 @@ RectTransform:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 7242400116685664411}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  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: 1406846289843656081}
-  m_Father: {fileID: 3859395984171938655}
-  m_RootOrder: 4
+  m_Father: {fileID: 2081588674167073364}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -9273,6 +9573,82 @@ MonoBehaviour:
     y: 0
     width: 1
     height: 1
+--- !u!1 &7817354045733316178
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4917211137505009429}
+  - component: {fileID: 3094559480385069385}
+  - component: {fileID: 842843864881051731}
+  m_Layer: 5
+  m_Name: Background
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4917211137505009429
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7817354045733316178}
+  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: 7818170058981052388}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.25}
+  m_AnchorMax: {x: 1, y: 0.75}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3094559480385069385
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7817354045733316178}
+  m_CullTransparentMesh: 1
+--- !u!114 &842843864881051731
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7817354045733316178}
+  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!1 &7872086919795260368
 GameObject:
   m_ObjectHideFlags: 0
@@ -10097,6 +10473,82 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8141227603041230166
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 9114112401451706583}
+  - component: {fileID: 7514276296125593608}
+  - component: {fileID: 4524045574015037476}
+  m_Layer: 5
+  m_Name: Handle
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &9114112401451706583
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8141227603041230166}
+  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: 1770636734082092959}
+  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: 20, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7514276296125593608
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8141227603041230166}
+  m_CullTransparentMesh: 1
+--- !u!114 &4524045574015037476
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8141227603041230166}
+  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: 10913, guid: 0000000000000000f000000000000000, type: 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 &8302424282966888530
 GameObject:
   m_ObjectHideFlags: 0
@@ -10492,6 +10944,175 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8496047072963311599
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7818170058981052388}
+  - component: {fileID: 3628402291604927427}
+  m_Layer: 5
+  m_Name: InfraredFilter
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7818170058981052388
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8496047072963311599}
+  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: 4917211137505009429}
+  - {fileID: 5935061033476141096}
+  - {fileID: 1770636734082092959}
+  - {fileID: 488815758495368890}
+  - {fileID: 7317894542658137277}
+  m_Father: {fileID: 3859395984171938655}
+  m_RootOrder: 12
+  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: 160, y: 20}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &3628402291604927427
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8496047072963311599}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, 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: 4524045574015037476}
+  m_FillRect: {fileID: 4165682844351629208}
+  m_HandleRect: {fileID: 9114112401451706583}
+  m_Direction: 0
+  m_MinValue: 0
+  m_MaxValue: 1
+  m_WholeNumbers: 0
+  m_Value: 0
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &8517080060459004188
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4165682844351629208}
+  - component: {fileID: 805139962878926511}
+  - component: {fileID: 792679025762162656}
+  m_Layer: 5
+  m_Name: Fill
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4165682844351629208
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8517080060459004188}
+  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: 5935061033476141096}
+  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: 10, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &805139962878926511
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8517080060459004188}
+  m_CullTransparentMesh: 1
+--- !u!114 &792679025762162656
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8517080060459004188}
+  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 &8641488715208830917
 GameObject:
   m_ObjectHideFlags: 0

+ 2 - 2
Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab

@@ -707,7 +707,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1.8
-  m_Text: "1.\u6D4B\u8BD5\u5149\u6807\u662F\u5426\u987A\u6ED1\uFF0C\u8986\u76D6\u8303\u56F4\u662F\u5426\u591F\u5927\uFF0C\u82E5\u5149\u6807\u4E0D\u80FD\u79FB\u52A8\u5230\u5C4F\u5E55\u5927\u90E8\u5206\u4F4D\u7F6E\uFF0C\u8BF7\u52A0\u5927\u76F8\u673A\u7684\u611F\u5149\u5EA6\uFF0C\u611F\u5149\u5EA6\u6570\u636E\u8D8A\u5927\uFF0C\u76F8\u673A\u53D7\u73AF\u5883\u5149\u7684\u5F71\u54CD\u4E5F\u8D8A\u5927\uFF0C\u5728\u4F7F\u7528\u4E2D\u611F\u5149\u5EA6\u5C3D\u53EF\u80FD\u7684\u5C0F\uFF1B\u82E5\u5149\u6807\u79FB\u52A8\u65F6\u7684\u8DDF\u968F\u5EA6\u4E0D\u597D\uFF0C\u9700\u8C03\u4F4E\u6444\u50CF\u5934\u5206\u8FA8\u7387\u540E\uFF0C\u518D\u91CD\u65B0\u8FDB\u884C\u8BBE\u7F6E\u3002\r\n\r\n2.\u82E5\u5149\u6807\u968F\u673A\u95EA\u70C1\u4E0D\u540C\u7684\u4F4D\u7F6E\u6216\u4E0D\u5728\u5F13\u7BAD\u6307\u5411\u7684\u4F4D\u7F6E\uFF0C\u8BF7\u964D\u4F4E\u6444\u50CF\u5934\u7684\u611F\u5149\u5EA6\uFF0C\u6216\u70B9\u51FB\u73AF\u5883\u6D4B\u5149\u5BFB\u627E\u5E72\u6270\u6E90\u3002\r\n"
+  m_Text: "1.\u6D4B\u8BD5\u5149\u6807\u662F\u5426\u987A\u6ED1\uFF0C\u8986\u76D6\u8303\u56F4\u662F\u5426\u591F\u5927\uFF0C\u82E5\u5149\u6807\u4E0D\u80FD\u79FB\u52A8\u5230\u5C4F\u5E55\u5927\u90E8\u5206\u4F4D\u7F6E\uFF0C\u8BF7\u91CD\u65B0\u8FDB\u884C\u5C4F\u5E55\u5B9A\u4F4D\uFF1B\u82E5\u5149\u6807\u79FB\u52A8\u65F6\u7684\u8DDF\u968F\u5EA6\u4E0D\u597D\uFF0C\u9700\u66F4\u6362\u6027\u80FD\u66F4\u597D\u7684\u624B\u673A\u540E\uFF0C\u518D\u91CD\u65B0\u8FDB\u884C\u8BBE\u7F6E\u3002\n\r\n2.\u82E5\u5149\u6807\u968F\u673A\u95EA\u70C1\u4E0D\u540C\u7684\u4F4D\u7F6E\u6216\u4E0D\u5728\u5F13\u7BAD\u6307\u5411\u7684\u4F4D\u7F6E\uFF0C\u8BF7\u70B9\u51FB\u73AF\u5883\u6D4B\u5149\u5BFB\u627E\u5E72\u6270\u6E90\u3002\n"
 --- !u!1 &3316149295125559177
 GameObject:
   m_ObjectHideFlags: 0
@@ -1065,7 +1065,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u76F8\u673A\u611F\u5149\u5EA6"
+  m_Text: "\u56FE\u50CF\u4EAE\u5EA6"
 --- !u!1 &5580728531082366755
 GameObject:
   m_ObjectHideFlags: 0

+ 2 - 2
Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.prefab

@@ -59,7 +59,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0, b: 0, a: 1}
+  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
@@ -822,7 +822,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u76F8\u673A\u611F\u5149\u5EA6"
+  m_Text: "\u56FE\u50CF\u4EAE\u5EA6"
 --- !u!1 &5580728531082366755
 GameObject:
   m_ObjectHideFlags: 0

BIN
Assets/BowArrow/Resources/Audios/gun_shoot.mp3


+ 22 - 0
Assets/BowArrow/Resources/Audios/gun_shoot.mp3.meta

@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: 99b6206d0f9d0e042848fa9aacc255eb
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/BowArrow/Resources/Audios/gun_shoot2.mp3


+ 22 - 0
Assets/BowArrow/Resources/Audios/gun_shoot2.mp3.meta

@@ -0,0 +1,22 @@
+fileFormatVersion: 2
+guid: e8ba4dab6aa2c3b4ab0433254a4b238e
+AudioImporter:
+  externalObjects: {}
+  serializedVersion: 6
+  defaultSettings:
+    loadType: 0
+    sampleRateSetting: 0
+    sampleRateOverride: 44100
+    compressionFormat: 1
+    quality: 1
+    conversionMode: 0
+  platformSettingOverrides: {}
+  forceToMono: 0
+  normalize: 1
+  preloadAudioData: 1
+  loadInBackground: 0
+  ambisonic: 0
+  3D: 1
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
Assets/BowArrow/Resources/Prefabs/Views/Home/DeviceView.prefab

@@ -5982,7 +5982,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: Smart Gun
+  m_Text: Smart Shooting
 --- !u!1 &8643905289019124202
 GameObject:
   m_ObjectHideFlags: 0

+ 1 - 1
Assets/BowArrow/Resources/Prefabs/Views/Home/SmartGunView.prefab

@@ -683,7 +683,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: Gun
+  m_Text: Pistol
 --- !u!1 &8677266361160975224
 GameObject:
   m_ObjectHideFlags: 0

+ 4 - 4
Assets/BowArrow/Resources/Textures/GameIcon/Prefabs/Views/Home/HomeView.prefab

@@ -4112,7 +4112,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: Gun
+  m_Text: Shooting
 --- !u!1 &3723336913283526395
 GameObject:
   m_ObjectHideFlags: 0
@@ -4844,9 +4844,9 @@ RectTransform:
   m_Father: {fileID: 3890223726825215840}
   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: 16, y: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 16, y: -20}
   m_SizeDelta: {x: 0, y: 38}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &5099759915330397004

+ 428 - 29
Assets/BowArrow/Scenes/Game.unity

@@ -162,7 +162,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
   m_AnchoredPosition: {x: 0, y: -35}
-  m_SizeDelta: {x: 57.894737, y: 33}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &4154776
 MonoBehaviour:
@@ -533,6 +533,117 @@ Transform:
   m_Father: {fileID: 1003180437}
   m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &54381829
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 54381830}
+  - component: {fileID: 54381834}
+  - component: {fileID: 54381833}
+  - component: {fileID: 54381832}
+  - component: {fileID: 54381835}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &54381830
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 54381829}
+  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: 1032459394}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 29.692308, y: -16.5}
+  m_SizeDelta: {x: 39.384617, y: 33}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &54381832
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 54381829}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 2
+  m_VerticalFit: 0
+--- !u!114 &54381833
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 54381829}
+  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: 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_FontData:
+    m_Font: {fileID: 12800000, guid: 1ad2cf6c2f09744489d8c60b3fe3bab2, type: 3}
+    m_FontSize: 20
+    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: "\u51C6\u5FC3"
+--- !u!222 &54381834
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 54381829}
+  m_CullTransparentMesh: 1
+--- !u!114 &54381835
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 54381829}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: CrossHair
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &64265627
 GameObject:
   m_ObjectHideFlags: 0
@@ -1605,7 +1716,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
   m_AnchoredPosition: {x: 0, y: -35}
-  m_SizeDelta: {x: 57.894737, y: 33}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &146791010
 MonoBehaviour:
@@ -2345,7 +2456,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2099761839}
-  m_RootOrder: 6
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
@@ -3839,7 +3950,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &322948731
 RectTransform:
   m_ObjectHideFlags: 0
@@ -6052,10 +6163,10 @@ RectTransform:
   m_Father: {fileID: 4154775}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 28.947369, y: -16.5}
-  m_SizeDelta: {x: 37.894737, y: 33}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &589339043
 MonoBehaviour:
@@ -6129,6 +6240,82 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 589339041}
   m_CullTransparentMesh: 1
+--- !u!1 &592326761
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 592326762}
+  - component: {fileID: 592326764}
+  - component: {fileID: 592326763}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &592326762
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 592326761}
+  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: 1964354870}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 15}
+  m_SizeDelta: {x: 65, y: 67}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &592326763
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 592326761}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 975c48aff00853643bcaee83d3aec28b, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &592326764
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 592326761}
+  m_CullTransparentMesh: 1
 --- !u!1 &593789415
 GameObject:
   m_ObjectHideFlags: 0
@@ -7526,10 +7713,10 @@ RectTransform:
   m_Father: {fileID: 1349314726}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 28.947369, y: -16.5}
-  m_SizeDelta: {x: 37.894737, y: 33}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &694545845
 MonoBehaviour:
@@ -10104,7 +10291,7 @@ Transform:
   m_GameObject: {fileID: 944950859}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: -0.01}
-  m_LocalScale: {x: 0.002, y: 0.002, z: 0.002}
+  m_LocalScale: {x: 0.004, y: 0.004, z: 0.004}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 64265628}
@@ -11200,6 +11387,125 @@ Transform:
   m_Father: {fileID: 719650501}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: -1.2711266, y: -6.284285, z: -5.6597686}
+--- !u!1 &1032459393
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1032459394}
+  - component: {fileID: 1032459398}
+  - component: {fileID: 1032459397}
+  - component: {fileID: 1032459396}
+  - component: {fileID: 1032459395}
+  m_Layer: 5
+  m_Name: TextBG
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1032459394
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1032459393}
+  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: 54381830}
+  m_Father: {fileID: 1964354870}
+  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: -35}
+  m_SizeDelta: {x: 59.384617, y: 33}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1032459395
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1032459393}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 2
+  m_VerticalFit: 0
+--- !u!114 &1032459396
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1032459393}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 10
+    m_Right: 10
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 0
+  m_Spacing: 0
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!114 &1032459397
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1032459393}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: b7acee81c9f1b1749b398ead1ddc09d5, type: 3}
+  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!222 &1032459398
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1032459393}
+  m_CullTransparentMesh: 1
 --- !u!1 &1038701833
 GameObject:
   m_ObjectHideFlags: 0
@@ -12396,7 +12702,7 @@ RectTransform:
   m_Children:
   - {fileID: 1211575576}
   m_Father: {fileID: 2099761839}
-  m_RootOrder: 8
+  m_RootOrder: 9
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 0, y: 0.5}
@@ -13062,10 +13368,10 @@ RectTransform:
   m_Father: {fileID: 146791009}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 28.947369, y: -16.5}
-  m_SizeDelta: {x: 37.894737, y: 33}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1218454288
 MonoBehaviour:
@@ -14738,7 +15044,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
   m_AnchoredPosition: {x: 0, y: -35}
-  m_SizeDelta: {x: 57.894737, y: 33}
+  m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1349314727
 MonoBehaviour:
@@ -15460,12 +15766,12 @@ RectTransform:
   - {fileID: 1966458871}
   - {fileID: 1845023678}
   m_Father: {fileID: 2099761839}
-  m_RootOrder: 7
+  m_RootOrder: 8
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 45, y: 45}
-  m_SizeDelta: {x: 127.789474, y: 40}
+  m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0, y: 0}
 --- !u!114 &1428784388
 MonoBehaviour:
@@ -17750,7 +18056,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2099761839}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
@@ -20866,10 +21172,10 @@ RectTransform:
   m_Father: {fileID: 1428784387}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 77.89474, y: -20}
-  m_SizeDelta: {x: 75.789474, y: 40}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 79.38461, y: 0}
+  m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1845023679
 MonoBehaviour:
@@ -21962,9 +22268,9 @@ RectTransform:
   m_Father: {fileID: 1428784387}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 1}
-  m_AnchorMax: {x: 0, y: 1}
-  m_AnchoredPosition: {x: 23.5, y: -20}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 23, y: 23}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1918156148
@@ -22813,6 +23119,98 @@ Transform:
   m_CorrespondingSourceObject: {fileID: 481256, guid: be878d9ea17907f4a8068678a5ce7908, type: 3}
   m_PrefabInstance: {fileID: 1964262137}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1964354869
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1964354870}
+  - component: {fileID: 1964354872}
+  - component: {fileID: 1964354871}
+  m_Layer: 5
+  m_Name: Button5
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &1964354870
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1964354869}
+  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: 592326762}
+  - {fileID: 1032459394}
+  m_Father: {fileID: 2099761839}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: -40, y: 40}
+  m_SizeDelta: {x: 120, y: 120}
+  m_Pivot: {x: 1, y: 0}
+--- !u!114 &1964354871
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1964354869}
+  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.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: 592326763}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!222 &1964354872
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1964354869}
+  m_CullTransparentMesh: 1
 --- !u!1 &1966458870
 GameObject:
   m_ObjectHideFlags: 0
@@ -24706,6 +25104,7 @@ RectTransform:
   - {fileID: 1696922006}
   - {fileID: 1038701834}
   - {fileID: 322948731}
+  - {fileID: 1964354870}
   - {fileID: 1550855294}
   - {fileID: 202607249}
   - {fileID: 1428784387}

+ 6 - 6
Assets/BowArrow/Scenes/GameDouble.unity

@@ -5002,7 +5002,7 @@ RectTransform:
   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_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &286416209
@@ -12403,7 +12403,7 @@ RectTransform:
   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_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &745608731
@@ -13169,7 +13169,7 @@ RectTransform:
   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_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &781839819
@@ -20135,7 +20135,7 @@ RectTransform:
   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_AnchoredPosition: {x: 49.384617, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1278939257
@@ -25403,7 +25403,7 @@ RectTransform:
   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_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1609303132
@@ -29488,7 +29488,7 @@ RectTransform:
   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_AnchoredPosition: {x: 49.384617, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1807247319

+ 37 - 5
Assets/BowArrow/Scripts/Bluetooth/BluetoothAim.cs

@@ -11,8 +11,8 @@ using SmartBowSDK;
 public class BluetoothAim : MonoBehaviour
 {
     #region 弓箭蓝牙模块基本信息
-    readonly string targetDeviceName = "Bbow_20210501";
-
+    readonly string targetDeviceName = "Bbow_20210501 | HOUYI Pro";
+    readonly string targetDeviceNameHOUYIPro = "HOUYI Pro";
     string targetDeviceService
     {
         get
@@ -341,7 +341,8 @@ public class BluetoothAim : MonoBehaviour
                 foreach (BluetoothDevice device in nearbyDevices)
                 {
                     Log("发现设备 " + device.DeviceName);
-                    if (device.DeviceName == targetDeviceName)
+                    //if (device.DeviceName == targetDeviceName)
+                    if (targetDeviceName.Contains(device.DeviceName))
                     {
                         deviceName = device.DeviceName;
                         bluetoothHelper.setDeviceName(deviceName);
@@ -723,6 +724,11 @@ public class BluetoothAim : MonoBehaviour
     float lerpTimeRate2P = 7;
     private Quaternion newRotation2P = Quaternion.identity;
 
+
+    //数据存储标识
+    string userTags = "smartbow";
+    int deviceId2 = 2;
+
     public void onCreateSmartBowHelper2P() {
 
         smartBowHelper2P = SmartBowHelper.NewInstance();
@@ -904,11 +910,11 @@ public class BluetoothAim : MonoBehaviour
             CallDelay(1, () =>
             {
                 Debug.Log("Connect*********");
-                smartBowHelper2P.Connect();
+                smartBowHelper2P.Connect(userTags,deviceId2);
             });
         }
         else {
-            smartBowHelper2P.Connect();
+            smartBowHelper2P.Connect(userTags, deviceId2);
         }
     }
 
@@ -1077,4 +1083,30 @@ public class BluetoothAim : MonoBehaviour
     }
     #endregion
 
+    #region 判断是否是1p设备连接的是Gun信息
+    public bool isMainConnectToGun()
+    {
+        bool _isGun = false;
+
+        foreach (AimDeviceInfo p in AimHandler.ins.aimDeviceInfos.arry)
+        {
+            if ((int)BluetoothPlayer.FIRST_PLAYER == p.id && p.type == (int)AimDeviceType.Gun)
+            {
+                _isGun = true;
+            }
+        }
+        if (_isGun)
+        {
+            //如果是。判断是否连接
+            return status == BluetoothStatusEnum.ConnectSuccess;
+        }
+        else
+        {
+            return false;
+        }
+
+
+    }
+    #endregion
+
 }

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

@@ -397,7 +397,8 @@
   "Guidance_Title": "连接指南",
   "Guidance_Step1": "电源按钮位于3.5毫米信号插孔附近。",
   "Guidance_Step2": "要打开或关闭设备,请按住电源按钮约3秒钟。",
-  "Guidance_Step3": "当绿灯缓慢闪烁时,意味着设备已打开并准备好连接到应用程序。\n并将模块安装到设备上。",
+  "Guidance_Step3": "当绿灯缓慢闪烁时,意味着设备已打开并准备好连接到应用程序。",
+  "Guidance_Step3_Infrared": "当绿灯缓慢闪烁时,意味着设备已打开并准备好连接到应用程序,并将模块安装到设备上。",
   "Guidance_Check": "确认完成上述步骤",
   "Guidance_Checked": "请勾选确认完成上述步骤",
 
@@ -483,7 +484,7 @@
   "SignOutContent": "你确定要退出吗?",
 
   "CrossHair": "十字准心",
-  "ArrowAndBow":"手臂弓箭", 
+  "ArrowAndBow": "手臂弓箭",
 
   "SettingLanguage": "语言",
   "SettingAboutUs": "关于WONDERFITTER",
@@ -504,7 +505,9 @@
   /**
    红外定位部分
   **/
-  "Infrared-ScreenPositioning": "进入手动定位屏幕",
-  "Infrared-Step1": "使摄像头位于电视的前方,旋转摄像头使其朝向电视屏幕。",
-  "Infrared-Step2": "调整摄像头位置,确保可以拍摄到电视的四角 \n并使电视尽量占满画面,旋转相机镜头可对焦。\n\n严格按照数字顺序依次拖动 \n相机只需定位一次,只要不移动位置,就无需再定位 \n\n找出画面里显示屏的4个角按照数字顺序依次点击进行位置标注。请注意不是画面红色区域数字位置的4个角,而是画面里的显示屏的4个角。"
+  "Infrared-title": "屏幕定位说明",
+  "Infrared-ScreenPositioning": "进入屏幕定位",
+  "Infrared-Step1": "先进行投屏,并使摄像头支架位于电视的正前方,调整摄像头支架使摄像头朝向电视屏幕。",
+  "Infrared-Step2_title": "屏幕定位说明",
+  "Infrared-Step2": "调整摄像头位置,并使电视尽量占满画面,确保可以拍摄到电视的四角。\n\n先点击自动功能进行屏幕识别,电视上会出现黑屏和白屏的图像,并通过软件进行识别。\n\n如自动识别的位置不准确,可以通过对图像亮度进行调节后,再次自动识别。如多次自动识别不成功,可自动识别的基础上,通过手指点击拖动定位区域四个角进行调整。\n\n屏幕位置只需定位一次,只要不移动摄像头的位置,就无需再定位。"
 }

+ 8 - 4
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json

@@ -446,7 +446,9 @@
   "Guidance_Title": "Connection Guidance",
   "Guidance_Step1": "Power button is located near the 3.5mm signal jack.",
   "Guidance_Step2": "To turn the device on or off, press and hold the power button for approximately 3 seconds.",
-  "Guidance_Step3": "When the green light flashes slowly, it means the device is on and ready to connect to the app.\n And install the module onto the device.",
+  "Guidance_Step3": "When the green light flashes slowly, it means the device is on and ready to connect to the app.",
+  "Guidance_Step3_Infrared": "When the green light flashes slowly, it means the device is on and ready to connect to the app.\n And install the module onto the device.",
+
   "Guidance_Check": "Confirmed the completion of the above steps",
   "Guidance_Checked": "Please check to confirm completion of the above steps",
 
@@ -554,7 +556,9 @@
   /**
    红外定位部分
   **/
-  "Infrared-ScreenPositioning": "Positioning Screen",
-  "Infrared-Step1": "Place the camera in front of the TV and rotate it to face the TV screen.",
-  "Infrared-Step2": "Adjust the camera position to ensure that the four corners of the TV can be captured \n And make the TV as full as possible, rotate the camera lens to focus.\n\nStrictly drag in numerical order \nThe camera only needs to be positioned once, as long as it does not move, there is no need for further positioning \n\nIdentify the four corners of the display screen in numerical order and click to mark their positions. Please note that it is not the four corners of the number positions in the red area of the screen, but the four corners of the display screen in the screen."
+  "Infrared-title": "Screen positioning instructions",
+  "Infrared-ScreenPositioning": "Enter screen positioning",
+  "Infrared-Step1": "First, project the screen and position the camera bracket in front of the TV. Adjust the camera bracket to face the TV screen.",
+  "Infrared-Step2_title": "Screen positioning instructions",
+  "Infrared-Step2": "Adjust the camera position and make sure the TV takes up as much of the picture as possible, ensuring that the four corners of the TV can be captured. \n\nFirstly, click on the automatic function for screen recognition. Black and white screen images will appear on the TV and will be recognized through software. \n\nIf the automatic recognition position is not accurate, it can be automatically recognized again by adjusting the brightness of the image. If the automatic recognition is unsuccessful multiple times, based on the automatic recognition, adjust the positioning area by clicking and dragging the four corners with your fingers. \n\nThe screen position only needs to be located once, as long as the camera position is not moved, there is no need to locate it again."
 }

+ 12 - 4
Assets/BowArrow/Scripts/Game/ArmBow.cs

@@ -240,12 +240,20 @@ public class ArmBow : MonoBehaviour
             Quaternion.Angle(absolute_rotation, final_rotation);
         arrowComp.finalAngleAfterOffset = final_rotation.eulerAngles;
 
-        if (ShootCheck.ins && !GameMgr.debugInEditor && !BowCamera.isTouchMode) 
-        {
-            Arrow.speed = GameMgr.RealSizeToGameSize(ShootCheck.ins.shootSpeed);
+        if (GlobalData.MyDeviceMode == DeviceMode.Gun) {
+            //枪的速度,设置800
+            Arrow.speed = 400;
+            AudioMgr.ins.PlayGunShoot(AudioMgr.GetAudioSource(arrowCopy));
+
+        } else {
+            if (ShootCheck.ins && !GameMgr.debugInEditor && !BowCamera.isTouchMode)
+            {
+                Arrow.speed = GameMgr.RealSizeToGameSize(ShootCheck.ins.shootSpeed);
+            }
+            AudioMgr.ins.PlayShoot(AudioMgr.GetAudioSource(arrowCopy));
         }
         GameEventCenter.ins.onBowArrowShootOut?.Invoke(this, arrowComp);
-        AudioMgr.ins.PlayShoot(AudioMgr.GetAudioSource(arrowCopy));
+
         if (AimHandler.ins) AimHandler.ins.Ban9AxisCalculate(true);
     }
 

+ 17 - 3
Assets/BowArrow/Scripts/Game/Arrow.cs

@@ -374,7 +374,7 @@ public class Arrow : MonoBehaviour
             if (GlobalData.MyDeviceMode == DeviceMode.Archery)
                 this.arrowCameraComp.arrowCameraTemplate?.beforeHit();
             else
-                nextShoot();//子弹直接下一轮
+                nextShootFromType();//子弹直接下一轮
 
             raycastHit.transform.GetComponent<TargetBody>().Hit(this, hitPoint);
         }
@@ -386,7 +386,7 @@ public class Arrow : MonoBehaviour
             if (GlobalData.MyDeviceMode == DeviceMode.Archery)
                 this.arrowCameraComp.arrowCameraTemplate?.beforeHit();
             else
-                nextShoot();//子弹直接下一轮
+                nextShootFromType();//子弹直接下一轮
 
             TargetAnimal targetAnimal = raycastHit.transform.GetComponentInParent<TargetAnimal>();
             targetAnimal.OnHit(this, hitPoint, partName);
@@ -411,7 +411,7 @@ public class Arrow : MonoBehaviour
             if (GlobalData.MyDeviceMode == DeviceMode.Archery)
                 this.arrowCameraComp.arrowCameraTemplate?.beforeHit();
             else
-                nextShoot();//子弹直接下一轮
+                nextShootFromType();//子弹直接下一轮
 
             Hit();
             GameMgr.ins.gameMode.HitTarget(0);
@@ -446,6 +446,20 @@ public class Arrow : MonoBehaviour
 
     //进入下一轮射击
     [NonSerialized] public bool hasDoneNextShoot = false;
+    public void nextShootFromType() {
+       // Debug.Log("nextShootFromType:" + GlobalDataTemp.pkMatchType);
+        if (GlobalDataTemp.pkMatchType == PKMatchType.LocalPK || GlobalDataTemp.pkMatchType == PKMatchType.OnlinePK)
+        {
+            StartCoroutine(delayNectShoot());
+        }
+        else {
+            nextShoot();
+        }
+    }
+    IEnumerator delayNectShoot() {
+        yield return new WaitForSeconds(1.0f);
+        nextShoot();
+    }
     public void nextShoot()
     {
         if (hasDoneNextShoot) return;

+ 14 - 2
Assets/BowArrow/Scripts/Game/CrossHair.cs

@@ -10,6 +10,7 @@ public class CrossHair : MonoBehaviour
     private Image image = null;
     private bool open = false; 
     private bool visiable = false;
+    private bool onlyShow = true;
 
     void Awake()
     {
@@ -35,7 +36,7 @@ public class CrossHair : MonoBehaviour
 
     void Update()
     {
-        if (open) SetVisiable(ArmBow.ins && ArmBow.ins.IsCanShoot());
+        if (open) SetVisiable(onlyShow && ArmBow.ins && ArmBow.ins.IsCanShoot());
     }
 
     void SetVisiable(bool value)
@@ -55,7 +56,18 @@ public class CrossHair : MonoBehaviour
     public bool GetOpen() {
         return this.open;
     }
-
+    public void SetOnlyShow(bool onlyShow)
+    {
+        this.onlyShow = onlyShow;
+        if (!this.onlyShow)
+        {
+            SetVisiable(false);
+        }
+    }
+    public bool GetOnlyShow()
+    {
+        return this.onlyShow;
+    }
     public RaycastHit GetRaycastHit() {
         float maxDistance = 100;
         int layerMask = 1 << 8; //TargetLayerMask

+ 22 - 0
Assets/BowArrow/Scripts/Game/GameAssistUI.cs

@@ -76,8 +76,29 @@ public class GameAssistUI : MonoBehaviour
         if (GlobalData.MyDeviceMode == DeviceMode.Gun || BluetoothAim.ins && BluetoothAim.ins.isMainConnectToHOUYIPRO())
         {
             btnIdentity.gameObject.SetActive(false);
+
+            //显示控制准心按钮
+            Button crossHairBtn = transform.Find("Button5").GetComponent<Button>();
+            crossHairBtn.gameObject.SetActive(true);
+            bool onInitOpen = CrossHair.ins.GetOpen() && CrossHair.ins.GetOnlyShow();
+            Image crossHairImage = crossHairBtn.GetComponentInChildren<Image>();
+            crossHairImage.material = onInitOpen? outlight:null;
+            crossHairBtn.onClick.AddListener(delegate () {
+                AudioMgr.ins.PlayBtn();
+                bool onlyShow = !CrossHair.ins.GetOnlyShow();
+                CrossHair.ins.SetOnlyShow(onlyShow);
+                if (onlyShow)
+                {
+                   crossHairImage.material = outlight;
+                }
+                else
+                {
+                   crossHairImage.material = null;
+                }
+            });
         }
         else {
+            btnIdentity.gameObject.SetActive(true);
 
             btnIdentity.onClick.AddListener(delegate () {
                 if (btnIdentity.GetComponent<LongPressMonitor>().isLongPress) return;
@@ -91,6 +112,7 @@ public class GameAssistUI : MonoBehaviour
             };
         }
 
+
         // ------ 查看靶子 ------
         Transform targetView = this.transform.Find("TargetView");
         Button btnViewTarget = this.transform.Find("Button10").GetComponent<Button>();

+ 28 - 9
Assets/BowArrow/Scripts/GameMode/OnlineObject/ArrowSync.cs

@@ -98,13 +98,18 @@ public class ArrowSync : MonoBehaviour
             transform.rotation = rotation;
             if (!isHit || !hasDoneNextShoot) {
                 needCheckHitAnimal = true;
-                //激活镜头
-                Transform cameraTF = this.transform.Find("Camera");
-                cameraTF.gameObject.SetActive(true);
-                arrowCameraComp = cameraTF.gameObject.AddComponent<ArrowCamera>();
-                arrowCameraComp.SetArrowSync(this);
-                //射出的声音
-                AudioMgr.ins.PlayShoot(AudioMgr.GetAudioSource(this.gameObject));
+               // Debug.Log("sync data:" + GlobalData.MyDeviceMode);
+                if (GlobalData.MyDeviceMode == DeviceMode.Archery)
+                {
+                    //激活镜头
+                    Transform cameraTF = this.transform.Find("Camera");
+                    cameraTF.gameObject.SetActive(true);
+                    arrowCameraComp = cameraTF.gameObject.AddComponent<ArrowCamera>();
+                    arrowCameraComp.SetArrowSync(this);
+                    //射出的声音
+                    AudioMgr.ins.PlayShoot(AudioMgr.GetAudioSource(this.gameObject));
+                }
+                
                 //拖尾
                 activeEffectTrail(true);
             }
@@ -157,11 +162,25 @@ public class ArrowSync : MonoBehaviour
         if (isHit && !hasPlayHitAudio) {
             hasPlayHitAudio = true;
             int hitType = syncData.ht;
+           // Debug.Log("sync data isHit hitType:" + hitType);
             if (hitType == Arrow.HitType.TargetInRing || hitType == Arrow.HitType.TargetOutRing) {
-                AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(TargetBody.ins.gameObject));
+                if (GlobalData.MyDeviceMode == DeviceMode.Archery)
+                {
+                    AudioMgr.ins.PlayHit(AudioMgr.GetAudioSource(TargetBody.ins.gameObject));
+                }
+                else {
+                    AudioMgr.ins.PlayGunShoot(AudioMgr.GetAudioSource(TargetBody.ins.gameObject));
+                }
                 //AudioMgr.ins.PlayCheer(hitType == 1 ? true : false);
             } else if (hitType == Arrow.HitType.Animal) {
-                AudioMgr.ins.PlayArrowEnter();
+                if (GlobalData.MyDeviceMode == DeviceMode.Archery)
+                {
+                    AudioMgr.ins.PlayArrowEnter();
+                }
+                else
+                {
+                    AudioMgr.ins.PlayGunShoot(AudioMgr.GetAudioSource(TargetBody.ins.gameObject));
+                }
             } else if (hitType == Arrow.HitType.NotTarget) {
                 if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "Game")
                 {

+ 3 - 0
Assets/BowArrow/Scripts/GameMode/TimeLimitGameMode.cs

@@ -106,6 +106,9 @@ public class TimeLimitGameMode : GameMode {
         }
         #endif
         if (gameMgr.gameOver || pauseTimeCounting) return;
+        //不进入计时器
+        if (GameMgr.turnOffTimer) return;
+
         if (this.time > 0) {
             if (GlobalData.pkMatchType == PKMatchType.None && UserSettings.ins.trainMode) {
                 //单人且为训练模式,就不要倒计时了

+ 19 - 3
Assets/BowArrow/Scripts/Manager/AudioMgr.cs

@@ -38,7 +38,10 @@ public class AudioMgr : MonoBehaviour
         }
         return audioSource;
     }
-
+    public void PlayGunShoot(AudioSource audioSource)
+    {
+        this.Play("Audios/gun_shoot", audioSource);
+    }
     public void PlayShoot(AudioSource audioSource) {
         this.Play("Audios/shoot", audioSource);
     }
@@ -48,18 +51,31 @@ public class AudioMgr : MonoBehaviour
     }
 
     public void PlayCheer(bool cheer) {
+        this.audioSource.volume = 1;
         this.Play("Audios/" + (cheer ? "喝彩" : "喝倒彩"), null);
     }
-
+    //按钮播放音效
     public void PlayBtn() {
-        this.Play("Audios/btn", null);
+        //连接了枪情况下播放枪声音
+        if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun() && GlobalData.MyDeviceMode == DeviceMode.Gun)
+        {
+            this.audioSource.volume = 0.15f;
+            this.Play("Audios/gun_shoot", null);
+        }
+        else {
+            this.audioSource.volume = 1;
+            this.Play("Audios/btn", null);
+        }
+
     }
 
     public void PlayWin() {
+        this.audioSource.volume = 1;
         this.Play("Audios/win", null);
     }
 
     public void PlayArrowEnter() {
+        this.audioSource.volume = 1;
         this.Play("Audios/Animal/arrow_enter", null);
     }
 

+ 3 - 1
Assets/BowArrow/Scripts/Manager/GameMgr.cs

@@ -7,6 +7,7 @@ public class GameMgr : MonoBehaviour
 {
     public static bool debugInEditor = false;
     public static int gameType = 0;
+    public static bool turnOffTimer = false;
     public static int judgmentGameType = 0;
     public GameMode gameMode;
     [System.NonSerialized] public bool gameOver = false;
@@ -53,9 +54,10 @@ public class GameMgr : MonoBehaviour
     }
 
     void OnDestroy() {
-        //此脚本删除后重新设置 bShowDistance bNavBack
+        //此脚本删除后重新设置 bShowDistance bNavBack turnOffTimer
         bShowDistance = true;
         bNavBack = false;
+        turnOffTimer = false;
         try
         { 
             GlobalEventCenter.ins.onGameSceneDestroy?.Invoke(); 

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

@@ -420,7 +420,19 @@ public class HomeView : JCUnityLib.ViewBase
         Image img = betteryBar2.GetComponent<Image>();
         img.fillAmount = value / 100f;
     }
+    public void UpdateParent() {
 
+        TopBarButtonInfo topBarButtonInfo = topBarView.GetCurrentTopBarButtonInfo();
+        if (bettery != null)
+        {
+            bettery.transform.SetParent(topBarButtonInfo.container.transform);
+        }
+
+        if (bettery2 != null)
+        {
+            bettery2.transform.SetParent(topBarButtonInfo.container.transform);
+        }
+    }
     void updateBatteryStatus() {
         if (BluetoothAim.ins == null) return;
         //更新电池图标显示

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

@@ -82,6 +82,8 @@ public class HomeView_TopBarView : MonoBehaviour
             Debug.Log("Set GlobalData.MyDeviceMode :" + GlobalData.MyDeviceMode);
             onChangeTypeEvent?.Invoke(GlobalData.MyDeviceMode);
 
+            if(HomeView.ins != null) HomeView.ins.UpdateParent();
+
         }
     }
     public int GetDeviceModeValue()

+ 13 - 13
Assets/BowArrow/Scripts/View/Home/ModeSelectView.cs

@@ -21,20 +21,20 @@ public class ModeSelectView : JCUnityLib.ViewBase
     }
     //枪模式下显示
     public void InitGunButtons() {
-        for (int i = buttons.Count - 1; i > 0; i--)
-        {
-            Destroy(buttons[i].gameObject);
-            buttons.RemoveAt(i);
-        }
-        buttons[0].onClick.AddListener(() => {
-            AudioMgr.ins.PlayBtn();
-            OnChangeButton(0);
-        });
-
-        if (GameMgr.judgmentGameType != 1)
+        //for (int i = buttons.Count - 1; i > 0; i--)
+        //{
+        //    Destroy(buttons[i].gameObject);
+        //    buttons.RemoveAt(i);
+        //}
+        Destroy(buttons[3].gameObject);
+        buttons.RemoveAt(buttons.Count - 1);
+        for (int i = 0; i < buttons.Count; i++)
         {
-            //目前只有奥运射箭和塔防有双人模式,先显示奥运射箭
-            buttons[0].gameObject.SetActive(false);
+            int temp = i;
+            buttons[i].onClick.AddListener(() => {
+                AudioMgr.ins.PlayBtn();
+                OnChangeButton(temp);
+            });
         }
     }
     public void InitButtons() {

BIN
Assets/BowArrow/Textures/Game/IconCrossHair.png


+ 147 - 0
Assets/BowArrow/Textures/Game/IconCrossHair.png.meta

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

Datei-Diff unterdrückt, da er zu groß ist
+ 743 - 57
Assets/DuckHunter/Scenes/DuckHunter.unity


+ 4 - 1
Assets/DuckHunter/Scripts/AudioManager.cs

@@ -25,7 +25,10 @@ namespace DuckHunter
         {
             if (_Instance == this) _Instance = null;
         }
-
+        public void PlayGunShoot(GameObject target)
+        {
+            PlayAudio("Audios/gun_shoot", GetAudioSource(target));
+        }
         public void PlayShoot(GameObject target)
         {
             PlayAudio("DuckHunter/Audios/Shoot", GetAudioSource(target));

+ 55 - 3
Assets/DuckHunter/Scripts/CrossHair.cs

@@ -10,17 +10,30 @@ namespace DuckHunter
     {
         public static CrossHair Instance;
 
+        private bool open = false;
+        private bool visiable = false;
+        private bool onlyShow = true;
+        private Image image = null;
+
         void Start()
         {
             Instance = this;
             InitRotateRangeVH();
+
+            image = transform.Find("Image").GetComponent<Image>();
+            open = UserSettings.ins.openCrossHair;
+            visiable = image.enabled;
             UpdateHideShow(SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked);
+
             GlobalEventCenter.ins.onSimulateMouseAwakeChanged += UpdateHideShow;
 
             CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load<GameObject>("Prefabs/CrossHairOutBoundChecker1")).GetComponent<CrossHairOutBoundChecker1>();
             outBoundChecker.crossHair = transform as RectTransform;
         }
-
+        void Update()
+        {
+            if (open) SetVisiable(onlyShow);
+        }
         void OnDestroy()
         {
             if (Instance == this) Instance = null;
@@ -29,7 +42,38 @@ namespace DuckHunter
 
         void UpdateHideShow(bool mouseAwaked)
         {
-            transform.Find("Image").GetComponent<Image>().enabled = !mouseAwaked;
+            //transform.Find("Image").GetComponent<Image>().enabled = !mouseAwaked;
+
+            SetOnlyShow(!mouseAwaked);
+        }
+
+        void SetVisiable(bool value)
+        {
+            if (this.visiable == value) return;
+            this.visiable = value;
+            this.image.enabled = this.visiable;
+        }
+
+        public void SetOpen(bool open)
+        {
+            this.open = open;
+            if (!this.open)
+            {
+                SetVisiable(false);
+            }
+        }
+
+        public bool GetOpen()
+        {
+            return this.open;
+        }
+        public void SetOnlyShow(bool onlyShow)
+        {
+            this.onlyShow = onlyShow;
+        }
+        public bool GetOnlyShow()
+        {
+            return this.onlyShow;
         }
 
         Vector2 mapPosition;
@@ -57,7 +101,15 @@ namespace DuckHunter
 
         public void Shoot()
         {
-            AudioManager.Instance.PlayShoot(null);
+
+            if (GlobalData.MyDeviceMode == DeviceMode.Gun)
+            {
+                AudioManager.Instance.PlayGunShoot(null);
+            }
+            else {
+                AudioManager.Instance.PlayShoot(null);
+            }
+               
             _PlayShootAnimation();
         }
 

+ 22 - 3
Assets/DuckHunter/Scripts/GameUI.cs

@@ -13,6 +13,7 @@ namespace DuckHunter
         [SerializeField] Text textHitScore;
         [SerializeField] Button btnReset;
         [SerializeField] Button btnAim;
+        [SerializeField] Button btnCrosshair;
         [SerializeField] Button btnBack;
         [SerializeField] RectTransform duckForGameStart;
         [SerializeField] GameObject textGameOver;
@@ -31,11 +32,20 @@ namespace DuckHunter
                 UnityEngine.SceneManagement.SceneManager.LoadScene("DuckHunter");
             });
 
-            if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToHOUYIPRO())
+            if (GlobalData.MyDeviceMode == DeviceMode.Gun || BluetoothAim.ins && BluetoothAim.ins.isMainConnectToHOUYIPRO())
             {
                 btnAim.gameObject.SetActive(false);
+
+                btnCrosshair.gameObject.SetActive(true);
+                btnCrosshair.onClick.AddListener(delegate () {
+                    AudioManager.Instance.PlayBtn();
+                    bool onlyShow = !CrossHair.Instance.GetOnlyShow();
+                    CrossHair.Instance.SetOnlyShow(onlyShow);
+
+                });
             }
             else {
+                btnAim.gameObject.SetActive(true);
                 btnAim.onClick.AddListener(() =>
                 {
                     if (btnAim.GetComponent<LongPressMonitor>().isLongPress) return;
@@ -48,6 +58,7 @@ namespace DuckHunter
                     if (SB_EventSystem.ins) SB_EventSystem.ins.AwakenSimulateMouse();
                 };
             }
+
                 
             btnBack.onClick.AddListener(() => {
                 AudioManager.Instance.PlayBtn();
@@ -64,6 +75,11 @@ namespace DuckHunter
             });
             InitLevelSlider();
             levelSlider.onValueChanged.AddListener(OnLevelSliderUpdate);
+
+
+            //根据模式切换图标
+            tempRTF = GlobalData.MyDeviceMode == DeviceMode.Archery ? arrowsRTF : bulletRTF;
+            tempRTF.gameObject.SetActive(true);
         }
 
         void OnDestroy()
@@ -154,6 +170,8 @@ namespace DuckHunter
 
         List<Sequence> arrowsFadeSeqList = new List<Sequence>();
         [SerializeField] RectTransform arrowsRTF;
+        [SerializeField] RectTransform bulletRTF;
+        RectTransform tempRTF;
         public void RenderArrowCount(int count)
         {
             if (count == 0 && arrowsFadeSeqList.Count > 0) return;
@@ -166,9 +184,10 @@ namespace DuckHunter
                     seq.Kill();
                 }
             }
-            for (int i = 1; i < arrowsRTF.childCount; i++)
+       
+            for (int i = 1; i < tempRTF.childCount; i++)
             {
-                RectTransform iconRTF = arrowsRTF.GetChild(i) as RectTransform;
+                RectTransform iconRTF = tempRTF.GetChild(i) as RectTransform;
                 Image iconIMG = iconRTF.GetComponent<Image>();
                 iconIMG.color = Color.white;
                 iconRTF.gameObject.SetActive(i <= count);

BIN
Assets/DuckHunter/Textures/IconBullet.png


+ 147 - 0
Assets/DuckHunter/Textures/IconBullet.png.meta

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

+ 1 - 1
Assets/FruitMaster/Misc/Arrow/Bullet.prefab

@@ -80,7 +80,7 @@ SphereCollider:
   m_IsTrigger: 1
   m_Enabled: 1
   serializedVersion: 2
-  m_Radius: 0.5
+  m_Radius: 1
   m_Center: {x: 0, y: 0, z: 0}
 --- !u!1 &7049705229629056534
 GameObject:

+ 127 - 2
Assets/FruitMaster/Scenes/FruitMaster.unity

@@ -2545,7 +2545,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: -317.65002, y: -58.3}
+  m_AnchoredPosition: {x: -317.65002, y: -58.30005}
   m_SizeDelta: {x: 1000, y: 120}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &138885957
@@ -7378,6 +7378,7 @@ MonoBehaviour:
   MenuBackground: {fileID: 1059510566}
   ShutdownBtn: {fileID: 593881420}
   ResetAimBtn: {fileID: 1253462865}
+  CrossHairBtn: {fileID: 1531717409}
 --- !u!114 &416911652
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -7408,6 +7409,8 @@ MonoBehaviour:
   - {fileID: 8300000, guid: c47f17948f55d41c5876af88204e7f46, type: 3}
   CannonFiringSounds:
   - {fileID: 8300000, guid: c501d6df4133a2440a3c34737d36a075, type: 3}
+  GunSounds:
+  - {fileID: 8300000, guid: 99b6206d0f9d0e042848fa9aacc255eb, type: 3}
   LooseLifeSound: {fileID: 8300000, guid: c7e51972e54bb624e9ad42b5c5cc2a42, type: 3}
   BackgroundMusic: {fileID: 8300000, guid: 390e7a99cb0560f49a1dd255b0e3b819, type: 3}
   GameOverSound: {fileID: 8300000, guid: ac81e521cc4fffd4cb560d4ddc70d306, type: 3}
@@ -18485,7 +18488,7 @@ MonoBehaviour:
   m_UiScaleMode: 0
   m_ReferencePixelsPerUnit: 100
   m_ScaleFactor: 1
-  m_ReferenceResolution: {x: 800, y: 600}
+  m_ReferenceResolution: {x: 2532, y: 1732}
   m_ScreenMatchMode: 0
   m_MatchWidthOrHeight: 0
   m_PhysicalUnit: 3
@@ -25878,6 +25881,7 @@ RectTransform:
   m_Children:
   - {fileID: 593881419}
   - {fileID: 1253462864}
+  - {fileID: 1531717408}
   m_Father: {fileID: 0}
   m_RootOrder: 12
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -25984,6 +25988,127 @@ Transform:
   m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 9ce58190e6241944d9d6f97ea4c211e3, type: 3}
   m_PrefabInstance: {fileID: 1529378274}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1531717407
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1531717408}
+  - component: {fileID: 1531717411}
+  - component: {fileID: 1531717410}
+  - component: {fileID: 1531717409}
+  m_Layer: 5
+  m_Name: CrossHair_Btn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &1531717408
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1531717407}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 1}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1524914248}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: -125, y: 245}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1531717409
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1531717407}
+  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.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: 1531717410}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &1531717410
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1531717407}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 975c48aff00853643bcaee83d3aec28b, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1531717411
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1531717407}
+  m_CullTransparentMesh: 1
 --- !u!1001 &1532107474
 PrefabInstance:
   m_ObjectHideFlags: 0

+ 6 - 1
Assets/FruitMaster/Scripts/AudioManager.cs

@@ -11,7 +11,8 @@ public enum SoundCategory
     BombExplode,
     ArrowFire,
     CannonFire,
-    None
+    None,
+    GunFire,
 }
 
 // This class in instantiated on GameManager, storing all the audio related assets
@@ -21,6 +22,7 @@ public class AudioManager : MonoBehaviour
     [SerializeField] private AudioClip[] BombExplodeSounds;
     [SerializeField] private AudioClip[] ArrowFiringSounds;
     [SerializeField] private AudioClip[] CannonFiringSounds;
+    [SerializeField] private AudioClip[] GunSounds;
 
     [SerializeField] private AudioClip LooseLifeSound;
     [SerializeField] private AudioClip BackgroundMusic;
@@ -43,6 +45,9 @@ public class AudioManager : MonoBehaviour
             case SoundCategory.CannonFire:
                 clips = CannonFiringSounds;
                 break;
+            case SoundCategory.GunFire:
+                clips = GunSounds ;
+                break;
             default:
                 clips = null;
                 break;

+ 6 - 3
Assets/FruitMaster/Scripts/GamingManager.cs

@@ -568,15 +568,18 @@ public class GamingManager : MonoBehaviour
             if (GlobalData.MyDeviceMode == DeviceMode.Archery)
             {
                 arrow.GetComponent<ArrowBehavior>().Init(speed, dir, true,true);
+                BowFireAudio.clip = audioManager.GetRandomSound(SoundCategory.ArrowFire);
+                BowFireAudio.Play();
             }
             else {
                 //目前只有gun类型
-                arrow.GetComponent<ArrowBehavior>().Init(speed, dir, true,false);
+                arrow.GetComponent<ArrowBehavior>().Init(speed*2.0f, dir, true,false);
+                BowFireAudio.clip = audioManager.GetRandomSound(SoundCategory.GunFire);
+                BowFireAudio.Play();
             }
             arrow.GetComponent<ArrowBehavior>().OnMissShoot += MissShoot;
 
-            BowFireAudio.clip = audioManager.GetRandomSound(SoundCategory.ArrowFire);
-            BowFireAudio.Play();
+    
 
             //统计射箭次数
             if(bAddCount)

+ 46 - 1
Assets/FruitMaster/Scripts/JCFruitMaster.cs

@@ -14,6 +14,9 @@ public class JCFruitMaster : MonoBehaviour
     bool _needMouseAwaked;
 
     [SerializeField] Image aimingCross;
+    private bool open = false;
+    private bool visiable = false;
+    private bool onlyShow = true;
 
     public static JCFruitMaster ins;
 
@@ -26,6 +29,9 @@ public class JCFruitMaster : MonoBehaviour
         gamingUI.transform.Find("PauseExitBack/PauseBtn").gameObject.SetActive(false);
         CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load<GameObject>("Prefabs/CrossHairOutBoundChecker1")).GetComponent<CrossHairOutBoundChecker1>();
         outBoundChecker.crossHair = aimingCross.transform as RectTransform;
+
+        this.open = UserSettings.ins.openCrossHair;
+        this.visiable = aimingCross.enabled;
     }
 
     void OnDestroy()
@@ -46,7 +52,10 @@ public class JCFruitMaster : MonoBehaviour
             SimulateMouseController.ins?.AddOpenLocker("NotGame");
             _mouseAwaked = true;
         }
-        aimingCross.enabled = !SB_EventSystem.ins.simulateMouseIsAwaked;
+        //aimingCross.enabled = !SB_EventSystem.ins.simulateMouseIsAwaked;
+
+        if (open) SetVisiable(onlyShow && !SB_EventSystem.ins.simulateMouseIsAwaked);
+
     }
 
     public void ResetAim()
@@ -60,4 +69,40 @@ public class JCFruitMaster : MonoBehaviour
             AutoResetView.DoIdentity();
         }
     }
+
+
+    #region 显示和隐藏准心
+    void SetVisiable(bool value)
+    {
+        if (visiable == value) return;
+        visiable = value;
+        Debug.Log("AimingCross_img.enabled :" + visiable);
+        aimingCross.enabled = visiable;
+        Debug.Log("AimingCross_img.enabled :" + aimingCross.enabled);
+    }
+    public void SetOpen(bool open)
+    {
+        this.open = open;
+        if (!this.open)
+        {
+            SetVisiable(false);
+        }
+    }
+
+    public bool GetOpen()
+    {
+        return this.open;
+    }
+
+    public void SetOnlyShow(bool onlyShow)
+    {
+        this.onlyShow = onlyShow;
+
+        Debug.Log("AimingCross_img.onlyShow :" + this.onlyShow);
+    }
+    public bool GetOnlyShow()
+    {
+        return this.onlyShow;
+    }
+    #endregion
 }

+ 11 - 1
Assets/FruitMaster/Scripts/OverallLogics.cs

@@ -15,6 +15,7 @@ public class OverallLogics : MonoBehaviour
 
     [SerializeField] private Button ShutdownBtn;
     [SerializeField] private Button ResetAimBtn;
+    [SerializeField] private Button CrossHairBtn;
 
     private bool bPlayingGameOverAnim;
     private float TimeGameOverAnimPlayed = 0f;
@@ -36,9 +37,16 @@ public class OverallLogics : MonoBehaviour
     void Start()
     {
         // ShutdownBtn.onClick.AddListener(Shutdown);
-        if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToHOUYIPRO())
+        if (GlobalData.MyDeviceMode == DeviceMode.Gun || BluetoothAim.ins && BluetoothAim.ins.isMainConnectToHOUYIPRO())
         {
             ResetAimBtn.gameObject.SetActive(false);
+
+            CrossHairBtn.gameObject.SetActive(true);
+            CrossHairBtn.onClick.AddListener(delegate ()
+            {
+                bool onlyShow = !JCFruitMaster.ins.GetOnlyShow();
+                JCFruitMaster.ins.SetOnlyShow(onlyShow);
+            });
         }
         else
         {
@@ -46,6 +54,8 @@ public class OverallLogics : MonoBehaviour
             ResetAimBtn.gameObject.AddComponent<LongPressMonitor>().onLongPress += ResetAimLongPress;
         }
 
+       
+
         //GetComponent<SmartBowManager>().OnConnectionLost += OnSmartBowConnectionLost;
         _startGameBtn.onClick.AddListener(StartGame);
         GetComponent<GamingManager>().OnGameEnd += OnGameEnd;

+ 7 - 0
Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs

@@ -187,6 +187,13 @@ namespace InfraredManager
             return _screenLocate.filterDis;
         }
         /// <summary>
+        /// 设置亮度过滤阈值
+        /// </summary>
+        public void SetInfraredLocateBrightnessThreshold(float value)
+        {
+            _screenLocate.SetInfraredLocateBrightnessThreshold(value);
+        }
+        /// <summary>
         /// 是否已经定位
         /// </summary>
         public bool IsScreenLoateOK()

+ 14 - 12
Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs

@@ -208,9 +208,9 @@ public partial class ScreenLocate : MonoBehaviour
     {
         Main = this;
 
-#if !UNITY_EDITOR_WIN
-        DebugOnWin = false;
-#endif
+//#if !UNITY_EDITOR_WIN
+//      DebugOnWin   = false;
+//#endif
 
         //if (mUVCDrawer)
         //    mUVCDrawer.StartPreviewAction += UVCIsReady;
@@ -301,15 +301,17 @@ public partial class ScreenLocate : MonoBehaviour
     //    brightness = (int)_value;
     //    brightnessText.text = (2 + brightness) + "";
     //}
-
+    float redfilterValue = 0.8f;
     public void SetInfraredLocateBrightnessThreshold(float value)
     {
-
-        if (infraredLocate != null)
-        {
-            if (value >= 0 && value <= 1)
+        if (value >= 0 && value <= 1) {
+            redfilterValue = value;
+            if (infraredLocate != null)
+            {
                 infraredLocate.SetBrightnessThreshold(value);     // 参数是 红外灯的亮度阈值,阈值越小能够检测到的亮度就越低,默认值是0.93
+            }
         }
+          
     }
 
     void Update()
@@ -331,13 +333,13 @@ public partial class ScreenLocate : MonoBehaviour
         if (screenIdentification == null)
         {
             screenIdentification = new o0.Project.ScreenIdentification();
-            screenIdentification.OnLocateScreenEnter += OnLocateScreenEnter;
-            screenIdentification.OnLocateScreenEnd += OnLocateScreenEnd;
+            //screenIdentification.OnLocateScreenEnter += OnLocateScreenEnter;
+            //screenIdentification.OnLocateScreenEnd += OnLocateScreenEnd;
         }
         if (infraredLocate == null)
         {
             infraredLocate = new InfraredLocate(mUVCCameraInfo, screenIdentification, InfraredSpotSettings);
-            float redfilterValue = PlayerPrefs.GetFloat("Init redFilterSliderValue", 0.8f);
+            //float redfilterValue = PlayerPrefs.GetFloat("Init redFilterSliderValue", 0.8f);
             Debug.Log("Init Red filterValue:" + redfilterValue);
             infraredLocate.SetBrightnessThreshold(redfilterValue);     // 参数是 红外灯的亮度阈值,阈值越小能够检测到的亮度就越低,默认值是0.93
         }
@@ -679,7 +681,7 @@ public partial class ScreenLocate : MonoBehaviour
         }
 
         ReSizeTexture(width, height);
-        mUVCCameraInfo.SetSize(width, height);      // 手动记录分辨率,这里可能会有问题 width和height是期望的分辨率而不是当前摄像机实际分辨率
+        //mUVCCameraInfo.SetSize(width, height);      // 手动记录分辨率,这里可能会有问题 width和height是期望的分辨率而不是当前摄像机实际分辨率
     }
     #endregion
     public void BtnScreenMap()

+ 1 - 1
Assets/InfraredProject/WebCamera/Script/ZIM/ZIMUnity/ZIMWebCamera.cs

@@ -137,7 +137,7 @@ public class ZIMWebCamera : MonoBehaviour
     {
         ViewManager2.ShowView(ViewManager2.Path_InfraredScreenPositioningView);
         InfraredScreenPositioningView _infraredScreenPositioningView = FindObjectOfType<InfraredScreenPositioningView>();
-        _infraredScreenPositioningView.enterFromInfraredDemo = true;
+        _infraredScreenPositioningView.enterFromZimWebCamera = true;
         _infraredScreenPositioningView.transform.SetParent(mParent);
     }
 }

+ 32 - 4
Assets/Plugins/Android/AndroidManifest.xml

@@ -57,10 +57,6 @@
 		</receiver>
 
 		<!-- <activity android:name="com.serenegiant.uvcplugin.UsbPermissionActivity" tools:node="remove"/> -->
-		
-		
-		<!--  -->
-		<activity android:name="com.serenegiant.uvcplugin.UsbPermissionActivity" tools:node="remove"/>
 	</application>
 
 	<!-- 	<uses-permission android:name="android.permission.CAMERA" /> -->
@@ -94,4 +90,36 @@
 	<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
 
 	<uses-permission android:name="android.permission.USB_PERMISSION"/>
+
+
+	<uses-feature
+        android:glEsVersion="0x00020000"
+        android:required="true" />
+	<uses-feature
+        android:name="android.hardware.usb.host"
+        android:required="true" />
+	<uses-feature
+        android:name="android.hardware.camera"
+        android:required="false" />
+
+	<!-- targetSdkVersion=28 needs this permission to request to access to UVC device on Android9 -->
+	<uses-permission android:name="android.permission.CAMERA" />
+
+	<!-- USBパーミッション取得時にアプリをフォアグラウンドに戻すため -->
+	<uses-permission android:name="android.permission.REORDER_TASKS" />
+
+	<application>
+		<activity
+            android:name="com.serenegiant.unity.uvcplugin.UsbPermissionActivity"
+            android:exported="true"
+            android:theme="@android:style/Theme.NoDisplay" >
+			<intent-filter>
+				<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
+			</intent-filter>
+
+			<meta-data
+                android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
+                android:resource="@xml/device_filter_uvc" />
+		</activity>
+	</application>
 </manifest>

BIN
Assets/Plugins/Android/UVCCamera/uvc-plugin-9.3.2.aar


+ 100 - 0
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/ConnectGuidanceView.prefab

@@ -1154,6 +1154,7 @@ RectTransform:
   - {fileID: 1254516242017813032}
   - {fileID: 1254516243689083525}
   - {fileID: 1254516242045084299}
+  - {fileID: 177329546354770917}
   m_Father: {fileID: 1254516242006829828}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -3319,6 +3320,8 @@ MonoBehaviour:
   layouts:
   - {fileID: 1254516242006829831}
   - {fileID: 3902116191185670344}
+  textTip01: {fileID: 1254516242045084298}
+  textTip02: {fileID: 7279536001665279125}
   btnConnectBow: {fileID: 1254516242565904549}
 --- !u!1 &6942982441650629193
 GameObject:
@@ -3396,6 +3399,103 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7279536001665279125
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 177329546354770917}
+  - component: {fileID: 4548891430055357018}
+  - component: {fileID: 2306560004756161684}
+  - component: {fileID: 3513055030869596872}
+  m_Layer: 5
+  m_Name: TextTip2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &177329546354770917
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7279536001665279125}
+  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: 1254516242182012394}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: -60, y: 130}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &4548891430055357018
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7279536001665279125}
+  m_CullTransparentMesh: 1
+--- !u!114 &2306560004756161684
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7279536001665279125}
+  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, g: 0, b: 0, 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: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
+    m_FontSize: 24
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1.3
+  m_Text: When the green light flashes slowly, it means the device is on and ready
+    to connect to the app.
+--- !u!114 &3513055030869596872
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7279536001665279125}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: Guidance_Step3_Infrared
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &7565841745343055601
 GameObject:
   m_ObjectHideFlags: 0

+ 97 - 14
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab

@@ -376,8 +376,8 @@ RectTransform:
   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: 960, y: 362}
-  m_SizeDelta: {x: 160, y: 36}
+  m_AnchoredPosition: {x: 977.5, y: 458}
+  m_SizeDelta: {x: 200, y: 50}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &1574323687
 CanvasRenderer:
@@ -409,18 +409,18 @@ MonoBehaviour:
       m_Calls: []
   m_FontData:
     m_Font: {fileID: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
-    m_FontSize: 36
+    m_FontSize: 50
     m_FontStyle: 0
     m_BestFit: 0
     m_MinSize: 3
-    m_MaxSize: 40
+    m_MaxSize: 50
     m_Alignment: 0
     m_AlignByGeometry: 0
     m_RichText: 1
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u76F8\u673A\u611F\u5149\u5EA6"
+  m_Text: "\u56FE\u50CF\u4EAE\u5EA6"
 --- !u!1 &1657718194
 GameObject:
   m_ObjectHideFlags: 0
@@ -460,7 +460,7 @@ RectTransform:
   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: 971, y: 0}
+  m_AnchoredPosition: {x: 971, y: 76}
   m_SizeDelta: {x: 21.03, y: 636.04}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &1657718198
@@ -640,7 +640,7 @@ RectTransform:
   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: 1016, y: 0}
+  m_AnchoredPosition: {x: 1016, y: 76}
   m_SizeDelta: {x: 60, y: 647.97}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1710848639
@@ -1049,12 +1049,13 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 213060852178376601}
+  - {fileID: 6291751542338047667}
   m_Father: {fileID: 7371505907208373617}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 1}
   m_AnchorMax: {x: 0.5, y: 1}
-  m_AnchoredPosition: {x: 0, y: -172}
+  m_AnchoredPosition: {x: 0, y: -144}
   m_SizeDelta: {x: 893.52, y: 133}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &7876377500356943024
@@ -1154,7 +1155,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Color: {r: 0, g: 0, b: 0, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
@@ -1201,7 +1202,7 @@ RectTransform:
   m_Children:
   - {fileID: 2754138103861813462}
   m_Father: {fileID: 2371513326884009388}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -1356,6 +1357,8 @@ MonoBehaviour:
   line: {fileID: 5320514685055518600}
   slider: {fileID: 1710848639}
   rawImage: {fileID: 4109810863229036433}
+  textTip1: {fileID: 6474032259244959646}
+  textTip2: {fileID: 4901933954594160457}
 --- !u!1 &1138206598639200060
 GameObject:
   m_ObjectHideFlags: 0
@@ -2090,7 +2093,7 @@ RectTransform:
   m_Children:
   - {fileID: 9012286184410734088}
   m_Father: {fileID: 2371513326884009388}
-  m_RootOrder: 2
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -2221,9 +2224,9 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 8173070362425183393}
+  - {fileID: 6548202302383968087}
   - {fileID: 2329041637679056857}
   - {fileID: 4870896031829746376}
-  - {fileID: 6548202302383968087}
   m_Father: {fileID: 7371505907208373617}
   m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -2551,6 +2554,86 @@ MonoBehaviour:
           m_StringArgument: 
           m_BoolArgument: 0
         m_CallState: 2
+--- !u!1 &4901933954594160457
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6291751542338047667}
+  - component: {fileID: 3260208961506221279}
+  - component: {fileID: 2687458959944016227}
+  m_Layer: 5
+  m_Name: TextTip 2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &6291751542338047667
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4901933954594160457}
+  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: 4944701656153808412}
+  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: -266, y: -57}
+  m_SizeDelta: {x: 893.52, y: 133}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3260208961506221279
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4901933954594160457}
+  m_CullTransparentMesh: 1
+--- !u!114 &2687458959944016227
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4901933954594160457}
+  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: 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_FontData:
+    m_Font: {fileID: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
+    m_FontSize: 53
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 53
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u5982\u81EA\u52A8\u8BC6\u522B\u7684\u4F4D\u7F6E\u4E0D\u51C6\u786E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5BF9\u56FE\u50CF\u4EAE\u5EA6\u8FDB\u884C\u8C03\u8282\u540E\uFF0C\n\u518D\u6B21\u81EA\u52A8\u8BC6\u522B\r\u3002\u5982\u591A\u6B21\u81EA\u52A8\u8BC6\u522B\u4E0D\u6210\u529F\uFF0C\u53EF\u81EA\u52A8\u8BC6\u522B\u7684\u57FA\u7840\n\u4E0A\uFF0C\u901A\u8FC7\u624B\u6307\u70B9\u51FB\u62D6\u52A8\u5B9A\u4F4D\u533A\u57DF\u56DB\u4E2A\u89D2\u8FDB\u884C\u8C03\u6574\u3002\u5F85\u8C03\u6574\u6210\n\u529F\u540E\uFF0C\u70B9\u51FB\u786E\u8BA4\u952E\u9000\u51FA\u5C4F\u5E55\u5B9A\u4F4D\u529F\u80FD\u3002"
 --- !u!1 &5200702324567003523
 GameObject:
   m_ObjectHideFlags: 0
@@ -2941,7 +3024,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u8BF7\u6309\u7167\u4E0A\u4E00\u6B65\u7684\u8981\u6C42\u8C03\u6574\u76F8\u673A\u4F4D\u7F6E\n\u53F3\u4FA7\u6ED1\u6761\u53EF\u8C03\u6574\u753B\u9762\u4EAE\u5EA6"
+  m_Text: "\u5148\u70B9\u51FB\u81EA\u52A8\u529F\u80FD\u8FDB\u884C\u5C4F\u5E55\u8BC6\u522B\uFF0C\u7535\u89C6\u4E0A\u4F1A\u51FA\u73B0\n\u9ED1\u5C4F\u548C\u767D\u5C4F\u7684\u56FE\u50CF\uFF0C\u5E76\u901A\u8FC7\u8F6F\u4EF6\u8FDB\u884C\u8BC6\u522B"
 --- !u!1 &6607547226471776927
 GameObject:
   m_ObjectHideFlags: 0
@@ -3604,7 +3687,7 @@ RectTransform:
   m_Children:
   - {fileID: 4139119004336345077}
   m_Father: {fileID: 2371513326884009388}
-  m_RootOrder: 3
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}

+ 13 - 14
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredView.prefab

@@ -203,7 +203,7 @@ RectTransform:
   m_GameObject: {fileID: 1649684191743700132}
   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_LocalScale: {x: 1.2, y: 1.2, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 3429401973586824873}
@@ -290,7 +290,7 @@ RectTransform:
   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: 110, y: 163}
+  m_AnchoredPosition: {x: 110, y: 245}
   m_SizeDelta: {x: 338.47998, y: 73.19}
   m_Pivot: {x: 0, y: 0.5}
 --- !u!222 &2982101018291640511
@@ -628,7 +628,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1.3
-  m_Text: "\u76F8\u673A\u6821\u51C6\u6CE8\u610F\u4E8B\u9879"
+  m_Text: "\u5C4F\u5E55\u5B9A\u4F4D\u8BF4\u660E"
 --- !u!114 &2676999006535766208
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -641,7 +641,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: Gyro_Step1
+  textKey: Infrared-Step2_title
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &4462516361251967786
@@ -713,7 +713,7 @@ MonoBehaviour:
       m_Calls: []
   m_FontData:
     m_Font: {fileID: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
-    m_FontSize: 24
+    m_FontSize: 30
     m_FontStyle: 0
     m_BestFit: 0
     m_MinSize: 0
@@ -724,8 +724,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u8C03\u6574\u6444\u50CF\u5934\u4F4D\u7F6E\uFF0C\u786E\u4FDD\u53EF\u4EE5\u62CD\u6444\u5230\u7535\u89C6\u7684\u56DB\u89D2\n\r\u5E76\u4F7F\u7535\u89C6\u5C3D\u91CF\u5360\u6EE1\u753B\u9762\uFF0C\u65CB\u8F6C\u76F8\u673A\u955C\u5934\u53EF\u5BF9\u7126\u3002\n\r\n\r\n\u4E25\u683C\u6309\u7167\u6570\u5B57\u987A\u5E8F\u4F9D\u6B21\u53CC\u51FB\r\n\u76F8\u673A\u53EA\u9700\u5B9A\u4F4D\u4E00\u6B21\uFF0C\u53EA\u8981\u4E0D\u79FB\u52A8\u4F4D\u7F6E\uFF0C\u5C31\u65E0\u9700\u518D\u5B9A\u4F4D
-    \r\n\n\r\n\u627E\u51FA\u753B\u9762\u91CC\u663E\u793A\u5C4F\u76844\u4E2A\u89D2\u6309\u7167\u6570\u5B57\u987A\u5E8F\u4F9D\u6B21\u70B9\u51FB\u8FDB\u884C\u4F4D\u7F6E\u6807\u6CE8\u3002\u8BF7\u6CE8\u610F\u4E0D\u662F\u753B\u9762\u7EA2\u8272\u533A\u57DF\u6570\u5B57\u4F4D\u7F6E\u76844\u4E2A\u89D2\uFF0C\u800C\u662F\u753B\u9762\u91CC\u7684\u663E\u793A\u5C4F\u76844\u4E2A\u89D2\u3002"
+  m_Text: "\u8C03\u6574\u6444\u50CF\u5934\u4F4D\u7F6E\uFF0C\u5E76\u4F7F\u7535\u89C6\u5C3D\u91CF\u5360\u6EE1\u753B\u9762\uFF0C\u786E\u4FDD\u53EF\u4EE5\u62CD\u6444\u5230\u7535\u89C6\u7684\u56DB\u89D2\u3002\n\n\u5148\u70B9\u51FB\u81EA\u52A8\u529F\u80FD\u8FDB\u884C\u5C4F\u5E55\u8BC6\u522B\uFF0C\u7535\u89C6\u4E0A\u4F1A\u51FA\u73B0\u9ED1\u5C4F\u548C\u767D\u5C4F\u7684\u56FE\u50CF\uFF0C\u5E76\u901A\u8FC7\u8F6F\u4EF6\u8FDB\u884C\u8BC6\u522B\u3002\n\n\u5982\u81EA\u52A8\u8BC6\u522B\u7684\u4F4D\u7F6E\u4E0D\u51C6\u786E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u5BF9\u56FE\u50CF\u4EAE\u5EA6\u8FDB\u884C\u8C03\u8282\u540E\uFF0C\u518D\u6B21\u81EA\u52A8\u8BC6\u522B\u3002\u5982\u591A\u6B21\u81EA\u52A8\u8BC6\u522B\u4E0D\u6210\u529F\uFF0C\u53EF\u81EA\u52A8\u8BC6\u522B\u7684\u57FA\u7840\u4E0A\uFF0C\u901A\u8FC7\u624B\u6307\u70B9\u51FB\u62D6\u52A8\u5B9A\u4F4D\u533A\u57DF\u56DB\u4E2A\u89D2\u8FDB\u884C\u8C03\u6574\u3002\n\n\u5C4F\u5E55\u4F4D\u7F6E\u53EA\u9700\u5B9A\u4F4D\u4E00\u6B21\uFF0C\u53EA\u8981\u4E0D\u79FB\u52A8\u6444\u50CF\u5934\u7684\u4F4D\u7F6E\uFF0C\u5C31\u65E0\u9700\u518D\u5B9A\u4F4D\u3002"
 --- !u!114 &5493287035359193497
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -1362,7 +1361,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: Guidance_Title
+  textKey: Infrared-title
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &5651314243503148116
@@ -1512,7 +1511,7 @@ RectTransform:
   m_GameObject: {fileID: 5651314243550147650}
   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_LocalScale: {x: 1.1, y: 1.1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 5651314243945683617}
@@ -1598,7 +1597,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 21}
   m_SizeDelta: {x: -60, y: 100}
   m_Pivot: {x: 0.5, y: 0}
 --- !u!222 &5651314243945683623
@@ -1631,18 +1630,18 @@ MonoBehaviour:
       m_Calls: []
   m_FontData:
     m_Font: {fileID: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
-    m_FontSize: 24
+    m_FontSize: 30
     m_FontStyle: 0
     m_BestFit: 0
     m_MinSize: 0
-    m_MaxSize: 40
+    m_MaxSize: 300
     m_Alignment: 1
     m_AlignByGeometry: 0
     m_RichText: 1
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1.3
-  m_Text: "\u4F7F\u6444\u50CF\u5934\u4F4D\u4E8E\u7535\u89C6\u7684\u524D\u65B9\uFF0C\u65CB\u8F6C\u6444\u50CF\u5934\u4F7F\u5176\u671D\u5411\u7535\u89C6\u5C4F\u5E55\u3002"
+  m_Text: "\u5148\u8FDB\u884C\u6295\u5C4F\uFF0C\u5E76\u4F7F\u6444\u50CF\u5934\u652F\u67B6\u4F4D\u4E8E\u7535\u89C6\u7684\u6B63\u524D\u65B9\uFF0C\u8C03\u6574\u6444\u50CF\u5934\u652F\u67B6\u4F7F\u6444\u50CF\u5934\u671D\u5411\u7535\u89C6\u5C4F\u5E55\u3002"
 --- !u!114 &8170560892596963829
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -2029,6 +2028,6 @@ RectTransform:
   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: 115, y: 90}
+  m_AnchoredPosition: {x: 115, y: 172}
   m_SizeDelta: {x: 338.47998, y: 411}
   m_Pivot: {x: 0, y: 1}

+ 14 - 3
Assets/SmartBow/Scripts/Views/ConnectGuidanceView.cs

@@ -9,6 +9,15 @@ public class ConnectGuidanceView : MonoBehaviour
 
     bool isNext = false;
 
+    [SerializeField] GameObject textTip01;
+    [SerializeField] GameObject textTip02;
+
+    //定位进来时候调用
+    public void showTextipInfrared() {
+        textTip01.SetActive(false);
+        textTip02.SetActive(true);
+    }
+
     void Start()
     {
         //进入指南页面,onCreateAimDeviceInfoById 一下 aimdevice,和设置一下type
@@ -65,7 +74,7 @@ public class ConnectGuidanceView : MonoBehaviour
             if (bowStatus == BluetoothStatusEnum.ConnectSuccess)
             {
                 AimHandler.ins.OnSaveAimDeviceInfos();
-                if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO)
+                if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO && AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.Gun)
                 {
                     //如果不是红外设备,才进入校准?
                     ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
@@ -87,7 +96,7 @@ public class ConnectGuidanceView : MonoBehaviour
             if (bowStatus2P == SmartBowSDK.BluetoothStatusEnum.Connected)
             {
                 AimHandler.ins.OnSaveAimDeviceInfos();
-                if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO)
+                if (AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.HOUYIPRO && AimHandler.ins.aimDeviceInfo.type != (int)AimDeviceType.Gun)
                 {
                     //如果不是红外设备,才进入校准?
                     ViewManager2.HideView(ViewManager2.Path_ConnectGuidanceView);
@@ -252,7 +261,7 @@ public class ConnectGuidanceView : MonoBehaviour
             Debug.Log("-----进入射箭场景!");
             NewUserGuiderManager newUserGuiderManager = FindObjectOfType<NewUserGuiderManager>();
             newUserGuiderManager.curConfigKey = "开始-红外调整";
-            newUserGuiderManager.isNewModule = AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.HOUYIPRO;
+            newUserGuiderManager.isNewModule = AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.HOUYIPRO || AimHandler.ins.aimDeviceInfo.type == (int)AimDeviceType.Gun ;
             //进入射箭场景
             GlobalData.pkMatchType = PKMatchType.None;
             GameMgr.gameType = 1;
@@ -260,6 +269,8 @@ public class ConnectGuidanceView : MonoBehaviour
             GameMgr.bNavBack = true;
             GameMgr.bShowDistance = false;
             AimHandler.ins.bInitOne = true;
+            //关闭计时器
+            GameMgr.turnOffTimer = true;
 
             UnityEngine.SceneManagement.SceneManager.LoadScene(
                 "Game", UnityEngine.SceneManagement.LoadSceneMode.Single);

+ 25 - 4
Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredScreenPositioningView.cs

@@ -43,6 +43,10 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
     [SerializeField]
     RawImage rawImage;
 
+    [SerializeField]
+    GameObject textTip1;
+    [SerializeField]
+    GameObject textTip2;
     private void Awake()
     {
         offset = line.MyThickness;
@@ -51,6 +55,8 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
 
     void Start()
     {
+        textTip1.SetActive(true);
+        textTip2.SetActive(false);
         //quadUnityVectorList.Clear();
         //quadUnityVectorList.Add(new Vector2(16.39f, 35.91f));
         //quadUnityVectorList.Add(new Vector2(233.35f, 51.08f));
@@ -124,7 +130,11 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
 
     public void OnClick_Auto()
     {
-        if (enterFromInfraredDemo)
+
+        textTip1.SetActive(false);
+        textTip2.SetActive(true);
+
+        if (enterFromZimWebCamera)
         {
             ScreenLocate _screenLocate = FindAnyObjectByType<ScreenLocate>();
             _screenLocate.EnterScreenLocateManualAuto();
@@ -135,6 +145,8 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
         {
             InfraredDemo.infraredCameraHelper.EnterScreenLocateManualAuto();
         }
+
+     
     }
 
     public void SyncScreenPosition()
@@ -262,11 +274,13 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
     }
 
     //是不是从Demo界面进入该页面的
-    [System.NonSerialized] public bool enterFromInfraredDemo;
+    public bool enterFromInfraredDemo { get; set; } = false;
+    //是否从测试场景进入
+    public bool enterFromZimWebCamera { get; set; } = false;
     //确认修改
     public void onConfirmation()
     {
-        if (enterFromInfraredDemo)
+        if (enterFromZimWebCamera)
         {
             ConfirmScreenLocateManualTest();
             if (oldLinePosition.Count > 1) // 确保列表不为空
@@ -297,7 +311,14 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             //跳转入界面
             AudioMgr.ins.PlayBtn();
             ViewManager2.HideView(ViewManager2.Path_InfraredScreenPositioningView);
-            ViewManager2.ShowView(ViewManager2.Path_ConnectGuidanceView);
+
+            if (!enterFromInfraredDemo) {
+                //每次初始化重置一下引导
+                InfraredDemo._ins.resetInfraredPlayerPrefs();
+                GameObject connectGuidanceView = ViewManager2.getGameObjectAndShowView(ViewManager2.Path_ConnectGuidanceView);
+                connectGuidanceView.GetComponent<ConnectGuidanceView>().showTextipInfrared();
+            }
+           
         }
 
         //存储一次节点

BIN
Assets/SmartBow/SmartBowSDK/SmartBowSDK.dll


+ 3 - 0
ProjectSettings/EditorBuildSettings.asset

@@ -38,4 +38,7 @@ EditorBuildSettings:
   - enabled: 0
     path: Assets/InfraredProject/UVC4UnityAndroidPlugin/Samples/Scenes/UVC2DScene.unity
     guid: d9c653ce29884b648bd83d4066fe46c0
+  - enabled: 0
+    path: Assets/BowArrow/Scenes/Test.unity
+    guid: 14f136990a82f0042aae1edcec1f03a2
   m_configObjects: {}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.