Przeglądaj źródła

1.修改校准流程

slambb 1 rok temu
rodzic
commit
51d9ab8dfd
49 zmienionych plików z 8973 dodań i 344 usunięć
  1. 238 26
      Assets/BowArrow/Fonts/HarmonyOS_Sans_SC_Regular SDF.asset
  2. 9 0
      Assets/BowArrow/InfraredCamera/InfraredDemo.cs
  3. 14 4
      Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.cs
  4. 276 10
      Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab
  5. 1 1
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.cs
  6. 11 1
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider2.cs
  7. 961 61
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider2.prefab
  8. 99 0
      Assets/BowArrow/Resources/Prefabs/Views/AutoResetView.prefab
  9. 40 0
      Assets/BowArrow/Scripts/Bluetooth/AimHandler.cs
  10. 1 1
      Assets/BowArrow/Scripts/CommonConfig.cs
  11. 27 9
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json
  12. 27 7
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json
  13. 13 4
      Assets/BowArrow/Scripts/Expand/AutoResetView.cs
  14. 8 6
      Assets/BowArrow/Scripts/Game/CrossHair.cs
  15. 17 5
      Assets/BowArrow/Scripts/View/Home/DeviceViewInfrared.cs
  16. 1 1
      Assets/BowArrow/Scripts/View/Home/HomeView_ChallengeOption.cs
  17. 2 1
      Assets/Game_Hyperspace/Script/GeneratingTarget.cs
  18. 2 1
      Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs
  19. 20 9
      Assets/InfraredProject/InfraredCamera/Scripts/ScreenLocate.cs
  20. 2 0
      Assets/InfraredProject/WebCamera/Script/ZIM/InfraredLocate/ScreenIdentification.cs
  21. 3 1
      Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs
  22. 4134 137
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab
  23. 1265 45
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredView.prefab
  24. 9 9
      Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredGuidanceView.cs
  25. 260 5
      Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredScreenPositioningView.cs
  26. 169 0
      Assets/SmartBow/Scripts/Views/InfraredViewParts/PointMarker.cs
  27. 11 0
      Assets/SmartBow/Scripts/Views/InfraredViewParts/PointMarker.cs.meta
  28. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/InfraredViewBg.png
  29. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/InfraredViewBg.png.meta
  30. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/Step1.png
  31. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/Step1.png.meta
  32. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/Step2.png
  33. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/Step2.png.meta
  34. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/Step3.png
  35. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/Step3.png.meta
  36. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/leftBottom.png
  37. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/leftBottom.png.meta
  38. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/leftUp.png
  39. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/leftUp.png.meta
  40. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/rightBottom.png
  41. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/rightBottom.png.meta
  42. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/rightUp.png
  43. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/rightUp.png.meta
  44. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/selected.png
  45. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/selected.png.meta
  46. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/selected_bg.png
  47. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/selected_bg.png.meta
  48. BIN
      Assets/SmartBow/Textures/Guidance/Infrared/unselected.png
  49. 123 0
      Assets/SmartBow/Textures/Guidance/Infrared/unselected.png.meta

Plik diff jest za duży
+ 238 - 26
Assets/BowArrow/Fonts/HarmonyOS_Sans_SC_Regular SDF.asset


+ 9 - 0
Assets/BowArrow/InfraredCamera/InfraredDemo.cs

@@ -1022,6 +1022,15 @@ public class InfraredDemo : MonoBehaviour
     {
         onSliderEvent(value, "PU_CONTRAST", min, max);
     }
+
+    public void onSetSliderCustomBrightnessValue(Slider _slider, float min = 0.0f, float max = 10.0f)
+    {
+        onSetSliderValue(_slider, "PU_BRIGHTNESS", min, max);
+    }
+    public void onSliderCustomBrightnessEvent(float value, float min = 0.0f, float max = 10.0f)
+    {
+        onSliderEvent(value, "PU_BRIGHTNESS", min, max);
+    }
     public void onSetSliderValue(Slider _slider,string typeStr = "PU_CONTRAST", float min = 0.0f, float max = 10.0f)
     {
         if (BluetoothWindows.IsWindows()) {

+ 14 - 4
Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.cs

@@ -22,11 +22,13 @@ public class InfraredGuider : MonoBehaviour
     public Button resulutionButton;
 
     public GameObject Title1ARTEMISPro;
+    public GameObject Title1GunPro;
     public GameObject Title1;
     public GameObject Title2;
     //×¼ÐÄ
     public GameObject TitleCrossHair; //HOUYIPro
-    public GameObject TitleCrossHair2;//ARTEMISPro ºÍ Gun
+    public GameObject TitleCrossHair2;//ARTEMISProGun
+    public GameObject TitleCrossHairGun;//Gun
 
     public TipStep mTipStep { get; private set; } = TipStep.None;
 
@@ -133,7 +135,7 @@ public class InfraredGuider : MonoBehaviour
     /// </summary>
     public void onLongClickDevice()
     {
-        if (Title1.activeSelf || Title1ARTEMISPro.activeSelf)
+        if (Title1.activeSelf || Title1ARTEMISPro.activeSelf || Title1GunPro.activeSelf || Title2.activeSelf)
         {
             AutoResetView.onInfraredGuiderAutoResetView(); 
         }
@@ -157,9 +159,12 @@ public class InfraredGuider : MonoBehaviour
                 {
                     TitleCrossHair.SetActive(true);
                 }
-                else if (BluetoothAim.ins.isMainConnectToARTEMISPRO() || BluetoothAim.ins.isMainConnectToGun())
+                else if (BluetoothAim.ins.isMainConnectToARTEMISPRO())
                 {
                     TitleCrossHair2.SetActive(true);
+                } else if (BluetoothAim.ins.isMainConnectToGun()) {
+
+                    TitleCrossHairGun.SetActive(true);
                 }
                 break;
             case TipStep.CalibrationOffset:
@@ -169,9 +174,12 @@ public class InfraredGuider : MonoBehaviour
                 {
                     Title1.SetActive(true);
                 }
-                else if (BluetoothAim.ins.isMainConnectToARTEMISPRO() || BluetoothAim.ins.isMainConnectToGun())
+                else if (BluetoothAim.ins.isMainConnectToARTEMISPRO())
                 {
                     Title1ARTEMISPro.SetActive(true);
+                }else if (BluetoothAim.ins.isMainConnectToGun())
+                {
+                    Title1GunPro.SetActive(true);
                 }
                 break;
             case TipStep.Finish:
@@ -183,9 +191,11 @@ public class InfraredGuider : MonoBehaviour
     void AllTipFalse() {
         TitleCrossHair.SetActive(false);
         TitleCrossHair2.SetActive(false);
+        TitleCrossHairGun.SetActive(false);
         Title1.SetActive(false);
         Title2.SetActive(false);
         Title1ARTEMISPro.SetActive(false);
+        Title1GunPro.SetActive(false);
     }
 
     /// <summary>

+ 276 - 10
Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab

@@ -884,7 +884,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0}
   m_AnchorMax: {x: 0.5, y: 0}
   m_AnchoredPosition: {x: 0, y: 100}
-  m_SizeDelta: {x: 380, y: 120}
+  m_SizeDelta: {x: 400, y: 120}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &2312110589409148697
 CanvasRenderer:
@@ -2184,7 +2184,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5023516867516367148}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2612,6 +2612,111 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 2a090a296f3aedc4abccebea2a012d86, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+--- !u!1 &3775268321300331749
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7515541337924615365}
+  - component: {fileID: 767148841805902699}
+  - component: {fileID: 1259052360971693837}
+  - component: {fileID: 4107198112651785395}
+  m_Layer: 5
+  m_Name: ' TopTip_GunPro'
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7515541337924615365
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3775268321300331749}
+  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: 5023516867516367148}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 950, y: 168}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &767148841805902699
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3775268321300331749}
+  m_CullTransparentMesh: 1
+--- !u!114 &1259052360971693837
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3775268321300331749}
+  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: 37
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 3
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "Remove the magazine module, double-click the button on it to calibrate
+    the center \nof sight, quickly reinstall the magazine, aim at the target with
+    a three-point line\n shooting posture, and complete the center of sight calibration
+    after 10 seconds."
+--- !u!114 &4107198112651785395
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3775268321300331749}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: TopTip_GunPro
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes:
+  - language: 0
+    fontSize: 40
+    lineSpacing: -1
+  - language: 1
+    fontSize: 37
+    lineSpacing: -1
 --- !u!1 &3829436517265363255
 GameObject:
   m_ObjectHideFlags: 0
@@ -2812,10 +2917,12 @@ MonoBehaviour:
   infraredResulutionGuider: {fileID: 3835120308163295946, guid: 42932db5aedeada47a6b7f34539e1da6, type: 3}
   resulutionButton: {fileID: 8099165209821351515}
   Title1ARTEMISPro: {fileID: 3013476522543646493}
+  Title1GunPro: {fileID: 3775268321300331749}
   Title1: {fileID: 9210257449984959726}
   Title2: {fileID: 4943436891779681838}
   TitleCrossHair: {fileID: 5678538608131077930}
   TitleCrossHair2: {fileID: 7294590553609322353}
+  TitleCrossHairGun: {fileID: 6871263839567914333}
   collisionCount: 0
   slider: {fileID: 6932389852952640046}
   Step1: {fileID: 3829436517265363255}
@@ -3109,8 +3216,10 @@ RectTransform:
   m_Children:
   - {fileID: 7021590071811300648}
   - {fileID: 843223213562008419}
+  - {fileID: 7866843522089257830}
   - {fileID: 1440868436719278535}
   - {fileID: 2409190577650277834}
+  - {fileID: 7515541337924615365}
   - {fileID: 6657701493966686997}
   m_Father: {fileID: 2071558874393515744}
   m_RootOrder: 3
@@ -3200,7 +3309,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1.8
-  m_Text: "3.\n\u5982\u53D1\u73B0\u5149\u6807\u4E0D\u987A\u6ED1\uFF0C\u6216\u5149\u6807\u7684\u79FB\u52A8\u8303\u56F4\u4E0D\u591F\u5927\uFF0C\u8BF7\u8C03\u6574\u56FE\u50CF\u4EAE\u5EA6\uFF1B"
+  m_Text: "3.\n\u5982\u53D1\u73B0\u5149\u6807\u4E0D\u987A\u6ED1\uFF0C\u6216\u5149\u6807\u7684\u79FB\u52A8\u8303\u56F4\u4E0D\u591F\u5927\uFF0C\u8BF7\u8C03\u6574\u56FE\u50CF\u4EAE\u5EA6\u6216\u5BF9\u6BD4\u5EA6\u3002"
 --- !u!114 &1117729220340847102
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -3382,7 +3491,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5023516867516367148}
-  m_RootOrder: 4
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -3586,7 +3695,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0}
   m_AnchorMax: {x: 0.5, y: 0}
   m_AnchoredPosition: {x: 0, y: 100}
-  m_SizeDelta: {x: 380, y: 120}
+  m_SizeDelta: {x: 400, y: 120}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &875207114408813601
 CanvasRenderer:
@@ -4385,7 +4494,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u56FE\u50CF\u4EAE\u5EA6"
+  m_Text: "\u4EAE\u5EA6\u548C\u5BF9\u6BD4\u5EA6"
 --- !u!114 &7762428653136845528
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -4398,7 +4507,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: ImageBrightness
+  textKey: BrightnessOrContracts
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &6019196158010590561
@@ -4980,6 +5089,163 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &6871263839567914333
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7866843522089257830}
+  - component: {fileID: 5187876345794075619}
+  - component: {fileID: 4734882936315830298}
+  - component: {fileID: 1132993380049111918}
+  m_Layer: 5
+  m_Name: CrossHairTipGunPro
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7866843522089257830
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6871263839567914333}
+  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: 5023516867516367148}
+  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: 0}
+  m_SizeDelta: {x: 1390, y: 168}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &5187876345794075619
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6871263839567914333}
+  m_CullTransparentMesh: 1
+--- !u!114 &4734882936315830298
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6871263839567914333}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "\u53D6\u51FA\u5F39\u5939\u6A21\u5757\uFF0C\u5355\u51FB\u5176\u4E0A\u7684\u6309\u952E\uFF0C\u8FD9\u662F\u8FDB\u5165\u51C6\u5FC3\n\u8C03\u6574\u754C\u9762\u7684\u5F00/\u5173\uFF0C\u8BF7\u8FDE\u63A5\u64CD\u4F5C\u4E24\u6B21\u201D"
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: bbcfb1567bce0b641adc9310d760d234, type: 2}
+  m_sharedMaterial: {fileID: -8666424993308654677, guid: bbcfb1567bce0b641adc9310d760d234, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 11400000, guid: 135e264eb590efc4aa28b107124efc25, type: 2}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 37
+  m_fontSizeBase: 37
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 1
+  m_HorizontalAlignment: 2
+  m_VerticalAlignment: 512
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 5.3380737}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!114 &1132993380049111918
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6871263839567914333}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: TopTip_CrossHairGunPro
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes:
+  - language: 0
+    fontSize: 40
+    lineSpacing: 31
+  - language: 1
+    fontSize: 37
+    lineSpacing: 0
 --- !u!1 &7009910643302002191
 GameObject:
   m_ObjectHideFlags: 0
@@ -5281,7 +5547,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: TopTip_CrossHairGun
+  textKey: TopTip_CrossHairPro
   layoutRebuildObject: {fileID: 0}
   languageFontSizes:
   - language: 0
@@ -5948,7 +6214,7 @@ RectTransform:
   m_AnchorMin: {x: 0.5, y: 0}
   m_AnchorMax: {x: 0.5, y: 0}
   m_AnchoredPosition: {x: 0, y: 100}
-  m_SizeDelta: {x: 380, y: 120}
+  m_SizeDelta: {x: 400, y: 120}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &8933190441884695282
 CanvasRenderer:
@@ -6325,7 +6591,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5023516867516367148}
-  m_RootOrder: 2
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 1}
   m_AnchorMax: {x: 0.5, y: 1}

+ 1 - 1
Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.cs

@@ -7,7 +7,7 @@ using ZIM;
 using ZIM.Unity;
 
 //处理光源检测部分
-public class InfraredLightGuider2 : MonoBehaviour
+public class InfraredLightGuider : MonoBehaviour
 {
     [SerializeField]
     RawImage rawImage;

+ 11 - 1
Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider2.cs

@@ -7,13 +7,16 @@ using ZIM;
 using ZIM.Unity;
 
 //处理光源检测部分
-public class InfraredLightGuider : MonoBehaviour
+public class InfraredLightGuider2 : MonoBehaviour
 {
     [SerializeField]
     RawImage rawImage;
     //相机感光部分
     [SerializeField]
     Slider slider;
+    //亮度
+    [SerializeField]
+    Slider sliderBrightness;
 
     [SerializeField] List<RectTransform> _crosshairsInCamera;
 
@@ -28,6 +31,13 @@ public class InfraredLightGuider : MonoBehaviour
             });
             InfraredDemo._ins.onSetSliderCustomValue(slider,- 20.0f, 20.0f);
 
+            //亮度
+            sliderBrightness.onValueChanged.AddListener((value) =>
+            {
+                InfraredDemo._ins.onSliderCustomBrightnessEvent(value, -20.0f, 20.0f);
+            });
+            InfraredDemo._ins.onSetSliderCustomBrightnessValue(sliderBrightness, -20.0f, 20.0f);
+
             SetLocatePointsToCameraRender(ScreenLocate.quadUnityVectorList,1,1);
         }
 

Plik diff jest za duży
+ 961 - 61
Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider2.prefab


+ 99 - 0
Assets/BowArrow/Resources/Prefabs/Views/AutoResetView.prefab

@@ -1,5 +1,101 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &410729350025696783
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6714084997552880040}
+  - component: {fileID: 1902031125379766742}
+  - component: {fileID: 2243730440954972359}
+  - component: {fileID: 8103677087008083281}
+  m_Layer: 5
+  m_Name: Text-Infrared-Gun
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &6714084997552880040
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 410729350025696783}
+  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: 4272915218284800337}
+  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: 60, y: -59.692307}
+  m_SizeDelta: {x: 0, y: 39.384613}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1902031125379766742
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 410729350025696783}
+  m_CullTransparentMesh: 1
+--- !u!114 &2243730440954972359
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 410729350025696783}
+  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: 0
+  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: 30
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: 
+--- !u!114 &8103677087008083281
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 410729350025696783}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: "new-user-guider_tip_\u89C6\u89D2\u5F52\u4F4D-\u7784\u51C6-infrared-gun"
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &1250271963543843501
 GameObject:
   m_ObjectHideFlags: 0
@@ -206,6 +302,7 @@ RectTransform:
   m_Children:
   - {fileID: 1490023618661034890}
   - {fileID: 8982683736172860906}
+  - {fileID: 6714084997552880040}
   m_Father: {fileID: 8541278423340140544}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -504,3 +601,5 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: f9486d1d8655b1c42a3f3d70d5313b3b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  bInfraredGuider: 0
+  infraredGuiderTime: 10

+ 40 - 0
Assets/BowArrow/Scripts/Bluetooth/AimHandler.cs

@@ -80,6 +80,24 @@ public class AimDeviceInfos
     public bool bInitOne = false;
 
 
+    public OnCrossBtnEventEvent OnCrossBtnEvent;
+    public delegate void OnCrossBtnEventEvent();
+    /// <summary>
+    /// 准心事件
+    /// </summary>
+    public void InvokeOnCrossBtnEvent()
+    {
+        try
+        {
+            OnCrossBtnEvent?.Invoke();
+        }
+        catch (Exception e)
+        {
+            Debug.LogError(e);
+        }
+    }
+
+
     void Start()
     {
         ins = this;
@@ -268,6 +286,9 @@ public class AimDeviceInfos
     }
     [NonSerialized] public bool lerpForRotation = true;
     [NonSerialized] public float lerpTimeRate = 7;
+
+    //加一个枪射击的触发时间
+    float _lastShootTime = 0;
     public void Update()
     {
         //&& !InfraredDemo.running
@@ -338,6 +359,11 @@ public class AimDeviceInfos
                                 DoIdentity();
                                 //鼠标居中自然会居中
                             }
+                            //流程触发红外描点
+                            InfraredScreenPositioningView infraredScreenPositioningView = FindAnyObjectByType<InfraredScreenPositioningView>();
+                            if (infraredScreenPositioningView) { 
+                                InvokeOnCrossBtnEvent();
+                            }
                         }
                         else
                         {
@@ -389,6 +415,18 @@ public class AimDeviceInfos
             }
             else if (bytes[0] == 0x5b)
             {
+                if (GlobalData.MyDeviceMode == DeviceMode.Gun) {
+
+                    if (Time.realtimeSinceStartup - _lastShootTime < 1) return;
+                    _lastShootTime = Time.realtimeSinceStartup;
+                    //流程触发红外描点
+                    InfraredScreenPositioningView infraredScreenPositioningView = FindAnyObjectByType<InfraredScreenPositioningView>();
+                    if (infraredScreenPositioningView)
+                    {
+                        InvokeOnCrossBtnEvent();
+                    }
+                }
+
                 //红外射击检测
                 ShootCheck.ins.ShootByInfrared(bytes);
             }
@@ -517,6 +555,8 @@ public class AimDeviceInfos
     {
         Debug.Log("CrossBtnEvent");
         //准心开关
+        InvokeOnCrossBtnEvent();
+
         if (GameAssistUI.ins)
         {
             InfraredGuider infraredGuider = FindAnyObjectByType<InfraredGuider>();

+ 1 - 1
Assets/BowArrow/Scripts/CommonConfig.cs

@@ -105,7 +105,7 @@ public class CommonConfig
     /// 暂时Pc开启验证
     /// </summary>
 #if UNITY_STANDALONE_WIN || UNITY_EDITOR
-    public static bool EnableDecryption = true;
+    public static bool EnableDecryption = false;
 #else
     public static bool EnableDecryption = false;
 #endif

+ 27 - 9
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json

@@ -127,6 +127,7 @@
   "new-user-guider_tip_视角归位-触发": "短按模块上的<color=#FFA500>“视角归位”</color>键,<color=#FFA500>参考图中\n姿势将弓箭瞄准靶心</color>,3秒后完成视角归位。",
   "new-user-guider_tip_视角归位-瞄准": "请参考图中姿势,立即瞄准靶心,\n<size=40><color=#FFA500>{0}</color></size>秒后完成视角归位。",
   "new-user-guider_tip_视角归位-瞄准-infrared": "请参考图中姿势,以箭筒头部为参考点,\n立即瞄准靶心,<size=40><color=#FFA500>{0}</color></size>秒后完成准心校准。",
+  "new-user-guider_tip_视角归位-瞄准-infrared-gun": "请快速装回弹夹后,用三点一线的射击姿势\n瞄准靶心,<size=40><color=#FFA500>{0}</color></size>秒后完成准心校准。",
   "new-user-guider_tip_教程结束": "恭喜您完成了本次新手教程,下次如果还\n要<color=#FFA500>了解本教程</color>,请在<color=#FFA500>设置中查看新手指导</color>。",
   "new-user-guider_tip_准心高亮": "请按提示向箭靶上射中一箭后,\n完成本次手动设置,并回到连接页面。",
   "new-user-guider_btn_ok": "确定",
@@ -406,6 +407,7 @@
   "Disconnect_Btn": "断开连接",
   "Add_2P": "增加 2P",
   "Device_Switch": "切换设备",
+  "Connect_Tip": "请先连接设备。",
 
   /**
   ConnectGuidanceView 页面
@@ -528,25 +530,38 @@
   "Infrared-ScreenPositioning": "进入屏幕定位",
   "Infrared-Step1": "先进行投屏,并将激光定位器放置于电视前方,使摄像头上仰朝向屏幕。",
   "Infrared-Step2_title": "屏幕定位说明",
-  "Infrared-Step2": "调整激光定位器位置和角度,使其可以清晰地拍摄到屏幕的四角。\n\n先点击自动按键进行屏幕识别,屏幕上会出现黑屏和白屏的图像,并通过软件识别屏幕的显示区域。\n\n如自动识别不准确,可以通过调整激光定位器位置或对图像对比度进行调节后,再次自动识别。如多次自动识别不合格,可点击手动功能,并通过手指点击拖动定位区域四个角进行调整。",
-
-
+  "Infrared-Step2": "",
+  "Infrared-new-Step1": "1.请将手机画面投射到电视或投影仪上。(建议使用投屏器)",
+  "Infrared-new-Step2": "2.请将激光定位器放在电视前下方,确保其底部低于电视屏幕。",
+  "Infrared-new-Step3": "3.避免强光或阳光直射电视/投影屏幕和激光定位器。",
   /**
   手动识别部分
   **/
-  "TitleTip1": "请调整激光定位器位置,让屏幕尽可能的充满整个方框,并避免强光/太阳光照射在屏幕上;\n点击自动按键进行屏幕识别,可多次自动识别,直到四个红点与屏幕显示区域接近;",
+  "TitleTip1": "调整激光定位器的角度,\n使摄像头拍摄到的整个电视屏幕并位于梯形识别框内。",
   "TitleTip2": "如自动识别不准确,可调整激光定位器或调整图像对比度,使屏幕\n边缘更清晰后,再次自动识别;\n如多次自动识别不成功,可点击手动功能,并用手指拖动定位区域\n四个角进行调整,点击确认进入下一步。",
   "Withdrawal": "撤回",
   "Automatic": "自动",
   "Manual": "手动",
   "Confirm": "确认",
+  "Finish": "完成",
   "Reset": "重置",
+  "EnterMarker": "进入屏幕标记",
+  "TitleTipMarker": "使用{0}瞄准模块手枪的红外激光瞄准屏幕的四个角,\n并单击准心键确认标记。待四个角都标记完成后,点击完成进入下一步",
+  "ScreenPositioningSuccessful-title": "屏幕定位成功,请选择最佳方案",
+  "FirstResult": "结果一",
+  "SecondResult": "结果二",
+  "FirstLineTip": "提示:这是根据AI自动识别出来的结果一",
+  "SecondLineTip": "提示:这是根据手动标签半自动识别出来的结果二",
+  "FittingFailed": "拟合失败,继续点击完成.",
+  "Incomplete": "请完成屏幕四个角的标记后,再点击完成进入下一步",
   /**
    红外连接后游戏射击页面
   **/
   "TopTip_CrossHair": "单击模块上的 <sprite=0> 按键,这是进入准心调整界面的开/关,\n请连续操作两次。",
-  "TopTip_CrossHairGun": "单击设备上的按键,这是进入准心调整界面的开/关,\n请连续操作两次。",
+  "TopTip_CrossHairPro": "单击设备上的按键,这是进入准心调整界面的开/关,\n请连续操作两次。",
+  "TopTip_CrossHairGunPro": "取出弹夹模块,单击其上的按键,这是进入准心\n调整界面的开/关,请连接操作两次。",
   "TopTip_ARTEMISPro": " 双击设备上的按键进行准心校准,之后请用正常的拉弓姿势,\n以箭筒头部为参考点瞄准靶心,10秒后完成准心校准。",
+  "TopTip_GunPro": "取出弹夹模块,双击其上的按键进行准心校准,快速装回弹夹后,\n用三点一线的射击姿势瞄准靶心,10秒后完成准心校准。",
   "TopTip": " 长按模块上的按键 <sprite=0> 3秒进行准心校准,之后请用正常的拉弓姿势,以箭筒头部为参考点瞄准靶心,10秒后完成准心校准",
   "TopTip2": "准心已校准,请射中靶子后,自动退出界面。",
   "LeftTitle": "异常问题检测",
@@ -555,14 +570,15 @@
   "ExitGuidance": "退出引导",
   "ResolutionSettings": "分辨率设置",
   "AmbientMetering": "环境测光",
-  "ImageBrightness": "图像亮度",
+  "ImageBrightness": "图片亮度",
+  "BrightnessOrContracts": "亮度和对比度",
   "CameraSensitivity": "相机感光度",
   "AbnormalIssues": "异常问题处理",
 
   "ErrorStepTip": "请移动弓箭控制准心,使其移动到四个圆点。\n当准心无法移动到四个圆点时,请点击“异常问题处理”。",
-  "ErrorTip1": "如发现光标移动时有延时的现象,请调整分辨率或更换性能更好的手机后,再重新进行测试",
-  "ErrorTip2": "如发现光标会随机闪烁不同的位置,或无法移动时,请点击环境测光寻找干扰源,并屏蔽干扰源。",
-  "ErrorTip3": "如发现光标不顺滑,或光标的移动范围不够大,请调整图像亮度",
+  "ErrorTip1": "1.\n如发现光标移动时有延时的现象,请调整分辨率或更换性能更好的手机后,再重新进行测试",
+  "ErrorTip2": "2.\n如发现光标会随机闪烁不同的位置,或无法移动时,请点击环境测光寻找干扰源,并屏蔽干扰源。",
+  "ErrorTip3": "3.\n如发现光标不顺滑,或光标的移动范围不够大,请调整图像亮度或对比度。",
   /**
    红外连接后游戏测试页面
   **/
@@ -577,6 +593,8 @@
 
   "Bright": "亮",
   "Dark": "暗",
+  "Brightness": "亮度",
+  "Contrast": "对比度",
   /**
    子弹部分
   **/

+ 27 - 7
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json

@@ -128,6 +128,8 @@
   "new-user-guider_tip_视角归位-触发": "Short press the <color=#FFA500>\"Aim Reset\"</color> \nkey on the module, <color=#FFA500>aim the bow \nand arrow at the bull's eye with \nreference to the posture in the \npicture</color>, and then complete the \nvisual angle return in 3 seconds.",
   "new-user-guider_tip_视角归位-瞄准": "Please refer to the pose in the figure, aim \nat the bull's-eye immediately, the visual \nangle return will be completed in <size=40><color=#FFA500>{0}</color></size> seconds.",
   "new-user-guider_tip_视角归位-瞄准-infrared": "Please refer to the posture in the image, using the arrowhead \nas a reference point,and aim at the target center immediately.\n<size=40><color=#FFA500>{0}</color></size> seconds later, the crosshair calibration will be completed.",
+  "new-user-guider_tip_视角归位-瞄准-infrared-gun": "Please quickly reload the magazine, then use the sight alignment\n shooting stance (three-point alignment) to aim at the bullseye. \nThe reticle calibration will be completed in <size=40><color=#FFA500>{0}</color></size> seconds.",
+
   "new-user-guider_tip_教程结束": "Congratulations on completing this novice tutorial. If you want \nto <color=#FFA500>know this tutorial</color> next time, please <color=#FFA500>see the novice guidance \nin the setup.</color>",
   "new-user-guider_tip_准心高亮": "Please follow the prompts to \nshoot an arrow towards the \ntarget, complete the manual \nsetup, and return to the \nconnection page.",
   "new-user-guider_btn_ok": "OK",
@@ -453,6 +455,7 @@
   "Disconnect_Btn": "Disconnect",
   "Add_2P": "Add 2P",
   "Device_Switch": "Switch Device",
+  "Connect_Tip": "Please connect the device first.",
   /**
   ConnectGuidanceView 页面
   **/
@@ -576,25 +579,39 @@
   "Infrared-ScreenPositioning": "Enter Screen Positioning",
   "Infrared-Step1": "First, cast the screen and place the laser locator in front of the TV, with the camera facing upwards towards the screen.",
   "Infrared-Step2_title": "Screen Positioning Instructions",
-  "Infrared-Step2": "Adjust the position and angle of the laser locator so that it can clearly capture the four corners of the screen.\n\nFirst, click the auto button to perform screen recognition. The screen will display black and white images, and the software will identify the display area of the screen.\n\nIf automatic recognition is inaccurate, you can adjust the position of the laser locator or the image contrast, then try automatic recognition again. If multiple attempts at automatic recognition fail, you can click the manual function and use your finger to click and drag the four corners of the positioning area to adjust.",
-
+  "Infrared-Step2": "",
+  "Infrared-new-Step1": "1. Please cast the phone screen to the TV or projector. (It is recommended to use a screen mirroring device).",
+  "Infrared-new-Step2": "2. Please place the laser pointer in front of the TV, ensuring its base is lower than the TV screen.",
+  "Infrared-new-Step3": "3. Avoid direct exposure of strong light or sunlight to the TV/projector screen and the laser pointer.",
 
   /**
   手动识别部分
   **/
-  "TitleTip1": "Please adjust the position of the laser locator to fill the entire box as \nmuch as possible and avoid strong light/sunlight shining on the screen; \nClick the auto button to perform screen recognition, which can be automatically \nrecognized multiple times until the four red dots are close to the screen display area;",
+  "TitleTip1": "Adjust the angle of the laser locator so that the entire TV screen \nis captured by the camera and is within the trapezoidal recognition frame.",
   "TitleTip2": "If the automatic recognition is not accurate, you can adjust the laser locator or adjust the \nimage contrast to make the screen edge clearer and then automatically recognize it again; \n If automatic recognition fails multiple times, click the manual function and drag the four \ncorners of the positioning area with your finger to adjust. Click OK to proceed to the next step. ",
   "Withdrawal": "Withdrawal",
   "Automatic": "Automatic",
   "Manual": "Manual",
   "Confirm": "Confirm",
+  "Finish": "Finish",
   "Reset": "Reset",
+  "EnterMarker": "Enter Screen Marker",
+  "TitleTipMarker": "Use the infrared laser of the {0} aiming module pistol to aim at the four corners of the screen, \nand click the reticle button to confirm each mark. Once all four corners are marked, click 'Finish' to proceed to the next step.",
+  "ScreenPositioningSuccessful-title": "Screen positioning successful, please choose the best solution",
+  "FirstResult": "First Result",
+  "SecondResult": "Second Result",
+  "FirstLineTip": "Tip: This is the result automatically recognized by AI",
+  "SecondLineTip": "Tip: This is the result of semi-automatic recognition based on manual labeling",
+  "FittingFailed": "Fitting failed, continue clicking to complete.",
+  "Incomplete": "Please mark the four corners of the screen before clicking 'Finish' to proceed to the next step",
   /**
    红外连接后游戏射击页面
   **/
   "TopTip_CrossHair": "Click the <sprite=0> button on the module to enter the center adjustment \n interface. Please operate it twice in a row.",
-  "TopTip_CrossHairGun": "Click the button on the device. This toggles the crosshair adjustment interface on/off.\nPlease perform this action twice in a row.",
+  "TopTip_CrossHairPro": "Click the button on the device. This toggles the crosshair adjustment interface on/off.\nPlease perform this action twice in a row.",
+  "TopTip_CrossHairGunPro": "Remove the magazine module and click the button on it. This is the on/off button to enter the alignment adjustment interface. Please connect the operation twice",
   "TopTip_ARTEMISPro": "Double click the button on the device to calibrate the center of gravity.\nThen, use the normal bow position and aim at the target with the arrow head \nas the reference point. After 10 seconds, complete the center of gravity calibration.",
+  "TopTip_GunPro": "Remove the magazine module, double-click the button on it to calibrate the center\n of sight, quickly reinstall the magazine, aim at the target with a three-point line\n shooting posture, and complete the center of sight calibration after 10 seconds.",
   "TopTip": "Press and hold the button<sprite=0>on the module for 3 seconds to calibrate the center of sight. Then, use the normal bow position and aim at the target with the head of the arrow tube as the reference point. After 10 seconds, complete the center of sight calibration",
   "TopTip2": "Accurate heart calibration, please hit the target and automatically exit the interface.",
   "LeftTitle": "Abnormal Problem Detection",
@@ -604,13 +621,14 @@
   "ResolutionSettings": "Resolution Settings",
   "AmbientMetering": "Ambient Metering",
   "ImageBrightness": "Image Brightness",
+  "BrightnessOrContracts": "Brightness Or Contrast",
   "CameraSensitivity": "Camera Sensitivity",
   "AbnormalIssues": "Abnormal Issues",
 
   "ErrorStepTip": "Please move the bow and arrow control center to the four dots.\nWhen the center cannot move to the four dots, please click on 'Exception Handling'.",
-  "ErrorTip1": "If there is a delay when the cursor moves, please adjust the resolution or replace it with a better performing phone before retesting;",
-  "ErrorTip2": "If you find that the cursor randomly flashes at different positions or cannot move, please click on the ambient metering to find the interference source and block it.",
-  "ErrorTip3": "If you find that the cursor is not smooth or the movement range of the cursor is not large enough, please adjust the brightness of the image;",
+  "ErrorTip1": "1.\nIf there is a delay when the cursor moves, please adjust the resolution or replace it with a better performing phone before retesting.",
+  "ErrorTip2": "2.\nIf you find that the cursor randomly flashes at different positions or cannot move, please click on the ambient metering to find the interference source and block it.",
+  "ErrorTip3": "3.\nIf you find that the cursor is not smooth or the movement range of the cursor is not large enough, please adjust the brightness or contrast of the image.",
 
 
   /**
@@ -627,6 +645,8 @@
 
   "Bright": "Bright",
   "Dark": "Dark",
+  "Brightness": "Brightness",
+  "Contrast": "Contrast",
   /**
    子弹部分
   **/

+ 13 - 4
Assets/BowArrow/Scripts/Expand/AutoResetView.cs

@@ -62,7 +62,7 @@ public class AutoResetView : MonoBehaviour
 
       AutoResetView autoResetView =  Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView")).GetComponent<AutoResetView>();
       autoResetView.bInfraredGuider = true;
-      autoResetView.infraredGuiderTime = 10;
+      autoResetView.infraredGuiderTime = GlobalData.MyDeviceMode == DeviceMode.Gun ? 5 : 10;
     }
 
     /// <summary>
@@ -165,9 +165,18 @@ public class AutoResetView : MonoBehaviour
                 _guideTip = text.GetComponentInChildren<TextAutoLanguage2>();
             }
             else {
-                Transform textInfrared = transform.Find("FrameTip/Text-Infrared");
-                textInfrared.gameObject.SetActive(true);
-                _guideTip = textInfrared.GetComponentInChildren<TextAutoLanguage2>();
+                if (GlobalData.MyDeviceMode == DeviceMode.Gun)
+                {
+                    Transform textInfrared = transform.Find("FrameTip/Text-Infrared-Gun");
+                    textInfrared.gameObject.SetActive(true);
+                    _guideTip = textInfrared.GetComponentInChildren<TextAutoLanguage2>();
+                }
+                else {
+                    Transform textInfrared = transform.Find("FrameTip/Text-Infrared");
+                    textInfrared.gameObject.SetActive(true);
+                    _guideTip = textInfrared.GetComponentInChildren<TextAutoLanguage2>();
+                }
+             
             }
              
         }

+ 8 - 6
Assets/BowArrow/Scripts/Game/CrossHair.cs

@@ -42,14 +42,16 @@ public class CrossHair : MonoBehaviour
     void Update()
     {
         //如果是新手指引的情况,或者校准时候,一定
-        //if (infraredGuiderObj != null && infraredGuiderObj.activeSelf == true || AutoResetView.ins != null)
-        //{
-        //    SetVisiable(true);
-        //}
-        //else {
+        //infraredGuiderObj != null && infraredGuiderObj.activeSelf == true || 
+        //准心校准时候延迟一秒
+        if (AutoResetView.ins != null)
+        {
+            SetVisiable(true);
+        }
+        else {
             //按照条件显示图标
             if (open) SetVisiable(onlyShow && ArmBow.ins && ArmBow.ins.IsCanShoot());
-        //}
+        }
     }
 
     void SetVisiable(bool value)

+ 17 - 5
Assets/BowArrow/Scripts/View/Home/DeviceViewInfrared.cs

@@ -291,8 +291,15 @@ public class DeviceViewInfrared : JCUnityLib.ViewBase, MenuBackInterface
             switch (index)
             {
                 case 0:
-                    //进入屏幕定位
-                    ViewManager2.ShowView(ViewManager2.Path_InfraredView);
+                    if (selectDeviceViewItem.getBLEConnectState())
+                    {
+                        //进入屏幕定位
+                        ViewManager2.ShowView(ViewManager2.Path_InfraredView);
+                    }
+                    else {
+                        PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("Connect_Tip"));
+                    }
+                  
                     break;
                 case 1:
                     //连接设备
@@ -329,6 +336,10 @@ public class DeviceViewInfrared : JCUnityLib.ViewBase, MenuBackInterface
                     {
 
                         ShowDeviceViewItemsTwo(true);
+
+                        //重置一些按钮状态和参数
+                        OnChangeSmartConnect1Button(-1);
+                        OnChangeSmartConnect2Button(-1);
                     }
                     break;
                 case 4:
@@ -338,6 +349,10 @@ public class DeviceViewInfrared : JCUnityLib.ViewBase, MenuBackInterface
                         selectDeviceViewItem.OnDisConnectedEvent();
                     }
                     bSwitchDevice = true;
+
+                    //重置一些按钮状态和参数
+                    OnChangeSmartConnect1Button(-1);
+                    OnChangeSmartConnect2Button(-1);
                     break;
 
             }
@@ -409,9 +424,6 @@ public class DeviceViewInfrared : JCUnityLib.ViewBase, MenuBackInterface
     /// </summary>
     public void OnCloseAllPanelStatus() {
 
-        //重置一些按钮状态和参数
-        OnChangeSmartConnect1Button(-1);
-        OnChangeSmartConnect2Button(-1);
         bSwitchDevice = false;
         for (int i = 0; i < deviceViewItems.Count; i++)
         {

+ 1 - 1
Assets/BowArrow/Scripts/View/Home/HomeView_ChallengeOption.cs

@@ -35,7 +35,7 @@ public class HomeView_ChallengeOption : MonoBehaviour
     public List<LevelInfo> levelInfos;
     List<LevelInfo> _tempLevelInfos = new List<LevelInfo>();
     //弓箭游戏列表
-    List<string> gameTextIds = new List<string> { "OlynpicArchery", "WolfHunt", "LevelWildAttack", "FruitExpert", "LevelDuckHunter", "HareHunt", "PheasuntHunt" , "MovingTarget" };
+    List<string> gameTextIds = new List<string> { "OlynpicArchery", "WolfHunt", "LevelWildAttack", "FruitExpert", "LevelDuckHunter", "HareHunt", "PheasuntHunt"};
     //切换枪械情况下切换这个游戏列表
     //OlynpicArcheryGun 是射击版的OlynpicArchery
     List<string> gameTextIds_gun = new List<string> { "OlynpicArcheryGun", "FruitExpert", "LevelDuckHunter", "MovingTarget" };

+ 2 - 1
Assets/Game_Hyperspace/Script/GeneratingTarget.cs

@@ -203,7 +203,6 @@ public class GeneratingTarget : MonoBehaviour
     public void OnBtnLast()
     {
         //Restart(Index - 1);
-        gm = null;
 
         onUploadScore();
         ////结束游戏页面
@@ -214,6 +213,7 @@ public class GeneratingTarget : MonoBehaviour
         //结束游戏页面
         userGameAnalyse1.showResultView(() =>
         {
+            gm = null;
             SceneManager.LoadScene("Home", LoadSceneMode.Single);
         });
     }
@@ -572,6 +572,7 @@ public class GeneratingTarget : MonoBehaviour
         var percent = (float)score / (float)maxScore * 100f;
         Debug.Log($"得分比例:{percent}  score={score}  maxScore={maxScore}");
         var index = Mathf.CeilToInt(percent / 10) - 1;
+        if (index < 0) index = 0;
         grade.sprite = ScoreLevel[index];
     }
 

+ 2 - 1
Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs

@@ -333,9 +333,10 @@ namespace InfraredManager
         public delegate void OnUVCPosUpdateEvent(List<Vector2> list);
         public void InvokeOnUVCPosUpdate(List<Vector2> list)
         {
+            OnUVCPosUpdate?.Invoke(list);
             try
             {
-                OnUVCPosUpdate?.Invoke(list);
+             
             }
             catch (Exception e)
             {

+ 20 - 9
Assets/InfraredProject/InfraredCamera/Scripts/ScreenLocate.cs

@@ -37,15 +37,26 @@ public partial class ScreenLocate : MonoBehaviour
         {
             var size = getUVCCameraInfoSize;
             Debug.Log("QuitScreenLocateManual Size:" + size);
-            screenIdentification?.SetScreenQuad(
-                new QuadrilateralInCamera(
-                    new o0.Geometry2D.Float.Vector(points[0].x * size.x, points[0].y * size.y),
-                    new o0.Geometry2D.Float.Vector(points[1].x * size.x, points[1].y * size.y),
-                    new o0.Geometry2D.Float.Vector(points[3].x * size.x, points[3].y * size.y),
-                    new o0.Geometry2D.Float.Vector(points[2].x * size.x, points[2].y * size.y),
-                    size.o0Vector()
-                )
-            );
+            var quad = new QuadrilateralInCamera(
+              new o0.Geometry2D.Float.Vector(points[0].x * size.x, points[0].y * size.y),
+              new o0.Geometry2D.Float.Vector(points[1].x * size.x, points[1].y * size.y),
+              new o0.Geometry2D.Float.Vector(points[3].x * size.x, points[3].y * size.y),
+              new o0.Geometry2D.Float.Vector(points[2].x * size.x, points[2].y * size.y),
+              size.o0Vector());
+
+            //screenIdentification?.SetScreenQuad(quad);
+            screenIdentification.QuadManual = quad;
+            Debug.Log("<color=aqua>[ScreenLocate] 记录手动数据</color>");
+
+            //screenIdentification?.SetScreenQuad(
+            //    new QuadrilateralInCamera(
+            //        new o0.Geometry2D.Float.Vector(points[0].x * size.x, points[0].y * size.y),
+            //        new o0.Geometry2D.Float.Vector(points[1].x * size.x, points[1].y * size.y),
+            //        new o0.Geometry2D.Float.Vector(points[3].x * size.x, points[3].y * size.y),
+            //        new o0.Geometry2D.Float.Vector(points[2].x * size.x, points[2].y * size.y),
+            //        size.o0Vector()
+            //    )
+            //);
         }
         ToMode(Mode.InfraredLocate);
     }

+ 2 - 0
Assets/InfraredProject/WebCamera/Script/ZIM/InfraredLocate/ScreenIdentification.cs

@@ -312,6 +312,8 @@ namespace o0.Project
                 if (quadTemp.Count != LocateAreaData[0].Length)
                 {
                     Debug.Log($"<color=yellow>[ScreenIdentification] 拟合四边形失败, quadTemp.Count: {quadTemp.Count}</color>");
+
+                    PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("FittingFailed"));
                 }
                 else if (quadTemp.Count == 1)
                 {

+ 3 - 1
Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs

@@ -513,7 +513,7 @@ public partial class ScreenLocate : MonoBehaviour
                             CrosshairInCamera[i].gameObject.SetActive(false);
                     }
                 }
-                else if(mode == Mode.InfraredLocate)
+                else if (mode == Mode.InfraredLocate)
                 {
                     if (mPlatform == Platform.Window) //渲染ui上面的点。进入游戏可以隐藏
                     {
@@ -630,6 +630,8 @@ public partial class ScreenLocate : MonoBehaviour
                         ToMode(Mode.InfraredLocate);
                 }
             }
+
+
         }
 
         //var t1 = Time.realtimeSinceStartup;

Plik diff jest za duży
+ 4134 - 137
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab


+ 1265 - 45
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredView.prefab

@@ -1,5 +1,125 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
+--- !u!1 &501852795612752706
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8243695795160698176}
+  - component: {fileID: 2570255970790985724}
+  - component: {fileID: 4724567438371117362}
+  - component: {fileID: 5890308980760972331}
+  - component: {fileID: 440716929173766414}
+  m_Layer: 5
+  m_Name: LayoutNew
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8243695795160698176
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 501852795612752706}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1.1, y: 1.1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 2308936127951025938}
+  - {fileID: 5970601727786126174}
+  m_Father: {fileID: 5651314242315564806}
+  m_RootOrder: 4
+  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: -45.3}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2570255970790985724
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 501852795612752706}
+  m_CullTransparentMesh: 1
+--- !u!114 &4724567438371117362
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 501852795612752706}
+  m_Enabled: 0
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0, b: 0, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 0
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5890308980760972331
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 501852795612752706}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 2
+  m_VerticalFit: 2
+--- !u!114 &440716929173766414
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 501852795612752706}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 4
+  m_Spacing: 28.06
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
 --- !u!1 &575528124666787529
 GameObject:
   m_ObjectHideFlags: 0
@@ -176,6 +296,71 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_HorizontalFit: 2
   m_VerticalFit: 0
+--- !u!1 &1321508859510665533
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5985813188969858843}
+  - component: {fileID: 3574952487640376463}
+  m_Layer: 5
+  m_Name: Step2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5985813188969858843
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1321508859510665533}
+  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: 692995073752026809}
+  - {fileID: 1064385139456588459}
+  m_Father: {fileID: 2308936127951025938}
+  m_RootOrder: 1
+  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: 600, y: 577}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &3574952487640376463
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1321508859510665533}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 40
+    m_Bottom: 0
+  m_ChildAlignment: 1
+  m_Spacing: 55
+  m_ChildForceExpandWidth: 0
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
 --- !u!1 &1649684191743700132
 GameObject:
   m_ObjectHideFlags: 0
@@ -365,10 +550,10 @@ RectTransform:
   m_Father: {fileID: 8667101709888347439}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 50}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 221, y: -48}
+  m_SizeDelta: {x: 210, y: 50}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4606656822727440275
 CanvasRenderer:
@@ -427,6 +612,82 @@ MonoBehaviour:
   textKey: Infrared-ScreenPositioning
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
+--- !u!1 &2116339197098465228
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1064385139456588459}
+  - component: {fileID: 8489261820599105447}
+  - component: {fileID: 8312890226025167807}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1064385139456588459
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2116339197098465228}
+  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: 5985813188969858843}
+  m_RootOrder: 1
+  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: 340, y: 340}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8489261820599105447
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2116339197098465228}
+  m_CullTransparentMesh: 1
+--- !u!114 &8312890226025167807
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2116339197098465228}
+  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: 3f653287232655a40aa44dc32ece2493, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &2397657128313122477
 GameObject:
   m_ObjectHideFlags: 0
@@ -740,7 +1001,7 @@ MonoBehaviour:
   textKey: Infrared-Step2_title
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
---- !u!1 &4462516361251967786
+--- !u!1 &2879049942373836280
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -748,10 +1009,10 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 874449494229229832}
-  - component: {fileID: 6375373790729743113}
-  - component: {fileID: 2533992382179310633}
-  - component: {fileID: 5493287035359193497}
+  - component: {fileID: 1680132261831782415}
+  - component: {fileID: 8565133772279217679}
+  - component: {fileID: 3571933668002363594}
+  - component: {fileID: 2267461727794046602}
   m_Layer: 5
   m_Name: TextTip
   m_TagString: Untagged
@@ -759,41 +1020,41 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &874449494229229832
+--- !u!224 &1680132261831782415
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4462516361251967786}
+  m_GameObject: {fileID: 2879049942373836280}
   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: 3882567027035919631}
+  m_Father: {fileID: 8458672436502193875}
   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: 181.05634, y: 0}
-  m_SizeDelta: {x: 698.1127, y: 411}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &6375373790729743113
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 520.6791, y: 100}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &8565133772279217679
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4462516361251967786}
+  m_GameObject: {fileID: 2879049942373836280}
   m_CullTransparentMesh: 1
---- !u!114 &2533992382179310633
+--- !u!114 &3571933668002363594
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4462516361251967786}
+  m_GameObject: {fileID: 2879049942373836280}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -810,28 +1071,268 @@ MonoBehaviour:
   m_FontData:
     m_Font: {fileID: 12800000, guid: 6b6cc7ab59ef00947950b61fdca2d042, type: 3}
     m_FontSize: 30
-    m_FontStyle: 0
+    m_FontStyle: 1
     m_BestFit: 0
     m_MinSize: 0
-    m_MaxSize: 40
+    m_MaxSize: 300
     m_Alignment: 0
     m_AlignByGeometry: 0
     m_RichText: 1
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 1
-    m_LineSpacing: 1
-  m_Text: 'Adjust the position and angle of the laser locator so that it can clearly
-    capture the four corners of the screen.
-
-
-    First, click the auto button to
-    perform screen recognition. The screen will display black and white images, and
-    the software will identify the display area of the screen.
-
-
-    If automatic
-    recognition is inaccurate, you can adjust the position of the laser locator or
-    the image contrast, then try automatic recognition again. If multiple attempts
+    m_LineSpacing: 1.3
+  m_Text: "3.\u907F\u514D\u5F3A\u5149\u6216\u9633\u5149\u76F4\u5C04\u7535\u89C6/\u6295\u5F71\u5C4F\u5E55\u548C\u6FC0\u5149\u5B9A\u4F4D\u5668\u3002"
+--- !u!114 &2267461727794046602
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2879049942373836280}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: Infrared-new-Step3
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes:
+  - language: 1
+    fontSize: 30
+    lineSpacing: 1
+--- !u!1 &3098482552670295346
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 608377056184975500}
+  - component: {fileID: 4100461672202028801}
+  m_Layer: 5
+  m_Name: Step1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &608377056184975500
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3098482552670295346}
+  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: 5066946515395748358}
+  - {fileID: 4895339997518694640}
+  m_Father: {fileID: 2308936127951025938}
+  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: 600, y: 577}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &4100461672202028801
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3098482552670295346}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 40
+    m_Bottom: 0
+  m_ChildAlignment: 1
+  m_Spacing: 55
+  m_ChildForceExpandWidth: 0
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!1 &3112874227056891033
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4919990173663887242}
+  - component: {fileID: 6165474265810188570}
+  - component: {fileID: 4851448726075617446}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4919990173663887242
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3112874227056891033}
+  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: 8458672436502193875}
+  m_RootOrder: 1
+  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: 464.5, y: 315.1}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6165474265810188570
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3112874227056891033}
+  m_CullTransparentMesh: 1
+--- !u!114 &4851448726075617446
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3112874227056891033}
+  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: 33d45aa3feb999242b100100c789c457, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &4462516361251967786
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 874449494229229832}
+  - component: {fileID: 6375373790729743113}
+  - component: {fileID: 2533992382179310633}
+  - component: {fileID: 5493287035359193497}
+  m_Layer: 5
+  m_Name: TextTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &874449494229229832
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4462516361251967786}
+  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: 3882567027035919631}
+  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: 181.05634, y: 0}
+  m_SizeDelta: {x: 698.1127, y: 411}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &6375373790729743113
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4462516361251967786}
+  m_CullTransparentMesh: 1
+--- !u!114 &2533992382179310633
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4462516361251967786}
+  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: 30
+    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: 1
+    m_LineSpacing: 1
+  m_Text: 'Adjust the position and angle of the laser locator so that it can clearly
+    capture the four corners of the screen.
+
+
+    First, click the auto button to
+    perform screen recognition. The screen will display black and white images, and
+    the software will identify the display area of the screen.
+
+
+    If automatic
+    recognition is inaccurate, you can adjust the position of the laser locator or
+    the image contrast, then try automatic recognition again. If multiple attempts
     at automatic recognition fail, you can click the manual function and use your
     finger to click and drag the four corners of the positioning area to adjust.'
 --- !u!114 &5493287035359193497
@@ -1064,6 +1565,7 @@ RectTransform:
   - {fileID: 5651314243503148123}
   - {fileID: 6541729197459587817}
   - {fileID: 6748997971718369909}
+  - {fileID: 8243695795160698176}
   - {fileID: 5651314242930350345}
   - {fileID: 5651314242594850861}
   m_Father: {fileID: 0}
@@ -1209,7 +1711,7 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0.96862745, g: 0.96862745, b: 0.96862745, a: 1}
+  m_Color: {r: 0.9843137, g: 0.9843137, b: 0.9843137, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
@@ -1357,7 +1859,7 @@ RectTransform:
   - {fileID: 5651314242670474731}
   - {fileID: 5651314242578082637}
   m_Father: {fileID: 5651314242315564806}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1589,7 +2091,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 5651314242315564806}
-  m_RootOrder: 4
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -1637,7 +2139,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: Connection Guidance
+  m_Text: "\u5C4F\u5E55\u5B9A\u4F4D\u8BF4\u660E"
 --- !u!114 &9128244148548196768
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -1672,7 +2174,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &5651314243503148123
 RectTransform:
   m_ObjectHideFlags: 0
@@ -1694,7 +2196,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
+  m_SizeDelta: {x: -1195, y: -424}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &5651314243503148127
 CanvasRenderer:
@@ -1808,9 +2310,9 @@ RectTransform:
   m_Father: {fileID: 5651314243503148123}
   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_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 668.5, y: -320}
   m_SizeDelta: {x: 1337, y: 640}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &5651314243550147655
@@ -2299,6 +2801,724 @@ MonoBehaviour:
   m_ChildScaleWidth: 0
   m_ChildScaleHeight: 0
   m_ReverseArrangement: 0
+--- !u!1 &6870138637923808552
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5970601727786126174}
+  - component: {fileID: 3037373131455025564}
+  - component: {fileID: 4239003422351939416}
+  - component: {fileID: 6601834508467563231}
+  - component: {fileID: 4814440174245184961}
+  - component: {fileID: 3610621832128552163}
+  m_Layer: 5
+  m_Name: BtnEnter (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5970601727786126174
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  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: 1641541838807930469}
+  m_Father: {fileID: 8243695795160698176}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 1006.465, y: -654.06}
+  m_SizeDelta: {x: 444, y: 96}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3037373131455025564
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  m_CullTransparentMesh: 1
+--- !u!114 &4239003422351939416
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  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: 106ef052c134649499407d03edb5eead, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &6601834508467563231
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  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: 4239003422351939416}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls:
+      - m_Target: {fileID: 8339594333699129169}
+        m_TargetAssemblyTypeName: InfraredGuidanceView, Assembly-CSharp
+        m_MethodName: OnClick_EnterScreenPositioningView
+        m_Mode: 1
+        m_Arguments:
+          m_ObjectArgument: {fileID: 0}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
+--- !u!114 &4814440174245184961
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 15
+    m_Right: 17
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 4
+  m_Spacing: 6
+  m_ChildForceExpandWidth: 0
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 1
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
+--- !u!114 &3610621832128552163
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6870138637923808552}
+  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!1 &6973978802059126568
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4895339997518694640}
+  - component: {fileID: 2510495429955821279}
+  - component: {fileID: 7385316112382687063}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4895339997518694640
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6973978802059126568}
+  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: 608377056184975500}
+  m_RootOrder: 1
+  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: 300, y: 300}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2510495429955821279
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6973978802059126568}
+  m_CullTransparentMesh: 1
+--- !u!114 &7385316112382687063
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6973978802059126568}
+  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: 3962e217faac0a949a1eb69ca41ca54e, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7418202991936134859
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 692995073752026809}
+  - component: {fileID: 7103712503449001981}
+  - component: {fileID: 8928738370318051839}
+  - component: {fileID: 1066904095077956172}
+  m_Layer: 5
+  m_Name: TextTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &692995073752026809
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7418202991936134859}
+  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: 5985813188969858843}
+  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: 520.6791, y: 100}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &7103712503449001981
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7418202991936134859}
+  m_CullTransparentMesh: 1
+--- !u!114 &8928738370318051839
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7418202991936134859}
+  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: 30
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 300
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1.3
+  m_Text: "2.\u8BF7\u5C06\u6FC0\u5149\u5B9A\u4F4D\u5668\u653E\u5728\u7535\u89C6\u524D\u4E0B\u65B9\uFF0C\u786E\u4FDD\u5176\u5E95\u90E8\u4F4E\u4E8E\u7535\u89C6\u5C4F\u5E55\u3002"
+--- !u!114 &1066904095077956172
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7418202991936134859}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: Infrared-new-Step2
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes:
+  - language: 1
+    fontSize: 30
+    lineSpacing: 1
+--- !u!1 &7591781620807447470
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5066946515395748358}
+  - component: {fileID: 4040050234294041767}
+  - component: {fileID: 4323476424532039282}
+  - component: {fileID: 1008901692133159581}
+  m_Layer: 5
+  m_Name: TextTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5066946515395748358
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7591781620807447470}
+  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: 608377056184975500}
+  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: 520.6791, y: 100}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!222 &4040050234294041767
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7591781620807447470}
+  m_CullTransparentMesh: 1
+--- !u!114 &4323476424532039282
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7591781620807447470}
+  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: 30
+    m_FontStyle: 1
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 300
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1.3
+  m_Text: 1. Please cast the phone screen to the TV or projector. (It is recommended
+    to use a screen mirroring device).
+--- !u!114 &1008901692133159581
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7591781620807447470}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: Infrared-new-Step1
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes:
+  - language: 1
+    fontSize: 30
+    lineSpacing: 1
+--- !u!1 &7693384622225824537
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1641541838807930469}
+  - component: {fileID: 2539862679995961611}
+  - component: {fileID: 4209974778277644631}
+  - component: {fileID: 4345287770060253375}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1641541838807930469
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7693384622225824537}
+  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: 5970601727786126174}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2539862679995961611
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7693384622225824537}
+  m_CullTransparentMesh: 0
+--- !u!114 &4209974778277644631
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7693384622225824537}
+  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: 35
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u8FDB\u5165\u5C4F\u5E55\u5B9A\u4F4D"
+--- !u!114 &4345287770060253375
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7693384622225824537}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: Infrared-ScreenPositioning
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
+--- !u!1 &7843788483479013877
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2308936127951025938}
+  - component: {fileID: 7644054724635316563}
+  - component: {fileID: 6817529352353233077}
+  - component: {fileID: 9159261030246870936}
+  m_Layer: 5
+  m_Name: Item0
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2308936127951025938
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7843788483479013877}
+  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: 608377056184975500}
+  - {fileID: 5985813188969858843}
+  - {fileID: 8458672436502193875}
+  m_Father: {fileID: 8243695795160698176}
+  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: 2012.93, y: 578}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7644054724635316563
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7843788483479013877}
+  m_CullTransparentMesh: 1
+--- !u!114 &6817529352353233077
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7843788483479013877}
+  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: a078e9363c2ddd84cb0c6c32e7355599, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &9159261030246870936
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7843788483479013877}
+  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 &8726777307050236018
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8458672436502193875}
+  - component: {fileID: 9028448675417149743}
+  m_Layer: 5
+  m_Name: Step3
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8458672436502193875
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8726777307050236018}
+  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: 1680132261831782415}
+  - {fileID: 4919990173663887242}
+  m_Father: {fileID: 2308936127951025938}
+  m_RootOrder: 2
+  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: 600, y: 577}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &9028448675417149743
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8726777307050236018}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Padding:
+    m_Left: 0
+    m_Right: 0
+    m_Top: 40
+    m_Bottom: 0
+  m_ChildAlignment: 1
+  m_Spacing: 55
+  m_ChildForceExpandWidth: 0
+  m_ChildForceExpandHeight: 0
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0
 --- !u!1 &8729490037243491096
 GameObject:
   m_ObjectHideFlags: 0

+ 9 - 9
Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredGuidanceView.cs

@@ -38,14 +38,14 @@ public class InfraredGuidanceView  : JCUnityLib.ViewBase
     public void OnClick_Back()
     {
         AudioMgr.ins.PlayBtn();
-
-        if (!layout1.activeSelf)
-        {
-            layout1.SetActive(true);
-            layout2.SetActive(false);
-        }
-        else {
-            ViewManager2.HideView(ViewManager2.Path_InfraredView);
-        }
+        ViewManager2.HideView(ViewManager2.Path_InfraredView);
+        //if (!layout1.activeSelf)
+        //{
+        //    layout1.SetActive(true);
+        //    layout2.SetActive(false);
+        //}
+        //else {
+        //    ViewManager2.HideView(ViewManager2.Path_InfraredView);
+        //}
     }
 }

+ 260 - 5
Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredScreenPositioningView.cs

@@ -73,8 +73,34 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
     [SerializeField] Color normalTextColor = Color.black;
     [SerializeField] Color highlightedTextColor = Color.white;
 
-    bool doLocateAuto;
 
+    [SerializeField] TextAutoLanguage2 markerTextAutoLanguage2;
+    [SerializeField]
+    GameObject LayoutStart;
+    [SerializeField]
+    GameObject LayoutMarker;
+    [SerializeField]
+    GameObject LayoutSuccessful;
+
+    [Tooltip("选择框的Line")]
+    [SerializeField]
+    Sprite[] ResultLines;// 0: 选中状态, 1: 未选中状态
+    [Tooltip("选择框图片")]
+    [SerializeField]
+    Image[] ResultImages;
+    [Tooltip("选择框按钮")]
+    [SerializeField]
+    Button[] ResultImagesButtons;
+    [SerializeField]
+    Button[] ResultButtons;    // 结果选择按钮
+    [SerializeField]
+    RawImage CameraFirstImage; //第一个结果屏幕
+    [SerializeField]
+    RawImage CameraSecondImage; //第二个结果屏幕
+    [SerializeField] LineGenerator FirstUILineGenerator;//第一个结果屏幕线条
+    [SerializeField] LineGenerator SecondUILineGenerator;//第二个结果屏幕线条
+
+    bool doLocateAuto;
     int DefaultResolutionIndex;
     private void Awake()
     {
@@ -90,6 +116,25 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
         //设置btnAuto 高亮
         OnButtonClick(btnAuto);
         textTip2.SetActive(false);
+
+        //动态设置marker的提示语
+        if (BluetoothAim.ins!=null && markerTextAutoLanguage2 != null)
+        {
+            string name = "";
+            if (BluetoothAim.ins.isMainConnectToARTEMISPRO())
+            {
+                name = "HOUYI Pro";
+            }
+            else if (BluetoothAim.ins.isMainConnectToARTEMISPRO())
+            {
+                name = "Artemis Pro";
+            }
+            else if (BluetoothAim.ins.isMainConnectToGun())
+            {
+                name = "M9 手枪";
+            }
+            markerTextAutoLanguage2.textFormatArgs = new object[] { name };
+        }
         //手动不高亮
         //ResetButton(btnHandMovement);
 
@@ -127,6 +172,9 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             //重置偏移量
             InfraredDemo._ins.ResetCenterOffset();
 
+            //重置识别点
+            ScreenLocate.Main.ScreenIdentification.ClearQuadCache();
+
             slider.onValueChanged.AddListener((value) =>
             {
                 InfraredDemo._ins.onSliderEvent(value);
@@ -169,7 +217,7 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
 
         }
 
-
+        initSelectInfo();
         //if (ScreenLocate.Main.getUVCTexture)
         //{
         //    //渲染相机画面
@@ -209,6 +257,10 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             }
             else
                 crosshair.gameObject.SetActive(false);
+
+            //渲染相机画面
+            CameraSecondImage.texture = rawImage.texture;
+            CameraFirstImage.texture = rawImage.texture;
         }
 
         else if (InfraredDemo.running)
@@ -216,8 +268,13 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             //渲染相机画面
             Texture texture = InfraredDemo.infraredCameraHelper.GetCameraTexture();
             if (rawImage.texture == null || texture.GetNativeTexturePtr() != rawImage.texture.GetNativeTexturePtr())
+            {
                 rawImage.texture = texture;
-
+                //渲染相机画面
+                CameraSecondImage.texture = rawImage.texture;
+                CameraFirstImage.texture = rawImage.texture;
+            }
+             
             //rawImage.material = InfraredDemo.infraredCameraHelper.GetCameraMaterial();
         }
     }
@@ -227,6 +284,13 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
         AudioMgr.ins.PlayBtn();
         ViewMgr.Instance.DestroyView<InfraredScreenPositioningView>();
     }
+    /// <summary>
+    /// 进入屏幕标记
+    /// </summary>
+    public void OnClick_EnterMarker() {
+        LayoutStart.SetActive(false);
+        LayoutMarker.SetActive(true);
+    }
 
     /// <summary>
     /// 自动识别
@@ -298,7 +362,39 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
                 t.anchoredPosition = screen.Quad[i].pixelToLocalPosition_AnchorCenter(screen.CameraSize, pointsParent.rect);
             }
         }
- 
+
+        //显示最后结果
+        LayoutMarker.SetActive(false);
+        LayoutSuccessful.SetActive(true);
+
+        //设置两个线段
+        QuadrilateralInCamera screenAuto = ScreenLocate.Main.ScreenIdentification.QuadAuto;
+        QuadrilateralInCamera screenSemiAuto = ScreenLocate.Main.ScreenIdentification.QuadSemiAuto;
+
+        var lo = new Vector2(-0.5f, -0.5f);
+        if (screenAuto != null)
+        {
+            FirstUILineGenerator.Points = new Vector2[4] {
+                2 * (new Vector2(screenAuto.Quad[0].x/screenAuto.CameraSize.x,screenAuto.Quad[0].y/screenAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenAuto.Quad[1].x/screenAuto.CameraSize.x,screenAuto.Quad[1].y/screenAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenAuto.Quad[3].x/screenAuto.CameraSize.x,screenAuto.Quad[3].y/screenAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenAuto.Quad[2].x/screenAuto.CameraSize.x,screenAuto.Quad[2].y/screenAuto.CameraSize.y) + lo) };
+        }
+        else {
+            Debug.LogError("screenAuto 不存在!");
+        }
+        if (screenSemiAuto != null)
+        {
+            SecondUILineGenerator.Points = new Vector2[4] {
+                2 * (new Vector2(screenSemiAuto.Quad[0].x/screenSemiAuto.CameraSize.x,screenSemiAuto.Quad[0].y/screenSemiAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenSemiAuto.Quad[1].x/screenSemiAuto.CameraSize.x,screenSemiAuto.Quad[1].y/screenSemiAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenSemiAuto.Quad[3].x/screenSemiAuto.CameraSize.x,screenSemiAuto.Quad[3].y/screenSemiAuto.CameraSize.y) + lo),
+                2 * (new Vector2(screenSemiAuto.Quad[2].x/screenSemiAuto.CameraSize.x,screenSemiAuto.Quad[2].y/screenSemiAuto.CameraSize.y) + lo) };
+        }
+        else {
+            Debug.LogError("screenSemiAuto 不存在!");
+        }
+      
     }
 
     #region 绘制线段部分
@@ -326,6 +422,7 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
         //再记录一次最后的点
         SetLinePos();
     }
+
     //同步设置图片对应的位置到line
     public void SetLinePos()
     {
@@ -511,6 +608,66 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             ScreenLocate.Main.UILineGenerator.Points = new Vector2[0];
         }
     }
+    /// <summary>
+    /// 标准四个点
+    /// </summary>
+    /// <param name="index"></param>
+    /// <param name="pos"></param>
+    public void onManualNewPos(int index, Vector3 pos)
+    {
+        Debug.Log("pos end: " + pos);
+        if (index == 0)
+            pos1.localPosition = pos;
+        else if (index == 1)
+            pos2.localPosition = pos;
+        else if (index == 2)
+            pos3.localPosition = pos;
+        else if (index == 3)
+            pos4.localPosition = pos;
+
+        //再记录一次最后的点
+        SetLinePos();
+    }
+    /// <summary>
+    ///  处理新流程,先记录手动,然后到自动识别处理
+    /// </summary>
+    public void onManualToAutomatic() {
+        if (enterFromZimWebCamera)
+        {
+            ConfirmScreenLocateManualTest();
+
+            if (oldLinePosition.Count > 1) // 确保列表不为空
+            {
+                LinePosition lastElement = oldLinePosition[oldLinePosition.Count - 1];
+                oldLinePosition.Clear();
+                oldLinePosition.Add(lastElement);
+            }
+
+            SaveLocalPos();
+            //到自动
+            OnClick_Auto();
+            return;
+        }
+
+        if (!ConfirmScreenLocateManual()) {
+            Debug.LogError("ConfirmScreenLocateManual is false!");
+            return;
+        }
+
+        if (oldLinePosition.Count > 1) // 确保列表不为空
+        {
+            LinePosition lastElement = oldLinePosition[oldLinePosition.Count - 1];
+            oldLinePosition.Clear();
+            oldLinePosition.Add(lastElement);
+        }
+        //存储一次节点
+        SaveLocalPos();
+
+        bAuto = true;
+        doLocateAuto = true;
+        //自动校准
+        InfraredDemo.infraredCameraHelper.EnterScreenLocateManualAuto();
+    }
 
     #endregion
 
@@ -553,7 +710,6 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
             InfraredDemo.infraredCameraHelper.QuitScreenLocateManual(_locatePointList);
             FindObjectOfType<InfraredDemo>().SetLocatePointsToCameraRender(_locatePointList, 1, 1);
 
-            //setPointsLocation(_locatePointList, pointsParent.gameObject, !bAuto);
 
             //同步数据
             ScreenLocate.quadUnityVectorList.Clear();
@@ -752,4 +908,103 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
         }
     }
     #endregion
+
+    #region 最后选择算法处理UI
+    void initSelectInfo() {
+        for (int i = 0; i < 2; i++)
+        {
+            int currentIndex = i;  // 将 i 赋值给局部变量
+
+            ResultImagesButtons[currentIndex].onClick.AddListener(() => SelectImage(currentIndex));
+
+            ResultButtons[currentIndex].onClick.AddListener(() =>
+            {
+                if (currentIndex == 0)
+                {
+                    OnFirstResult();
+                }
+                else if (currentIndex == 1)
+                {
+                    OnSecondResult();
+                }
+            });
+        }
+        //默认选择1 自动
+        SelectImage(0);
+    }
+    // 添加一个选择函数
+    void SelectImage(int selectedIndex)
+    {
+        // 遍历所有图片
+    
+        for (int i = 0; i < ResultImages.Length; i++)
+        {
+            // 如果是选中的 index,赋值为 ResultLines[0],否则赋值为 ResultLines[1]
+            if (i == selectedIndex)
+            {
+                ResultImages[i].sprite = ResultLines[0];
+                ResultButtons[i].interactable = true;
+            }
+            else
+            {
+                ResultImages[i].sprite = ResultLines[1];
+                ResultButtons[i].interactable = false;
+            }
+        }
+    }
+
+    //选择全自动结果后进入游戏
+    void OnFirstResult()
+    {
+        ScreenLocate.Main.SelectScreenAfterLocate(ScreenLocate.ScreenIdentificationTag.Auto);
+
+        onCompelete();
+    }
+
+    //选择半自动结果
+    void OnSecondResult()
+    {
+        ScreenLocate.Main.SelectScreenAfterLocate(ScreenLocate.ScreenIdentificationTag.SemiAuto);
+
+        onCompelete();
+    }
+
+    public void onCompelete()
+    {
+        if (enterFromZimWebCamera)
+        {
+            SaveLocalPos();
+            ViewManager2.HideView(ViewManager2.Path_InfraredScreenPositioningView);
+            return;
+        }
+        if (InfraredDemo.running)
+        {
+            //跳转入界面
+            AudioMgr.ins.PlayBtn();
+
+            if (!enterFromInfraredDemo)
+            {
+                //每次初始化重置一下引导
+                InfraredDemo._ins.resetInfraredPlayerPrefs();
+                //GameObject connectGuidanceView = ViewManager2.getGameObjectAndShowView(ViewManager2.Path_ConnectGuidanceView);
+                //connectGuidanceView.GetComponent<ConnectGuidanceView>().showTextipInfrared();
+
+                if (!PlayerPrefs.HasKey("hideInfraredBowAndArrow"))
+                {
+                    //如果是红外连接成功,记录一个tag
+                    PlayerPrefs.SetInt("hideInfraredBowAndArrow", 1);
+                }
+                onEnterInfrared();
+            }
+            else
+            {
+                ViewManager2.HideView(ViewManager2.Path_InfraredScreenPositioningView);
+            }
+
+        }
+        //存储一次节点
+        SaveLocalPos();
+    }
+
+    #endregion
 }

+ 169 - 0
Assets/SmartBow/Scripts/Views/InfraredViewParts/PointMarker.cs

@@ -0,0 +1,169 @@
+using UnityEngine;
+using UnityEngine.UI;
+using System.Collections.Generic;
+using System;
+using ZIM.Unity;
+using System.Linq;
+
+public class PointMarker : MonoBehaviour
+{
+    public Text instructionText; // 用于显示提示文字
+    public Button undoButton;    // 撤回按钮
+    public Button completeButton; // 完成按钮
+    public bool bComplete = false;// 是否完成
+    public GameObject markerPrefab; // 用于表示标记的UI元素,可能是一个小图标(如枪)
+
+    // 新增父对象,用于存放标记的物体
+    public Transform markerParent; // 标记物体的父对象(例如Canvas中的一个空物体)
+
+    public Image[] hintImages; // 依次存放左上、右上、右下、左下四个提示图片
+
+    private List<Vector2> markedPoints = new List<Vector2>();
+    private string[] directions = { "左上", "右上", "右下", "左下" };
+    private int currentPointIndex = 0; // 当前需要标记的点的索引
+    private List<GameObject> markerObjects = new List<GameObject>(); // 记录标记物体
+
+    [SerializeField] InfraredScreenPositioningView infraredScreenPositioningView;
+
+    void Start()
+    {
+        if (AimHandler.ins) AimHandler.ins.OnCrossBtnEvent += OnRecordInfrared;
+
+        UpdateInstruction();
+        undoButton.onClick.AddListener(UndoLastPoint);
+        completeButton.onClick.AddListener(CompletePoint); // 初始化时隐藏完成按钮
+        bComplete = false;
+
+        // 初始化时,显示第一个提示图片,其余隐藏
+        ShowHintImage(0);
+    }
+    void OnDestroy()
+    {
+        if (AimHandler.ins) AimHandler.ins.OnCrossBtnEvent -= OnRecordInfrared;
+    }
+
+    void Update()
+    {
+        if (Input.GetKeyDown(KeyCode.Alpha6))
+        {
+            //Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
+            //MarkPoint(mousePosition);
+           // OnRecordInfrared();
+
+            var mouse = Input.mousePosition;
+            var u = mouse.x / Screen.width;
+            var v = mouse.y / Screen.height;
+            u = Math.Clamp(u, 0, 1);
+            v = Math.Clamp(v, 0, 1);
+            Vector2 pos = new Vector2(u * ScreenLocate.Main.getUVCTexture.width, v * ScreenLocate.Main.getUVCTexture.height);
+            markedPoints.Add(pos);
+            // 设置标记的位置
+            MarkPoint(new Vector2(u, v).pixelToLocalPosition_AnchorCenter(new Vector2(1, 1), markerParent.GetComponent<RectTransform>().rect));
+        }
+    }
+
+    /// <summary>
+    /// 记录红外点
+    /// </summary>
+    public void OnRecordInfrared()
+    {
+       
+
+        if (currentPointIndex >= 4) return;
+        var location = ScreenLocate.Main.infraredSpotBuffer.FirstOrDefault()?.CameraLocation;
+        if (location != null)
+        {
+            Vector2 localPosition = location.Value.pixelToLocalPosition_AnchorCenter(ScreenLocate.Main.CameraSize, infraredScreenPositioningView.Bg.rectTransform.rect);
+            markedPoints.Add(localPosition);
+            MarkPoint(localPosition);
+        }
+    }
+    void MarkPoint(Vector2 point)
+    {
+        //markedPoints.Add(new Vector2(point.x * ScreenLocate.Main.getUVCTexture.width, point.y * ScreenLocate.Main.getUVCTexture.height));
+        // 创建标记物体,并将其作为markerParent的子对象
+        GameObject marker = Instantiate(markerPrefab, markerParent);
+        marker.SetActive(true);
+        marker.transform.localPosition = point;
+        markerObjects.Add(marker);
+
+        // 隐藏当前的提示图片,显示下一个提示图片
+        currentPointIndex++;
+        ShowHintImage(currentPointIndex);
+
+        UpdateInstruction();
+
+        // 如果已经标记了四个点,显示完成按钮
+        if (currentPointIndex == 4)
+        {
+            instructionText.text = "标记完成!";
+            bComplete = true;
+        }
+    }
+
+    void UndoLastPoint()
+    {
+        if (markedPoints.Count > 0)
+        {
+            // 移除最后一个标记的点
+            markedPoints.RemoveAt(markedPoints.Count - 1);
+
+            // 删除最后一个标记的物体
+            Destroy(markerObjects[markerObjects.Count - 1]);
+            markerObjects.RemoveAt(markerObjects.Count - 1);
+
+            // 回退到上一个提示图片
+            currentPointIndex--;
+            ShowHintImage(currentPointIndex);
+
+            UpdateInstruction();
+        }
+
+        // 隐藏完成按钮
+        bComplete = false;
+    }
+
+    void UpdateInstruction()
+    {
+        if (currentPointIndex < 4)
+        {
+            instructionText.text = "请标记: " + directions[currentPointIndex] + "角的点";
+        }
+    }
+
+    // 显示当前需要的提示图片,并隐藏其余提示图片
+    void ShowHintImage(int index)
+    {
+        for (int i = 0; i < hintImages.Length; i++)
+        {
+            if (i == index)
+                hintImages[i].gameObject.SetActive(true);
+            else
+                hintImages[i].gameObject.SetActive(false);
+        }
+    }
+
+    void CompletePoint() {
+        if (!bComplete) {
+            Debug.Log("未完成");
+            //todo,加提示
+            PopupMgr.ins.ShowTipTop(TextAutoLanguage2.GetTextByKey("Incomplete"));
+            return;
+        }
+        //完成,下一步
+        for (int i = 0; i < 4; i++)
+        {
+            int index = i;
+            infraredScreenPositioningView.onManualNewPos(3 - index, markerObjects[index].transform.localPosition);
+        }
+        infraredScreenPositioningView.onManualToAutomatic();
+
+        ////清空数据
+        //currentPointIndex = 0;
+        ////清空生成的数据
+        //markerObjects.Clear();
+        //foreach (Transform i in markerParent.transform)
+        //    Destroy(i.gameObject);
+    }
+
+}

+ 11 - 0
Assets/SmartBow/Scripts/Views/InfraredViewParts/PointMarker.cs.meta

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

BIN
Assets/SmartBow/Textures/Guidance/Infrared/InfraredViewBg.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/InfraredViewBg.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: a078e9363c2ddd84cb0c6c32e7355599
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/Step1.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/Step1.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 3962e217faac0a949a1eb69ca41ca54e
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/Step2.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/Step2.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 3f653287232655a40aa44dc32ece2493
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/Step3.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/Step3.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 33d45aa3feb999242b100100c789c457
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/leftBottom.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/leftBottom.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: c672cb391cba27947b62ceae6c7433c9
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/leftUp.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/leftUp.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: ceb0fca332605824f9d8984b09092d89
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/rightBottom.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/rightBottom.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 2a6752634eaccb741bda51f1ea0ab9af
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/rightUp.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/rightUp.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 68897b855137a91499cf015b94426d62
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/selected.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/selected.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: e49f5f7319cc1c14aa7b815786b5f70a
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/selected_bg.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/selected_bg.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 74eb197a068baa44bac3e666315cb78c
+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: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/SmartBow/Textures/Guidance/Infrared/unselected.png


+ 123 - 0
Assets/SmartBow/Textures/Guidance/Infrared/unselected.png.meta

@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: f5a6caaab1f93ed45b7f58f27c61efe6
+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: Android
+    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: 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików