Преглед изворни кода

1.添加子弹现在和ui,枪蓝牙校验未完成
2.修复和优化部分流程

slambb пре 1 година
родитељ
комит
5e3e7eb358
53 измењених фајлова са 5520 додато и 831 уклоњено
  1. 118 39
      Assets/BowArrow/InfraredCamera/InfraredDemo.cs
  2. 6 4
      Assets/BowArrow/InfraredCamera/Resources/InfraredDemo.prefab
  3. 2 2
      Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.cs
  4. 168 11
      Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab
  5. 44 0
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.cs
  6. 571 2
      Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.prefab
  7. 3 3
      Assets/BowArrow/Modules/InfraredGuider/InfraredResolution.cs
  8. 288 527
      Assets/BowArrow/Modules/InfraredGuider/InfraredResolution.prefab
  9. BIN
      Assets/BowArrow/Modules/InfraredGuider/Texture/Rectangle.png
  10. 147 0
      Assets/BowArrow/Modules/InfraredGuider/Texture/Rectangle.png.meta
  11. BIN
      Assets/BowArrow/Modules/InfraredGuider/Texture/Text_smaller_corners.png
  12. 147 0
      Assets/BowArrow/Modules/InfraredGuider/Texture/Text_smaller_corners.png.meta
  13. BIN
      Assets/BowArrow/Modules/InfraredGuider/Texture/buttonBg.png
  14. 147 0
      Assets/BowArrow/Modules/InfraredGuider/Texture/buttonBg.png.meta
  15. 88 4
      Assets/BowArrow/Scenes/Game.unity
  16. 20 1
      Assets/BowArrow/Scripts/Bluetooth/AimHandler.cs
  17. 81 65
      Assets/BowArrow/Scripts/Bluetooth/ShootCheck.cs
  18. 39 3
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json
  19. 42 5
      Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json
  20. 2 0
      Assets/BowArrow/Scripts/Effect/HitTargetNumber.cs
  21. 8 0
      Assets/BowArrow/Scripts/Game/ArmBow.cs
  22. 12 0
      Assets/BowArrow/Scripts/Game/Billboard.cs
  23. BIN
      Assets/BowArrow/Textures/Home/GunHit/bullet-bg.png
  24. 147 0
      Assets/BowArrow/Textures/Home/GunHit/bullet-bg.png.meta
  25. BIN
      Assets/BowArrow/Textures/Home/GunHit/bullet-num-grey.png
  26. 147 0
      Assets/BowArrow/Textures/Home/GunHit/bullet-num-grey.png.meta
  27. BIN
      Assets/BowArrow/Textures/Home/GunHit/bullet-num-y.png
  28. 147 0
      Assets/BowArrow/Textures/Home/GunHit/bullet-num-y.png.meta
  29. BIN
      Assets/BowArrow/Textures/Home/GunHit/bullet.png
  30. 147 0
      Assets/BowArrow/Textures/Home/GunHit/bullet.png.meta
  31. 122 4
      Assets/FruitMaster/Scenes/FruitMaster.unity
  32. 38 3
      Assets/FruitMaster/Scripts/GamingManager.cs
  33. 1 1
      Assets/FruitMaster/Scripts/JCFruitMaster.cs
  34. 1 1
      Assets/FruitMaster/Scripts/OverallLogics.cs
  35. 33 5
      Assets/InfraredProject/Resources/WebCameraView.prefab
  36. 2 40
      Assets/InfraredProject/UVC4UnityAndroidPlugin/Scripts/UVCManager.cs
  37. 3 3
      Assets/InfraredProject/WebCamera/Script/PcWebCamera.cs
  38. 8 0
      Assets/SmartBow/Resources/Common.meta
  39. 1188 0
      Assets/SmartBow/Resources/Common/BulletManager.prefab
  40. 7 0
      Assets/SmartBow/Resources/Common/BulletManager.prefab.meta
  41. 1092 0
      Assets/SmartBow/Resources/Common/BulletManager_Fruit.prefab
  42. 7 0
      Assets/SmartBow/Resources/Common/BulletManager_Fruit.prefab.meta
  43. 164 0
      Assets/SmartBow/Resources/Common/TipBulletNumber.prefab
  44. 7 0
      Assets/SmartBow/Resources/Common/TipBulletNumber.prefab.meta
  45. 58 107
      Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab
  46. 8 0
      Assets/SmartBow/Scripts/Common.meta
  47. 87 0
      Assets/SmartBow/Scripts/Common/BulletManager.cs
  48. 11 0
      Assets/SmartBow/Scripts/Common/BulletManager.cs.meta
  49. 15 0
      Assets/SmartBow/Scripts/Common/TipBulletNumber.cs
  50. 11 0
      Assets/SmartBow/Scripts/Common/TipBulletNumber.cs.meta
  51. 122 0
      Assets/SmartBow/SmartBowSDK/Decryptor.cs
  52. 11 0
      Assets/SmartBow/SmartBowSDK/Decryptor.cs.meta
  53. 3 1
      Assets/SmartBow/Unity-Logs-Viewer/Reporter/Reporter.cs

+ 118 - 39
Assets/BowArrow/InfraredCamera/InfraredDemo.cs

@@ -153,7 +153,7 @@ public class InfraredDemo : MonoBehaviour
 
 #if UNITY_ANDROID
     //初始化纹理-1280*720,index = 0
-    public ParamFloatValue resoution = new ParamFloatValue("ic_resoution2", 0);
+   // public ParamFloatValue resoution = new ParamFloatValue("ic_resoution2", 0);
     //摄像机分辨率 -320*240,index = 10
     public ParamFloatValue resoutionNew = new ParamFloatValue("ic_resoutionNew", 10);
 #endif
@@ -578,21 +578,25 @@ public class InfraredDemo : MonoBehaviour
 #if UNITY_ANDROID
         initSlider(camera);
         //按照分辨率重新设置
-        SetResolutionNew((int)resoutionNew.Get());
+        SetDefByIndex((int)resoutionNew.Get());
+        //SetResolutionNew((int)resoutionNew.Get());
         // yield return new WaitForSeconds(1f);
         //如果本地有记录,初始化一次
         //initScreenLocateManual();
 
-         //分辨率
-        SetResolution((int)resoution.Get());
-        _dropdownResolution.onValueChanged.AddListener(v =>
-        {
-            SetResolution(v);
-            StartCoroutine(RestartOrKillApp());
-        });
+        // //分辨率
+        //SetResolution((int)resoution.Get());
+        //_dropdownResolution.onValueChanged.AddListener(v =>
+        //{
+        //    SetResolution(v);
+        //    //StartCoroutine(RestartOrKillApp());
+        //    //获取第一个分辨率设置后设置size
+        //    SetResolutionNew(getTextureToResolutionNewIndex(_dropdownResolution.value));
+        //});
 
         //去除初始化值,初始化时候跟随 SetResolution
         //SetResolutionNew((int)resoutionNew.Get());
+        _dropdownResolution2.SetValueWithoutNotify((int)resoutionNew.Get());
         _dropdownResolution2.onValueChanged.AddListener(v =>
         {
             SetResolutionNew(v);
@@ -783,8 +787,10 @@ public class InfraredDemo : MonoBehaviour
     public void resolutionRestartApp(int index)
     {
 #if UNITY_ANDROID
-        SetResolution(index);
-        StartCoroutine(RestartOrKillApp());
+        //SetResolution(index);
+        //StartCoroutine(RestartOrKillApp());
+        //获取第一个分辨率设置后设置size
+        SetResolutionNew(getSelectIndexToResolutionNewIndex(index));
 #endif
 
     }
@@ -796,12 +802,18 @@ public class InfraredDemo : MonoBehaviour
     /// <param name="optionIndex"></param>
     public void SetResolution(int optionIndex)
     {
-#if UNITY_ANDROID
-        resoution.Set(optionIndex);
-#endif
+//#if UNITY_ANDROID
+//       // resoution.Set(optionIndex);
+//#endif
         _dropdownResolution.SetValueWithoutNotify(optionIndex);
         switch (optionIndex)
         {
+            //case 0:
+            //    infraredCameraHelper.SetCameraResolution(320, 240);
+            //    break;
+            //case 1:
+            //    infraredCameraHelper.SetCameraResolution(160, 120);
+            //    break;
             case 0:
                 infraredCameraHelper.SetCameraResolution(1280, 720);
                 break;
@@ -811,32 +823,74 @@ public class InfraredDemo : MonoBehaviour
             case 2:
                 infraredCameraHelper.SetCameraResolution(320, 240);
                 break;
+            case 3:
+                infraredCameraHelper.SetCameraResolution(160, 120);
+                break;
         }
-       
+
     }
     /// <summary>
     /// 获取当前texture resolution 对应的camera index
     /// </summary>
-    public int getTextureToResolutionNewIndex() {
-
+    public int getTextureToResolutionNewIndex(int index = 0) {
         //SetResolutionNew 里面对应的下标
         int _resolutionIndex = 0;
-        switch (_dropdownResolution.value)
+        switch (index)
         {
             case 0:
-                //infraredCameraHelper.SetCameraResolution(1280, 720);
                 _resolutionIndex = 2;
                 break;
             case 1:
-                //infraredCameraHelper.SetCameraResolution(640, 360);
                 _resolutionIndex = 8;
                 break;
             case 2:
-                //infraredCameraHelper.SetCameraResolution(320, 240);
                 _resolutionIndex = 10;
                 break;
+            case 3:
+                _resolutionIndex = 11;
+                break;
+        }
+        return _resolutionIndex;
+    }
+    /// <summary>
+    /// 两种分辨率对应的下标 获取选择下标
+    /// </summary>
+    /// <returns>返回选择的下标</returns>
+    public int getSelectIndexByResolutionNewIndex()
+    {
+        //SetResolutionNew 里面对应的下标
+        int _resolutionIndex = 0;
+        switch ((int)resoutionNew.Get())
+        {
+            case 10:
+                //Vector2(320, 240);
+                _resolutionIndex = 0;
+                break;
+            case 11:
+                //Vector2(160, 120);
+                _resolutionIndex = 1;
+                break;
+        }
+        return _resolutionIndex;
+    }
+    /// <summary>
+    /// 选择高低分辨率对应的是 10和 11
+    /// </summary>
+    /// <param name="index"></param>
+    /// <returns></returns>
+    public int getSelectIndexToResolutionNewIndex(int index = 0)
+    {
+        //SetResolutionNew 里面对应的下标
+        int _resolutionIndex = 10;
+        switch (index)
+        {
+            case 0:
+                _resolutionIndex = 10;
+                break;
+            case 1:
+                _resolutionIndex = 11;
+                break;
         }
-
         return _resolutionIndex;
     }
     /// <summary>
@@ -845,27 +899,45 @@ public class InfraredDemo : MonoBehaviour
     /// <returns></returns>
     public Vector2 getResolutionByIndex(int index)
     {
-
         //SetResolutionNew 里面对应的下标
         Vector2 _resolutionV2 = Vector2.zero;
         switch (index)
         {
             case 2:
-                //infraredCameraHelper.SetCameraResolution(1280, 720);
                 _resolutionV2 = new Vector2(1280, 720);
                 break;
             case 8:
-                //infraredCameraHelper.SetCameraResolution(640, 360);
                 _resolutionV2 = new Vector2(640, 360);
                 break;
             case 10:
-                //infraredCameraHelper.SetCameraResolution(320, 240);
                 _resolutionV2 = new Vector2(320, 240);
                 break;
+            case 11:
+                _resolutionV2 = new Vector2(160, 120);
+                break;
         }
-
         return _resolutionV2;
     }
+    /// <summary>
+    /// 根据 resoutionNew 下标设置一下 def值
+    /// </summary>
+    /// <param name="index"></param>
+    public void SetDefByIndex(int index = 10)
+    {
+        //SetResolutionNew 里面对应的下标
+        switch (index)
+        {
+            case 10:
+                infraredCameraHelper.SetCameraResolution(320, 240);
+                break;
+            case 11:
+                infraredCameraHelper.SetCameraResolution(160, 120);
+                break;
+            default:
+                infraredCameraHelper.SetCameraResolution(320, 240);
+                break; 
+        }
+    }
     public int TextureOrResolution => _dropdownResolution.value;
     public int ResolutionIndex => _dropdownResolution2.value;
 
@@ -965,14 +1037,14 @@ public class InfraredDemo : MonoBehaviour
         _sliderDelay.transform.Find("Value").GetComponent<Text>().text = delayValue.Get().ToString("f1");
         infraredCameraHelper.SetDelay((int)delayValue.Get());
     }
-#endregion
+    #endregion
 
 
-#region 相机感光度
-    public void onSetSliderValue(Slider _slider)
+    #region 相机感光度(默认修改对比度)
+    public void onSetSliderValue(Slider _slider,string typeStr = "PU_CONTRAST")
     {
         if (BluetoothWindows.IsWindows()) {
-            float v = infraredCameraHelper.GetContrast();
+            float v = typeStr == "PU_CONTRAST"?infraredCameraHelper.GetContrast(): infraredCameraHelper.GetBrightness();
             // 目标区间 [0, 10] 的边界值
             double targetMin = 0.0;
             double targetMax = 10.0;
@@ -981,14 +1053,14 @@ public class InfraredDemo : MonoBehaviour
             // 计算转换后的值
             double v2 = MapValue(v, originalMin, originalMax, targetMin, targetMax);
 
-            Debug.Log("PC获取相机的感光度:" + v + " = " + v2);
+            Debug.Log("PC获取相机的感光度 "+ typeStr + " :" + v + " = " + v2);
             _slider.SetValueWithoutNotify((float)v2);
             return;
         }
         //功能也改为UVC的对比度
         if (running)
         {
-            string typeStr = "PU_CONTRAST";//"PU_BRIGHTNESS";
+            //string typeStr = "PU_CONTRAST";//"PU_BRIGHTNESS";
             UInt64 _VALUE = currentCameraInfo.GetTypeByName(typeStr);
             UVCCtrlInfo _UVCCtrlInfo = currentCameraInfo.GetInfo(_VALUE);
             float v = currentCameraInfo.GetValue(_VALUE); // infraredCameraHelper.GetBrightness();
@@ -1003,14 +1075,14 @@ public class InfraredDemo : MonoBehaviour
             double v2 = MapValue(v, originalMin, originalMax, targetMin, targetMax);
 
 
-            Debug.Log("获取相机的感光度:" + _VALUE + " = " + v + " = " + v2);
+            Debug.Log("获取相机的感光度" + typeStr + ":" + _VALUE + " = " + v + " = " + v2);
             _slider.SetValueWithoutNotify((float)v2);
         }
         else _slider.SetValueWithoutNotify(5);
     }
-    public void onSliderEvent(float value)
+    public void onSliderEvent(float value, string typeStr = "PU_CONTRAST")
     {
-        string typeStr = "PU_CONTRAST";// "PU_BRIGHTNESS";
+       // string typeStr = "PU_CONTRAST";// "PU_BRIGHTNESS";
         //pc
         if (BluetoothWindows.IsWindows())
         {
@@ -1029,12 +1101,19 @@ public class InfraredDemo : MonoBehaviour
             //Debug.Log("_current:" + _current + " , result:" + result);
             textObj.text = _current + "";
             slider.value = _current;
-            infraredCameraHelper.SetContrast(_current);
-            pcCONTRAST.Set(_current);
+            if (typeStr == "PU_CONTRAST")
+            {
+                infraredCameraHelper.SetContrast(_current);
+                pcCONTRAST.Set(_current);
+            }
+            else {
+                infraredCameraHelper.SetBrightness(_current);
+                pcBRIGHTNESS.Set(_current);
+            }
+
             return;
         }
 
-        Debug.Log(value);
         //修改亮度时,调试界面的亮度也应该一起修改
         //功能也改为UVC的对比度
         if (running)

+ 6 - 4
Assets/BowArrow/InfraredCamera/Resources/InfraredDemo.prefab

@@ -4595,7 +4595,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &7974945653309356713
 RectTransform:
   m_ObjectHideFlags: 0
@@ -4615,9 +4615,9 @@ RectTransform:
   m_Father: {fileID: 3859395984171938655}
   m_RootOrder: 7
   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: 170, y: -171}
   m_SizeDelta: {x: 160, y: 30}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4220283188833173995
@@ -4713,6 +4713,8 @@ MonoBehaviour:
       m_Image: {fileID: 0}
     - m_Text: 320X240
       m_Image: {fileID: 0}
+    - m_Text: 160X120
+      m_Image: {fileID: 0}
   m_OnValueChanged:
     m_PersistentCalls:
       m_Calls: []

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

@@ -18,9 +18,9 @@ public class InfraredGuider : MonoBehaviour
         {
             slider.onValueChanged.AddListener((value) =>
             {
-                InfraredDemo._ins.onSliderEvent(value);
+                InfraredDemo._ins.onSliderEvent(value, "PU_BRIGHTNESS");
             });
-            InfraredDemo._ins.onSetSliderValue(slider);
+            InfraredDemo._ins.onSetSliderValue(slider, "PU_BRIGHTNESS");
         }
 
 #if  UNITY_STANDALONE_WIN || UNITY_EDITOR

+ 168 - 11
Assets/BowArrow/Modules/InfraredGuider/InfraredGuider.prefab

@@ -275,7 +275,7 @@ RectTransform:
   m_Children:
   - {fileID: 8028799307649290605}
   m_Father: {fileID: 3835120308163295950}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 0, y: 0.5}
@@ -310,7 +310,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 21300000, guid: f4b2e258a6c3b9941ae66a7215c2eaf0, type: 3}
+  m_Sprite: {fileID: 21300000, guid: e63ef6bb5c15738478cbe822f99c2130, type: 3}
   m_Type: 0
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -559,6 +559,7 @@ GameObject:
   - component: {fileID: 5959130071196473269}
   - component: {fileID: 4405827043080976641}
   - component: {fileID: 1078170562520215102}
+  - component: {fileID: 3024020497342576669}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -628,6 +629,21 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u8FD4\u56DE\u4E0A\u4E00\u6B65"
+--- !u!114 &3024020497342576669
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2832863522192818574}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ReturnPreviousStep
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &2880702392145871081
 GameObject:
   m_ObjectHideFlags: 0
@@ -639,6 +655,7 @@ GameObject:
   - component: {fileID: 8028799307649290605}
   - component: {fileID: 7216396184769851453}
   - component: {fileID: 27242406958656587}
+  - component: {fileID: 2597075743117804918}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -708,6 +725,21 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1.8
   m_Text: "\u6D4B\u8BD5\u5149\u6807\u662F\u5426\u987A\u6ED1\uFF0C\u8986\u76D6\u8303\u56F4\u662F\u5426\u591F\u5927\uFF0C\u82E5\u5149\u6807\u4E0D\u80FD\u79FB\u52A8\u5230\u5C4F\u5E55\u5927\u90E8\u5206\u4F4D\u7F6E\uFF0C\u8BF7\u8C03\u6574\u56FE\u50CF\u4EAE\u5EA6\u6216\u91CD\u65B0\u8FDB\u884C\u5C4F\u5E55\u5B9A\u4F4D\uFF1B\u82E5\u5149\u6807\u79FB\u52A8\u65F6\u7684\u8DDF\u968F\u5EA6\u4E0D\u597D\uFF0C\u8BF7\u8C03\u6574\u5206\u8FA8\u7387\u6216\u66F4\u6362\u6027\u80FD\u66F4\u597D\u7684\u624B\u673A\u540E\uFF0C\u518D\u91CD\u65B0\u8FDB\u884C\u8BBE\u7F6E\u3002\n\r\n\u82E5\u5149\u6807\u968F\u673A\u95EA\u70C1\u4E0D\u540C\u7684\u4F4D\u7F6E\u6216\u4E0D\u5728\u5F13\u7BAD\u6307\u5411\u7684\u4F4D\u7F6E\uFF0C\u8BF7\u70B9\u51FB\u73AF\u5883\u6D4B\u5149\u5BFB\u627E\u5E72\u6270\u6E90\u3002"
+--- !u!114 &2597075743117804918
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2880702392145871081}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: LeftTip
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &3316149295125559177
 GameObject:
   m_ObjectHideFlags: 0
@@ -719,6 +751,7 @@ GameObject:
   - component: {fileID: 8436915684107413322}
   - component: {fileID: 3135809894184630842}
   - component: {fileID: 5825446238783178651}
+  - component: {fileID: 6751568118532715420}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -788,6 +821,21 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u73AF\u5883\u6D4B\u5149"
+--- !u!114 &6751568118532715420
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3316149295125559177}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: AmbientMetering
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &3835120308163295946
 GameObject:
   m_ObjectHideFlags: 0
@@ -821,6 +869,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 5724626160741069836}
+  - {fileID: 7651479340886464037}
   - {fileID: 3666313176139725355}
   - {fileID: 8531183467123002654}
   - {fileID: 6293142885012681023}
@@ -943,7 +992,7 @@ RectTransform:
   - {fileID: 8155649135877587900}
   - {fileID: 3828647683630594919}
   m_Father: {fileID: 3835120308163295950}
-  m_RootOrder: 4
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 0.5}
   m_AnchorMax: {x: 1, y: 0.5}
@@ -1022,7 +1071,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -51, y: 434}
+  m_AnchoredPosition: {x: -40, y: 434}
   m_SizeDelta: {x: 160, y: 36}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4390822085452994212
@@ -1066,7 +1115,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 1
     m_VerticalOverflow: 1
     m_LineSpacing: 1
-  m_Text: "\u56FE\u50CF\u5BF9\u6BD4\u5EA6"
+  m_Text: "\u56FE\u50CF\u4EAE\u56FE"
 --- !u!1 &5580728531082366755
 GameObject:
   m_ObjectHideFlags: 0
@@ -1099,7 +1148,7 @@ RectTransform:
   - {fileID: 5554028189677659371}
   - {fileID: 5060808032186845926}
   m_Father: {fileID: 3835120308163295950}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
@@ -1271,7 +1320,7 @@ RectTransform:
   m_Children:
   - {fileID: 5959130071196473269}
   m_Father: {fileID: 3835120308163295950}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 0}
   m_AnchorMax: {x: 1, y: 0}
@@ -1306,7 +1355,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Sprite: {fileID: 21300000, guid: 03062637a2772c94b9393611719566c6, type: 3}
   m_Type: 1
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -1383,6 +1432,7 @@ GameObject:
   - component: {fileID: 8531183467123002654}
   - component: {fileID: 2657317314533895910}
   - component: {fileID: 7794779691686349810}
+  - component: {fileID: 9026240304001568552}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -1403,7 +1453,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 3835120308163295950}
-  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}
@@ -1452,6 +1502,21 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u5982\u6D4B\u8BD5\u65E0\u5F02\u5E38\uFF0C\u5C04\u4E2D\u9776\u5B50\u540E\u5C06\u5B8C\u6210\u521D\u59CB\u5316\uFF0C\u5E76\u81EA\u52A8\u9000\u51FA\u754C\u9762\u3002"
+--- !u!114 &9026240304001568552
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6077303134096430021}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: TopTip
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &6829860169755776206
 GameObject:
   m_ObjectHideFlags: 0
@@ -1672,7 +1737,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Sprite: {fileID: 21300000, guid: 03062637a2772c94b9393611719566c6, type: 3}
   m_Type: 1
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -1786,6 +1851,7 @@ GameObject:
   - component: {fileID: 6398106945612026186}
   - component: {fileID: 322033727492379624}
   - component: {fileID: 73586456394043221}
+  - component: {fileID: 5615181514031302934}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -1855,6 +1921,21 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u5206\u8FA8\u7387\u8BBE\u7F6E"
+--- !u!114 &5615181514031302934
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8041003674244357211}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ResolutionSettings
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &8239322459456642322
 GameObject:
   m_ObjectHideFlags: 0
@@ -1923,7 +2004,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Sprite: {fileID: 21300000, guid: 03062637a2772c94b9393611719566c6, type: 3}
   m_Type: 1
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -1989,3 +2070,79 @@ MonoBehaviour:
           m_StringArgument: 
           m_BoolArgument: 0
         m_CallState: 2
+--- !u!1 &8759987502205846059
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7651479340886464037}
+  - component: {fileID: 2590474269612244688}
+  - component: {fileID: 477390223068188463}
+  m_Layer: 5
+  m_Name: TipBGB
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7651479340886464037
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8759987502205846059}
+  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: 3835120308163295950}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.5}
+  m_AnchorMax: {x: 0, y: 0.5}
+  m_AnchoredPosition: {x: 92, y: 0}
+  m_SizeDelta: {x: 563.2, y: 933}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &2590474269612244688
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8759987502205846059}
+  m_CullTransparentMesh: 1
+--- !u!114 &477390223068188463
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8759987502205846059}
+  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: 0ac04667f8915a442a4b68b29b40fc54, 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

+ 44 - 0
Assets/BowArrow/Modules/InfraredGuider/InfraredLightGuider.cs

@@ -3,6 +3,7 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
+using ZIM;
 
 //处理光源检测部分
 public class InfraredLightGuider : MonoBehaviour
@@ -12,6 +13,9 @@ public class InfraredLightGuider : MonoBehaviour
     //相机感光部分
     [SerializeField]
     Slider slider;
+
+    [SerializeField] List<RectTransform> _crosshairsInCamera;
+
     // Start is called before the first frame update
     void Start()
     {
@@ -22,6 +26,8 @@ public class InfraredLightGuider : MonoBehaviour
                 InfraredDemo._ins.onSliderEvent(value);
             });
             InfraredDemo._ins.onSetSliderValue(slider);
+
+            SetLocatePointsToCameraRender(ScreenLocate.quadUnityVectorList,1,1);
         }
     }
 
@@ -32,9 +38,47 @@ public class InfraredLightGuider : MonoBehaviour
             //渲染相机画面
             rawImage.texture = InfraredDemo.infraredCameraHelper.GetCameraTexture();
             //rawImage.material = InfraredDemo.infraredCameraHelper.GetCameraMaterial();
+            //在相机画面显示准心
+            if (ScreenLocate.Main)
+            {
+                var _sl = ScreenLocate.Main;
+                var buffer = _sl.infraredSpotBuffer;
+                if (buffer != null)
+                {
+                    for (int i = 0; i < buffer.Length; i++)
+                    {
+                        if (buffer[i].CameraLocation != null)
+                        {
+                            // 检测到光点
+                            var pos = buffer[i].CameraLocation.Value.pixelToLocalPosition_AnchorCenter(_sl.mUVCCameraInfo.Size, rawImage.rectTransform.rect);
+                            _crosshairsInCamera[i].gameObject.SetActive(true);
+                            _crosshairsInCamera[i].anchoredPosition = pos;
+
+                        }
+                        else
+                            _crosshairsInCamera[i].gameObject.SetActive(false);
+                    }
+                }
+
+            }
         }
     }
+    public void SetLocatePointsToCameraRender(List<Vector2> points, float w, float h)
+    {
+        Transform pointsTF2 = rawImage.transform.Find("Points");
 
+        if (pointsTF2.childCount == points.Count)
+        {
+            Vector2 texSize = new Vector2(w, h);
+            for (int i = 0; i < pointsTF2.childCount; i++)
+            {
+                Transform pointTF = pointsTF2.GetChild(i);
+                Vector2 pos = points[i];
+                pointTF.localPosition = pos.pixelToLocalPosition_AnchorCenter(texSize, rawImage.rectTransform.rect);
+                pointTF.gameObject.SetActive(true);
+            }
+        }
+    }
     public void Close() {
         Destroy(gameObject);
     }

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

@@ -29,7 +29,9 @@ RectTransform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
+  m_Children:
+  - {fileID: 9002826192918443814}
+  - {fileID: 6641325340020118199}
   m_Father: {fileID: 3835120308163295950}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -392,6 +394,117 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2407522307905110714
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 470184680313210048}
+  - component: {fileID: 2882778098728877632}
+  - component: {fileID: 595295659124359091}
+  m_Layer: 5
+  m_Name: Point (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &470184680313210048
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2407522307905110714}
+  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: 9002826192918443814}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 50, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2882778098728877632
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2407522307905110714}
+  m_CullTransparentMesh: 1
+--- !u!114 &595295659124359091
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2407522307905110714}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0.009995077, 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_Texture: {fileID: 10912, guid: 0000000000000000f000000000000000, type: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+--- !u!1 &2501643628980968785
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6641325340020118199}
+  m_Layer: 5
+  m_Name: CrossHairs
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6641325340020118199
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2501643628980968785}
+  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: 6814174719471736834}
+  - {fileID: 5312630150959592296}
+  m_Father: {fileID: 5724626160741069836}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
 --- !u!1 &2509897756409363727
 GameObject:
   m_ObjectHideFlags: 0
@@ -468,6 +581,79 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &2525714778356462129
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5312630150959592296}
+  - component: {fileID: 4620484924230370566}
+  - component: {fileID: 9073254263568560840}
+  m_Layer: 5
+  m_Name: Green
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &5312630150959592296
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2525714778356462129}
+  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: 6641325340020118199}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 150, y: 150}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4620484924230370566
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2525714778356462129}
+  m_CullTransparentMesh: 1
+--- !u!114 &9073254263568560840
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2525714778356462129}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 1, b: 0, a: 0.89411765}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Texture: {fileID: 2800000, guid: 24d1e577dc42aaf4ba6e64be26be3845, type: 3}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
 --- !u!1 &3316149295125559177
 GameObject:
   m_ObjectHideFlags: 0
@@ -479,6 +665,7 @@ GameObject:
   - component: {fileID: 8436915684107413322}
   - component: {fileID: 3135809894184630842}
   - component: {fileID: 5825446238783178651}
+  - component: {fileID: 6524852190838108507}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -548,6 +735,21 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: "\u5C04\u51FB\u6D4B\u8BD5"
+--- !u!114 &6524852190838108507
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3316149295125559177}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ShootingTest
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &3835120308163295946
 GameObject:
   m_ObjectHideFlags: 0
@@ -667,6 +869,9 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   rawImage: {fileID: 2911060005990326144}
   slider: {fileID: 6932389852952640046}
+  _crosshairsInCamera:
+  - {fileID: 6814174719471736834}
+  - {fileID: 5312630150959592296}
 --- !u!1 &3958523482832117442
 GameObject:
   m_ObjectHideFlags: 0
@@ -743,6 +948,79 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 5}
   m_SizeDelta: {x: 0, y: -20}
   m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &4604881960620407814
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6814174719471736834}
+  - component: {fileID: 7382558050138234794}
+  - component: {fileID: 8684843088789953180}
+  m_Layer: 5
+  m_Name: Red
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &6814174719471736834
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4604881960620407814}
+  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: 6641325340020118199}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 150, y: 150}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7382558050138234794
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4604881960620407814}
+  m_CullTransparentMesh: 1
+--- !u!114 &8684843088789953180
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4604881960620407814}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 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_Texture: {fileID: 2800000, guid: 24d1e577dc42aaf4ba6e64be26be3845, type: 3}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
 --- !u!1 &5344047455704414540
 GameObject:
   m_ObjectHideFlags: 0
@@ -754,6 +1032,7 @@ GameObject:
   - component: {fileID: 8155649135877587900}
   - component: {fileID: 4390822085452994212}
   - component: {fileID: 6307863736258386059}
+  - component: {fileID: 7877520179127891668}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -823,6 +1102,94 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u56FE\u50CF\u5BF9\u6BD4\u5EA6"
+--- !u!114 &7877520179127891668
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5344047455704414540}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ImageContrast
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
+--- !u!1 &5448342751224532012
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7147272142456849636}
+  - component: {fileID: 7218611814135884023}
+  - component: {fileID: 1973254950290638784}
+  m_Layer: 5
+  m_Name: Point (3)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7147272142456849636
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5448342751224532012}
+  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: 9002826192918443814}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 50, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7218611814135884023
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5448342751224532012}
+  m_CullTransparentMesh: 1
+--- !u!114 &1973254950290638784
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5448342751224532012}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0.009995077, 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_Texture: {fileID: 10912, guid: 0000000000000000f000000000000000, type: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
 --- !u!1 &5580728531082366755
 GameObject:
   m_ObjectHideFlags: 0
@@ -1004,6 +1371,7 @@ GameObject:
   - component: {fileID: 8531183467123002654}
   - component: {fileID: 2657317314533895910}
   - component: {fileID: 7794779691686349810}
+  - component: {fileID: 1494863647824932}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -1073,6 +1441,21 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u4FDD\u6301\u753B\u9762\u91CC\u7684\u5C4F\u5E55\u6CA1\u6709\u767D\u8272\u5149\u6591\uFF0C\u5982\u679C\u6709\u5149\u6591\uFF0C\u9700\u8981\u627E\u51FA\u5E72\u6270\u5149\u6E90\u5173\u95ED\u5B83\n\u6216\u8C03\u6574\u6444\u50CF\u5934\u652F\u67B6\u4F4D\u7F6E\u4EE5\u5C4F\u853D\u5B83\u3002"
+--- !u!114 &1494863647824932
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6077303134096430021}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ShootingTestTip
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &6829860169755776206
 GameObject:
   m_ObjectHideFlags: 0
@@ -1149,6 +1532,119 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &6832145524912600231
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 9002826192918443814}
+  m_Layer: 5
+  m_Name: Points
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &9002826192918443814
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6832145524912600231}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0.698}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 578423676241934885}
+  - {fileID: 470184680313210048}
+  - {fileID: 7564833180580038905}
+  - {fileID: 7147272142456849636}
+  m_Father: {fileID: 5724626160741069836}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &6894981870828105841
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7564833180580038905}
+  - component: {fileID: 3579072558505763323}
+  - component: {fileID: 5631213759293933097}
+  m_Layer: 5
+  m_Name: Point (2)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &7564833180580038905
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6894981870828105841}
+  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: 9002826192918443814}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 50, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3579072558505763323
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6894981870828105841}
+  m_CullTransparentMesh: 1
+--- !u!114 &5631213759293933097
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6894981870828105841}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0.009995077, 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_Texture: {fileID: 10912, guid: 0000000000000000f000000000000000, type: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
 --- !u!1 &7024036429895728779
 GameObject:
   m_ObjectHideFlags: 0
@@ -1225,6 +1721,79 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &7509198815190846628
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 578423676241934885}
+  - component: {fileID: 16136355741906529}
+  - component: {fileID: 2883465955701535861}
+  m_Layer: 5
+  m_Name: Point
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &578423676241934885
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7509198815190846628}
+  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: 9002826192918443814}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 50, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &16136355741906529
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7509198815190846628}
+  m_CullTransparentMesh: 1
+--- !u!114 &2883465955701535861
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7509198815190846628}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0.009995077, 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_Texture: {fileID: 10912, guid: 0000000000000000f000000000000000, type: 0}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
 --- !u!1 &7797818688764827461
 GameObject:
   m_ObjectHideFlags: 0
@@ -1330,7 +1899,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Sprite: {fileID: 21300000, guid: 03062637a2772c94b9393611719566c6, type: 3}
   m_Type: 1
   m_PreserveAspect: 0
   m_FillCenter: 1

+ 3 - 3
Assets/BowArrow/Modules/InfraredGuider/InfraredResolution.cs

@@ -17,13 +17,12 @@ public class InfraredResolution : MonoBehaviour
     {
 #if UNITY_ANDROID
         if (InfraredDemo.running) {
-            _index = (int)InfraredDemo._ins.resoution.Get();
+            _index = InfraredDemo._ins.getSelectIndexByResolutionNewIndex();
         }
 #endif
 
-
         //给list赋值
-        ToggleList = transform.GetComponentsInChildren<Toggle>().ToList();
+        //ToggleList = transform.GetComponentsInChildren<Toggle>().ToList();
         //遍历Toggle Group下的所有Toggle
         for (int i = 0; i < ToggleList.Count; i++)
         {
@@ -58,6 +57,7 @@ public class InfraredResolution : MonoBehaviour
         //存储一次操作数据
         if (InfraredDemo.running) {
             InfraredDemo._ins.resolutionRestartApp(_index);
+            Destroy(gameObject);
         }
       
     }

Разлика између датотеке није приказан због своје велике величине
+ 288 - 527
Assets/BowArrow/Modules/InfraredGuider/InfraredResolution.prefab


BIN
Assets/BowArrow/Modules/InfraredGuider/Texture/Rectangle.png


+ 147 - 0
Assets/BowArrow/Modules/InfraredGuider/Texture/Rectangle.png.meta

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

BIN
Assets/BowArrow/Modules/InfraredGuider/Texture/Text_smaller_corners.png


+ 147 - 0
Assets/BowArrow/Modules/InfraredGuider/Texture/Text_smaller_corners.png.meta

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

BIN
Assets/BowArrow/Modules/InfraredGuider/Texture/buttonBg.png


+ 147 - 0
Assets/BowArrow/Modules/InfraredGuider/Texture/buttonBg.png.meta

@@ -0,0 +1,147 @@
+fileFormatVersion: 2
+guid: 03062637a2772c94b9393611719566c6
+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: 22, y: 0, z: 22, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: iPhone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 1537655665
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 88 - 4
Assets/BowArrow/Scenes/Game.unity

@@ -6165,7 +6165,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &589339043
@@ -7715,7 +7715,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &694545845
@@ -8629,6 +8629,7 @@ Transform:
   - {fileID: 1249647696}
   - {fileID: 2137503603}
   - {fileID: 317472496}
+  - {fileID: 1871105674}
   m_Father: {fileID: 1266071657}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 89.99, z: 0}
@@ -8648,6 +8649,8 @@ MonoBehaviour:
   speedLabel: {fileID: 391051845}
   speedText2: {fileID: 0}
   speedLabel2: {fileID: 0}
+  bulletManager: {fileID: 1871105675}
+  canvasBB: {fileID: 317472495}
 --- !u!1 &785919752
 GameObject:
   m_ObjectHideFlags: 0
@@ -13370,7 +13373,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 29.692308, y: 0}
   m_SizeDelta: {x: 0, y: 33}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1218454288
@@ -21174,7 +21177,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 79.38461, y: 0}
   m_SizeDelta: {x: 0, y: 40}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &1845023679
@@ -21646,6 +21649,87 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1869291961}
   m_CullTransparentMesh: 1
+--- !u!1001 &1871105673
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 784883313}
+    m_Modifications:
+    - target: {fileID: 440043521010991320, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_Name
+      value: BulletManager
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_RootOrder
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3351866092722874535, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: parent
+      value: 
+      objectReference: {fileID: 1639774506}
+    - target: {fileID: 7796246431171135654, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+      propertyPath: m_Camera
+      value: 
+      objectReference: {fileID: 748113865}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+--- !u!4 &1871105674 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 3261241466425081216, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+  m_PrefabInstance: {fileID: 1871105673}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &1871105675 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 3351866092722874535, guid: 3d5092763b93af94c842c5f3ce3cd150, type: 3}
+  m_PrefabInstance: {fileID: 1871105673}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e3ff1e8de644a534b8dd4637febe7067, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &1873293076
 GameObject:
   m_ObjectHideFlags: 0

+ 20 - 1
Assets/BowArrow/Scripts/Bluetooth/AimHandler.cs

@@ -271,7 +271,6 @@ public class AimDeviceInfos
 
     public void OnDataReceived(byte[] bytes)
     {
-        // Debug.Log("瞄准模块数据长度" + bytes.Length);
         if (bytes.Length != 27 && bytes.Length != 39)
         {
             if (bytes.Length == 2) {
@@ -308,6 +307,18 @@ public class AimDeviceInfos
             } else if (bytes[0] == 0x5b) {
                 //红外射击检测
                 ShootCheck.ins.ShootByInfrared(bytes); 
+            } else if (bytes[0] == 0x5a)
+            {
+                //手枪应答
+                //Debug.Log("瞄准模块数据长度" + bytes.Length);
+                string responseString = Decryptor.GetResponseStr(bytes);
+                BluetoothAim.ins.WriteData(responseString);
+            }
+            else if (bytes[0] == 0x5C)
+            {
+                //00 弹夹分离,01 上弹夹
+                ShootCheck.ins.UpdateTheMagazine(bytes);
+            
             }
             return;
         }
@@ -329,6 +340,14 @@ public class AimDeviceInfos
         if (SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked)  SB_EventSystem.ins.MoveSimulateMouse(newRotation);
     }
 
+    public byte[] InsertByteAtBeginning(byte[] originalArray, byte newByte)
+    {
+        byte[] newArray = new byte[originalArray.Length + 1];
+        newArray[0] = newByte;
+        Array.Copy(originalArray, 0, newArray, 1, originalArray.Length);
+        return newArray;
+    }
+
     private bool m_magCompleted;
     public void CorrectMagCompleted(bool value) { m_magCompleted = value; }
 

+ 81 - 65
Assets/BowArrow/Scripts/Bluetooth/ShootCheck.cs

@@ -18,28 +18,28 @@ public class ShootCheck : MonoBehaviour
     Queue<Vector3> keyAccList = new Queue<Vector3>();
     Queue<string> keyTimeList = new Queue<string>();
     public float shootSpeed;
-    public static ShootCheck ins; 
+    public static ShootCheck ins;
     [SerializeField] InputField ipInputField = default;
     public WebSocket webSocket;
     void Awake()
     {
         ins = this;
-    } 
+    }
 
- //用户输入时的变化
+    //用户输入时的变化
     public void ChangedValue(string value)
     {
         ipInputField.ActivateInputField();
-        Debug.Log("输入了"+value);
+        Debug.Log("输入了" + value);
     }
     public void EndValue(string value)
     {
-        Debug.Log("最终内容"+value);
+        Debug.Log("最终内容" + value);
     }
-//socket
-    public void StartSocket() 
+    //socket
+    public void StartSocket()
     {
-//socket
+        //socket
         string ipStr = ipInputField.text;//ipInputField.GetComponentInChildren<Text>();
         string serverIP = ipStr;
         // serverIP = "172.16.20.57";
@@ -61,16 +61,16 @@ public class ShootCheck : MonoBehaviour
         webSocket.Open();
     }
 
-    public void Destroy() 
+    public void Destroy()
     {
-        if (webSocket != null) 
+        if (webSocket != null)
         {
             webSocket.Close();
             webSocket = null;
         }
     }
 
-    void OnOpen(WebSocket ws) 
+    void OnOpen(WebSocket ws)
     {
         Debug.Log("OnOpen: ");
         webSocket.Send("unity");
@@ -81,39 +81,39 @@ public class ShootCheck : MonoBehaviour
         Debug.LogFormat("OnMessageRecv: msg={0}", message);
     }
 
-    void OnBinaryRecv(WebSocket ws, byte[] data) 
+    void OnBinaryRecv(WebSocket ws, byte[] data)
     {
         Debug.LogFormat("OnBinaryRecv: len={0}", data.Length);
     }
 
-    void OnClosed(WebSocket ws, UInt16 code, string message) 
+    void OnClosed(WebSocket ws, UInt16 code, string message)
     {
         Debug.LogFormat("OnClosed: code={0}, msg={1}", code, message);
         webSocket = null;
     }
 
-    void OnError(WebSocket ws, Exception ex)  
+    void OnError(WebSocket ws, Exception ex)
     {
         string errorMsg = string.Empty;
 #if !UNITY_WEBGL || UNITY_EDITOR
-            if (ws.InternalRequest.Response != null)
-            {
-                errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message);
-            }
+        if (ws.InternalRequest.Response != null)
+        {
+            errorMsg = string.Format("Status Code from Server: {0} and Message: {1}", ws.InternalRequest.Response.StatusCode, ws.InternalRequest.Response.Message);
+        }
 #endif
         Debug.LogFormat("OnError: error occured: {0}\n", (ex != null ? ex.Message : "Unknown Error " + errorMsg));
         webSocket = null;
     }
-//socket
+    //socket
 
 
     [SerializeField] InputField ArmBowInputField = default;
 
-    public void SetShootBackTime() 
+    public void SetShootBackTime()
     {
-        ArmBow.ins.shootBackTime=int.Parse(ArmBowInputField.text);
+        ArmBow.ins.shootBackTime = int.Parse(ArmBowInputField.text);
     }
-    public void OnBluetoothReady(BluetoothShoot bluetoothShoot) 
+    public void OnBluetoothReady(BluetoothShoot bluetoothShoot)
     {
         // if (LoginMgr.myUserInfo.arrowAccValue == 16)
         // {
@@ -154,21 +154,21 @@ public class ShootCheck : MonoBehaviour
             // }
             transportMode = 0;
             BluetoothShoot.ins.WriteData("NA");
-        } catch (Exception) {}
+        } catch (Exception) { }
     }
 
-    public void OnDataReceived(byte[] bytes) 
-    {    
+    public void OnDataReceived(byte[] bytes)
+    {
         string str1 = "byte=";
         if (webSocket != null)
-        { 
-            for (int i = 0; i < bytes.Length-1; i++)
+        {
+            for (int i = 0; i < bytes.Length - 1; i++)
             {
-                str1+= bytes[i];
+                str1 += bytes[i];
             }
-             
+
             // webSocket.Send(str2);    
-        } 
+        }
 
         string str2 = "";
 
@@ -178,14 +178,14 @@ public class ShootCheck : MonoBehaviour
             {
                 float acc = ToAcceleratedSpeed(bytes[i * 6 + 4], bytes[i * 6 + 5]);
 
-                string t = "(采样时间:"+(int)bytes[i * 6 + 0] + "分"+ (int)bytes[i * 6 + 1]+"秒"+ TwoByteToInt(bytes[i * 6 + 2], bytes[i * 6 + 3])+"毫秒)" ;
-                str2 += "加速度:"+ acc + t + "\n";
+                string t = "(采样时间:" + (int)bytes[i * 6 + 0] + "分" + (int)bytes[i * 6 + 1] + "秒" + TwoByteToInt(bytes[i * 6 + 2], bytes[i * 6 + 3]) + "毫秒)";
+                str2 += "加速度:" + acc + t + "\n";
 
-                if (ins.check(0, acc, 0, t) && ArmBow.ins) 
+                if (ins.check(0, acc, 0, t) && ArmBow.ins)
                 {
-                    ArmBow.ins.ADS_fire(true);  
+                    ArmBow.ins.ADS_fire(true);
                 }
-            }  
+            }
         }
         else if (transportMode == 1)
         {
@@ -195,21 +195,21 @@ public class ShootCheck : MonoBehaviour
                 float ay = ToAcceleratedSpeed(bytes[i * 11 + 7], bytes[i * 11 + 8]);
                 float az = ToAcceleratedSpeed(bytes[i * 11 + 9], bytes[i * 11 + 10]);
 
-                string t = "(采样时间:"+(int)bytes[i * 11 + 3] + "分"+ (int)bytes[i * 11 + 4]+"秒"+ TwoByteToInt(bytes[i * 11 + 1], bytes[i * 11 + 2])+"毫秒)" ;
-                str2 += "加速度:"+ay+t+"\n";
-                
-                if (ins.check(ax, ay, az, t) && ArmBow.ins) 
+                string t = "(采样时间:" + (int)bytes[i * 11 + 3] + "分" + (int)bytes[i * 11 + 4] + "秒" + TwoByteToInt(bytes[i * 11 + 1], bytes[i * 11 + 2]) + "毫秒)";
+                str2 += "加速度:" + ay + t + "\n";
+
+                if (ins.check(ax, ay, az, t) && ArmBow.ins)
                 {
-                    ArmBow.ins.ADS_fire(true);  
+                    ArmBow.ins.ADS_fire(true);
                 }
-            }   
+            }
         }
 
         if (webSocket != null)
-        { 
-            string str3 = str1+"\n"+str2;
-            webSocket.Send(str3);    
-        } 
+        {
+            string str3 = str1 + "\n" + str2;
+            webSocket.Send(str3);
+        }
     }
 
     float ToAcceleratedSpeed(byte b1, byte b2)
@@ -218,7 +218,7 @@ public class ShootCheck : MonoBehaviour
         // return (float)value / 32768 * LoginMgr.myUserInfo.arrowAccValue;
         return (float)value / 32768;
     }
-    
+
     int TwoByteToInt(byte b1, byte b2)
     {
         ushort twoByte = (ushort)(b1 * 256 + b2);
@@ -230,11 +230,11 @@ public class ShootCheck : MonoBehaviour
     {
         float acc = ay;
         DebugLine.show(acc); //这个不需要注释,静态函数内置判断
-        if (locked) 
+        if (locked)
         {
             return false;
         }
-        if (acc > cmd.getAcc()) 
+        if (acc > cmd.getAcc())
         {
             if (acc > maxAcc)
             {
@@ -253,7 +253,7 @@ public class ShootCheck : MonoBehaviour
             keyAccList.Enqueue(keyAcc);
             keyTimeList.Enqueue(t);
             return false;
-        } 
+        }
         else if (acc < cmd.getAcc() && maxAcc != 0) {
             //积分求初速度
             shootSpeed = 0;
@@ -273,7 +273,7 @@ public class ShootCheck : MonoBehaviour
                     shootSpeed += keyAcc.y * timeInterval;
                     shootSpeed -= (keyAcc.y - lasKeytAcc) * timeInterval / 2;
                 }
-                else if (keyAccIndex == 0 && keyAccList.Count == 1) 
+                else if (keyAccIndex == 0 && keyAccList.Count == 1)
                 {
                     shootSpeed = keyAcc.y * timeInterval;
                 }
@@ -284,7 +284,7 @@ public class ShootCheck : MonoBehaviour
             //是不是合法射出
             bool isLegalShoot = totalAy > totalAx && totalAy > totalAz;
 
-            if (isLegalShoot) 
+            if (isLegalShoot)
             {
                 //加速度acc的单位是g,最后需要乘上
                 shootSpeed *= 9.80665f;
@@ -294,26 +294,26 @@ public class ShootCheck : MonoBehaviour
                 // shootSpeed = Mathf.Sqrt(shootSpeed * shootSpeed * arrowWeight / LoginMgr.myUserInfo.actualArrowWeight);  
 
                 strShootSpeed += "箭的速度: " + shootSpeed + "\n";
-                
+
                 string str1 = strShootSpeed + "/////////检测到射出的数据////////////:\n";
-                for (int i=0;i<keyAccList.Count;i++)
+                for (int i = 0; i < keyAccList.Count; i++)
                 {
                     float keyAcc = keyAccList.ElementAt(i).y;
                     string time = keyTimeList.ElementAt(i);
-                
-                    str1 += "加速度:"+keyAcc+time+"\n"; 
+
+                    str1 += "加速度:" + keyAcc + time + "\n";
                 }
                 Debug.LogWarning(str1);
                 if (webSocket != null)
-                { 
-                    webSocket.Send(str1+"/////////检测到射出的数据////////////:\n");    
-                }    
+                {
+                    webSocket.Send(str1 + "/////////检测到射出的数据////////////:\n");
+                }
             }
-            
+
             //本轮计算结束
             keyAccList.Clear();
             keyTimeList.Clear();
-            
+
             maxAcc = 0;
             Dolock();
             Invoke("Unlock", 1.8f);
@@ -337,25 +337,25 @@ public class ShootCheck : MonoBehaviour
         //     totalTime = 0.3f;
         // }
         //校验和
-        int sumCheck = bytes[0] + bytes[1] + bytes[2] + bytes[3]; 
+        int sumCheck = bytes[0] + bytes[1] + bytes[2] + bytes[3];
         sumCheck &= 0xff;
         //校验和比较结果
         bool sumCheckRes = sumCheck == bytes[4];
         //弓轨速度
         float speed = 0.05f / (totalTime / 1000f);
         //通过动能定理求箭的速度(实体箭质量*实体箭速度^2=游戏中箭的质量*游戏中箭的速度^2)
-        shootSpeed = Mathf.Sqrt(speed * speed * CommonConfig.arrowWeight / UserSettings.ins.actualArrowWeight);  
+        shootSpeed = Mathf.Sqrt(speed * speed * CommonConfig.arrowWeight / UserSettings.ins.actualArrowWeight);
         //打印
         string logTxt = $"序号{id},时区1:{time1}毫秒,时区2:{time2}毫秒,校验:{sumCheckRes},弓轨速度:{speed}m/s,箭的速度:{shootSpeed}m/s";
         if (DebugForDevice.ins) DebugForDevice.ins.LogInfrared(logTxt);
         //收到射箭数据,就回复硬件,否则n毫秒后硬件会认为丢包进行重传
         try {
             if (sumCheckRes) BluetoothAim.ins.ReplyInfraredShoot(); //如果数据正确,则回复硬件
-        } catch (Exception) {}
+        } catch (Exception) { }
         //打印到nodejs
         try {
             ShootCheck.ins.webSocket.Send(logTxt);
-        } catch (Exception) {}
+        } catch (Exception) { }
         //调用游戏中的射箭接口
         AimHandler.ins.NotifyAxisOnShot();
         //OnArmBowFire,用于新手提示 GameRuleView 
@@ -372,7 +372,7 @@ public class ShootCheck : MonoBehaviour
         {
             //荒野射击
             WildAttack.SmartBowController.Instance.OnShooting(shootSpeed);
-        } else if (GameController.ins && GameController.ins.GetArmBowDoublePlayer(PlayerType.FirstPlayer)!=null) {
+        } else if (GameController.ins && GameController.ins.GetArmBowDoublePlayer(PlayerType.FirstPlayer) != null) {
             //本地双人模式下处理1p,2P 在 BluetoothAim 类处理
             GameController.ins.GetArmBowDoublePlayer(PlayerType.FirstPlayer).ADS_fire(true, shootSpeed);
         } else {
@@ -380,6 +380,22 @@ public class ShootCheck : MonoBehaviour
         }
     }
     public Action<float> OnGameShoot;
+    //分离弹夹事件
+    public Action OnGameUpdateTheMagazine;
+    /// <summary>
+    /// 0x00 - 弹夹分离 0x01 - 弹夹上膛
+    /// </summary>
+    /// <param name="bytes"></param>
+    public void UpdateTheMagazine(byte[] bytes) {
+        Debug.Log("切换弹夹后:" + System.BitConverter.ToString(bytes));
+        if (bytes[1] == 0x00 || bytes[1] == 0x01){
+            if (Billboard.ins) {
+                Billboard.ins.bulletManager.ResetBullets(); //game
+            } else {
+                OnGameUpdateTheMagazine?.Invoke(); //水果在gamingmanager
+            }
+        }
+    }
 
     //public Action<float> OnArmBowFire;
 

+ 39 - 3
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json

@@ -484,7 +484,7 @@
   "SignOutContent": "你确定要退出吗?",
 
   "CrossHair": "十字准心",
-  "CrossHairButton": "准心", 
+  "CrossHairButton": "准心",
 
   "ArrowAndBow": "手臂弓箭",
 
@@ -509,7 +509,43 @@
   **/
   "Infrared-title": "屏幕定位说明",
   "Infrared-ScreenPositioning": "进入屏幕定位",
-  "Infrared-Step1": "先进行投屏,并使摄像头支架位于电视的前方,调整摄像头支架使摄像头朝向电视屏幕。",
+  "Infrared-Step1": "先进行投屏,并使摄像头支架位于电视的前方,调整摄像头支架使摄像头朝向屏幕。",
   "Infrared-Step2_title": "屏幕定位说明",
-  "Infrared-Step2": "调整摄像头位置,并使电视尽量占满画面,确保可以拍摄到电视的四角。\n\n先点击自动功能进行屏幕识别,电视上会出现黑屏和白屏的图像,并通过软件进行识别。\n\n如自动识别的位置不准确,可以通过对图像亮度进行调节后,再次自动识别。如多次自动识别不成功,可自动识别的基础上,通过手指点击拖动定位区域四个角进行调整。\n\n屏幕位置只需定位一次,只要不移动摄像头的位置,就无需再定位。"
+  "Infrared-Step2": "调整摄像头位置和角度,并使电视尽量占满画面,确保可以拍摄到电视的四角。\n\n先点击自动功能进行屏幕识别,电视上会出现黑屏和白屏的图像,并通过软件进行识别。\n\n如自动识别不准确,可以通过调整摄像头位置或对图像对比度进行调节后,再次自动识别。如多次自动识别不合格,可点击手动功能,并通过手指点击拖动定位区域四个角进行调整。\n\n屏幕位置只需定位一次,只要不移动摄像头的位置,就无需再定位。",
+
+
+  /**
+  手动识别部分
+  **/
+  "TitleTip1": "调整摄像头位置和角度,确保可以拍摄到电视的四角。\n先点击自动按键进行屏幕识别,电视上会出现黑屏和\n白屏的图像,并通过软件进行识别",
+  "TitleTip2": "如自动识别不准确,可以通过调整摄像头位置或对图像对比度进行\n调节,使屏幕的边缘较清晰后,再次自动识别。如多次自动识别不\n成功,可点击手动功能,并通过手指点击拖动定位区域四个角进行\n调整。点击确认按键进入下一步。",
+  "Withdrawal" :"撤回",
+  "Automatic": "自动",
+  "Manual":"手动",
+  "Confirm":"确认",
+
+  /**
+   红外连接后游戏射击页面
+  **/
+  "TopTip": "如测试无异常,射中靶子后将完成初始化,并自动退出界面。",
+  "LeftTip": "测试光标是否顺滑,覆盖范围是否够大,若光标不能移动到屏幕大部分位置,请调整图像亮度或重新进行屏幕定位;若光标移动时的跟随度不好,请调整分辨率或更换性能更好的手机后,再重新进行设置。\n\n 若光标随机闪烁不同的位置或不在弓箭指向的位置,请点击环境测光寻找干扰源。",
+  "ReturnPreviousStep": "返回上一步",
+  "ResolutionSettings": "分辨率设置",
+  "AmbientMetering": "环境测光",
+  /**
+   红外连接后游戏测试页面
+  **/
+  "ShootingTest": "射击测试",
+  "ImageContrast": "图像对比度",
+  "ShootingTestTip": "保持画面里的屏幕没有白色光斑,如果有光斑,需要找出干扰光源关闭它,或调整摄像头支架位置以屏蔽它。",
+
+  "ModifyResolution": "修改分辨率",
+  "HighResolution": "高分辨率",
+  "LowResolution": "低分辨率",
+
+  /**
+   子弹部分
+  **/
+  "BulletTip": "请更换弹夹!"
+
 }

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

@@ -558,9 +558,46 @@
   /**
    红外定位部分
   **/
-  "Infrared-title": "Screen positioning instructions",
-  "Infrared-ScreenPositioning": "Enter screen positioning",
-  "Infrared-Step1": "First, project the screen and position the camera bracket in front of the TV. Adjust the camera bracket to face the TV screen.",
-  "Infrared-Step2_title": "Screen positioning instructions",
-  "Infrared-Step2": "Adjust the camera position and make sure the TV takes up as much of the picture as possible, ensuring that the four corners of the TV can be captured. \n\nFirstly, click on the automatic function for screen recognition. Black and white screen images will appear on the TV and will be recognized through software. \n\nIf the automatic recognition position is not accurate, it can be automatically recognized again by adjusting the brightness of the image. If the automatic recognition is unsuccessful multiple times, based on the automatic recognition, adjust the positioning area by clicking and dragging the four corners with your fingers. \n\nThe screen position only needs to be located once, as long as the camera position is not moved, there is no need to locate it again."
+  "Infrared-title": "Screen Positioning Instructions",
+  "Infrared-ScreenPositioning": "Enter Screen Positioning",
+  "Infrared-Step1": "First, perform screen casting, and position the camera mount in front of the TV. Adjust the camera mount so that the camera is facing the screen.",
+  "Infrared-Step2_title": "Screen Positioning Instructions",
+  "Infrared-Step2": "Adjust the position and angle of the camera, and make sure the TV fills the screen as much as possible, ensuring that all four corners of the TV are captured.\n\nFirst, click the automatic function to perform screen recognition. The TV will display black and white images, which will be recognized by the software.\n\nIf automatic recognition is not accurate, you can adjust the camera position or the image contrast, and then perform automatic recognition again. If multiple attempts at automatic recognition are unsuccessful, you can click the manual function and adjust the positioning area by clicking and dragging the four corners with your finger.\n\nScreen positioning only needs to be done once. As long as the camera position is not moved, repositioning is not necessary.",
+
+
+  /**
+  手动识别部分
+  **/
+  "TitleTip1": "Adjust the camera position and angle to ensure all four corners\n of the TV are captured. First, click the auto button for screen\n recognition. The TV will display black and white images, and \n the software will recognize them.",
+  "TitleTip2": "If the automatic recognition is inaccurate, adjust the camera\n position or the image contrast to make the screen edges clearer,\n then try the automatic recognition again. If multiple attempts of \nautomatic recognition fail, click the manual function and use your\n fingers to drag and position the four corners of the recognition\n area. Click the confirm button to proceed to the next step.",
+  "Withdrawal": "Withdrawal",
+  "Automatic": "Automatic",
+  "Manual": "Manual",
+  "Confirm": "Confirm",
+
+  /**
+   红外连接后游戏射击页面
+  **/
+  "TopTip": "If the test shows no abnormalities, the initialization will be completed after hitting the target, and the interface will automatically exit.",
+  "LeftTip": "Test if the cursor is smooth and if the coverage area is large enough. If the cursor cannot move to most of the screen positions, please adjust the image brightness or re-calibrate the screen. If the cursor does not follow well when moving, please adjust the resolution or switch to a higher-performance phone and then reconfigure.\n\nIf the cursor randomly flickers in different positions or is not in the direction of the bow and arrow, please click 'Ambient Metering' to find the interference source.",
+  "ReturnPreviousStep": "Return to Previous Step",
+  "ResolutionSettings": "Resolution Settings",
+  "AmbientMetering": "Ambient Metering",
+
+  /**
+   红外连接后游戏测试页面
+  **/
+  "ShootingTest": "Shooting Test",
+  "ImageContrast": "Image Contrast",
+  "ShootingTestTip": "Keep the screen in the picture free of white light spots. If there are light spots, you need to find the interfering light source and turn it off, or adjust the camera bracket position to block it.",
+
+  "ModifyResolution": "Modify Resolution",
+  "HighResolution": "High Resolution",
+  "LowResolution": "Low Resolution",
+
+
+  /**
+   子弹部分
+  **/
+  "BulletTip": "Please replace the magazine!"
 }

+ 2 - 0
Assets/BowArrow/Scripts/Effect/HitTargetNumber.cs

@@ -23,6 +23,8 @@ public class HitTargetNumber : MonoBehaviour
         seq.AppendInterval(1.88f);
         seq.Append(rtf.GetComponent<Text>().DOFade(0, 0.23f));
         seq.AppendCallback(delegate() {
+            // 先停止所有相关的tweens
+            DOTween.Kill(rtf);
             Destroy(this.gameObject);
         });
     }

+ 8 - 0
Assets/BowArrow/Scripts/Game/ArmBow.cs

@@ -200,6 +200,14 @@ public class ArmBow : MonoBehaviour
 
     public void ADS_fire(bool bAddCount = false) {
         if (!IsCanShoot() || banShoot || GameMgr.ins.gamePause || banLogic || GameMgr.ins.gameOver) return;
+        //枪模式连接的情况下需要判断子弹
+        if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun())
+        {
+            if (Billboard.ins.bulletManager.bulletZero()) return;
+            //发射消耗子弹
+            Billboard.ins.bulletManager.FireBullet();
+        }
+
         GameMgr.ins.gameMode.onBowShoot();
         //记录射箭
         if(bAddCount)GameMgr.ins.userGameAnalyse.onShootEvent();

+ 12 - 0
Assets/BowArrow/Scripts/Game/Billboard.cs

@@ -16,6 +16,10 @@ public class Billboard : MonoBehaviour
     private float arrowSpeedScale2 = 1;
 
 
+    //子弹部分
+    public BulletManager bulletManager;
+    [SerializeField] private GameObject canvasBB;
+
     public static Billboard ins;
 
     void Awake()
@@ -43,6 +47,14 @@ public class Billboard : MonoBehaviour
             speedLabel2.text = speedLabel.text;
             speedText2.transform.localPosition = speedText.transform.localPosition;
         }
+
+
+        //枪模式连接的情况下显示子弹
+        if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun())
+        {
+            canvasBB.transform.localPosition = new Vector3(0, -1.2f,0);
+            bulletManager.gameObject.SetActive(true);
+        }
     }
 
     void OnDestroy()

BIN
Assets/BowArrow/Textures/Home/GunHit/bullet-bg.png


+ 147 - 0
Assets/BowArrow/Textures/Home/GunHit/bullet-bg.png.meta

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

BIN
Assets/BowArrow/Textures/Home/GunHit/bullet-num-grey.png


+ 147 - 0
Assets/BowArrow/Textures/Home/GunHit/bullet-num-grey.png.meta

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

BIN
Assets/BowArrow/Textures/Home/GunHit/bullet-num-y.png


+ 147 - 0
Assets/BowArrow/Textures/Home/GunHit/bullet-num-y.png.meta

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

BIN
Assets/BowArrow/Textures/Home/GunHit/bullet.png


+ 147 - 0
Assets/BowArrow/Textures/Home/GunHit/bullet.png.meta

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

+ 122 - 4
Assets/FruitMaster/Scenes/FruitMaster.unity

@@ -5754,7 +5754,7 @@ RectTransform:
   - {fileID: 1615099055}
   - {fileID: 2100937662}
   m_Father: {fileID: 1074848465}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 0, y: 1}
@@ -7262,7 +7262,7 @@ MonoBehaviour:
   StartScores: 0
   AimingCrossPosMultiplier: 2
   Cam: {fileID: 429897968}
-  bulletSpeed: 100
+  bulletManager: {fileID: 6529531581629343901}
   hitLayers:
     serializedVersion: 2
     m_Bits: 72
@@ -18537,6 +18537,7 @@ RectTransform:
   - {fileID: 138885956}
   - {fileID: 2028265884}
   - {fileID: 1086173406}
+  - {fileID: 4303088160765688027}
   - {fileID: 338603180}
   - {fileID: 1259519030}
   - {fileID: 1345998012}
@@ -21590,7 +21591,7 @@ RectTransform:
   m_Children:
   - {fileID: 1516724503}
   m_Father: {fileID: 1074848465}
-  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}
@@ -23318,7 +23319,7 @@ RectTransform:
   - {fileID: 1711755913}
   - {fileID: 620174498}
   m_Father: {fileID: 1074848465}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 0}
   m_AnchorMax: {x: 1, y: 0}
@@ -38181,6 +38182,112 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 2147483647
   m_IsActive: 1
+--- !u!1001 &4303088160765688026
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1074848465}
+    m_Modifications:
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_Pivot.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_Pivot.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_RootOrder
+      value: 3
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 519.3
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 129.6
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 20
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 40
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4303088161757527230, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: m_Name
+      value: BulletManager_Fruit
+      objectReference: {fileID: 0}
+    - target: {fileID: 7001458610342891591, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+      propertyPath: parent
+      value: 
+      objectReference: {fileID: 1074848461}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+--- !u!224 &4303088160765688027 stripped
+RectTransform:
+  m_CorrespondingSourceObject: {fileID: 353728581831377826, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+  m_PrefabInstance: {fileID: 4303088160765688026}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1 &4642601994624651962
 GameObject:
   m_ObjectHideFlags: 0
@@ -38855,6 +38962,17 @@ MeshRenderer:
   m_SortingLayer: 0
   m_SortingOrder: 0
   m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &6529531581629343901 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 7001458610342891591, guid: b1c5419bdc30c9c498548b79b58bb92b, type: 3}
+  m_PrefabInstance: {fileID: 4303088160765688026}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e3ff1e8de644a534b8dd4637febe7067, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!23 &6587967573826007919
 MeshRenderer:
   m_ObjectHideFlags: 0

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

@@ -47,6 +47,9 @@ public class GamingManager : MonoBehaviour
 
     [SerializeField] private Camera Cam;
 
+    //子弹部分
+    [SerializeField] private BulletManager bulletManager;
+
     public const float ArrowSpeedMultiplier = 8.0f;
     public const float GravityMultiplier = 2.5f;
 
@@ -101,16 +104,29 @@ public class GamingManager : MonoBehaviour
         Debug.Assert(Cannon);
 
         ScreenMidPoint = new Vector2(Screen.width / 2, Screen.height / 2);
+
+
+        //枪模式连接的情况下需要判断子弹
+        if (!(BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun()))
+        {
+            bulletManager.gameObject.SetActive(false);
+        }
     }
 
     // Start is called before the first frame update
     void Start()
     {
+        //byte[] dataToDecrypt = { 0x5A, 0x76, 0xD1, 0x02, 0xEB, 0x8E, 0x5D };
+        //Decryptor.GetResponseStr(dataToDecrypt);
+
         Resume_btn.GetComponentInChildren<Button>().onClick.AddListener(ResumeGame);
         Pause_btn.GetComponentInChildren<Button>().onClick.AddListener(PauseGame);
         Exit_btn.GetComponentInChildren<Button>().onClick.AddListener(ExitGame);
 
-        if (ShootCheck.ins) ShootCheck.ins.OnGameShoot += SmartBowFireArrow;
+        if (ShootCheck.ins) {
+            ShootCheck.ins.OnGameShoot += SmartBowFireArrow;
+            ShootCheck.ins.OnGameUpdateTheMagazine += UpdateTheMagazine;
+        }
 
         AimingCross_img.gameObject.SetActive(false);
         Resume_btn.gameObject.SetActive(false);
@@ -131,7 +147,11 @@ public class GamingManager : MonoBehaviour
 
     private void OnDestroy()
     {
-        if (ShootCheck.ins) ShootCheck.ins.OnGameShoot -= SmartBowFireArrow;
+        if (ShootCheck.ins)
+        {
+            ShootCheck.ins.OnGameShoot -= SmartBowFireArrow;
+            ShootCheck.ins.OnGameUpdateTheMagazine -= UpdateTheMagazine;
+        }
         //InfraredDemo.running
         //if (!AimHandler.ins.bRuning9Axis()) InfraredDemo.infraredCameraHelper.OnPositionUpdate -= UpdateCrossHairPosition;
 
@@ -660,11 +680,21 @@ public class GamingManager : MonoBehaviour
 
     private void FireArrow(float speed, Vector3 dir,bool bAddCount = false)
     {
+
         bAddCountScore = bAddCount;
 
         if (bGameStarted && !bGamePaused && FireCooldownTime_Current == 0f)
         {
             FireCooldownTime_Current = FireCooldownTime;
+
+            //枪模式连接的情况下需要判断子弹
+            if (BluetoothAim.ins && BluetoothAim.ins.isMainConnectToGun())
+            {
+                if (bulletManager.bulletZero()) return;
+                //发射消耗子弹
+                bulletManager.FireBullet();
+            }
+
             Vector3 spawnPos = Cam.transform.position + dir;
             GameObject arrow = Instantiate(GlobalData.MyDeviceMode == DeviceMode.Archery? ArrowPrefab: BulletPrefab, spawnPos, Quaternion.FromToRotation(-Vector3.right, dir));
             if (GlobalData.MyDeviceMode == DeviceMode.Archery)
@@ -692,7 +722,12 @@ public class GamingManager : MonoBehaviour
                 userGameAnalyse1.changeShootingCount(1);
         }
     }
-
+    /// <summary>
+    /// 手枪子弹刷新
+    /// </summary>
+    private void UpdateTheMagazine() {
+        bulletManager.ResetBullets();
+    }
     private void SmartBowFireArrow(float speed)
     {
         if (Time.time == 0) return;

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

@@ -37,7 +37,7 @@ public class JCFruitMaster : MonoBehaviour
         aimingCross.enabled = open;
 
         //读取准心值
-        if (!AimHandler.ins.bRuning9Axis() && InfraredDemo._ins) SetOnlyShow(InfraredDemo._ins.getCrosshairValue() == 1);
+        if (AimHandler.ins&&!AimHandler.ins.bRuning9Axis() && InfraredDemo._ins) SetOnlyShow(InfraredDemo._ins.getCrosshairValue() == 1);
 
     }
 

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

@@ -106,7 +106,7 @@ public class OverallLogics : MonoBehaviour
     /// </summary>
     public void SetCrosshairOutLight() {
 
-        if (AimHandler.ins.bRuning9Axis()) return;
+        if (AimHandler.ins&&AimHandler.ins.bRuning9Axis()) return;
         //显示准心控制
         CrossHairBtn.gameObject.SetActive(true);
 

+ 33 - 5
Assets/InfraredProject/Resources/WebCameraView.prefab

@@ -8124,7 +8124,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &8173640441509690785
 RectTransform:
   m_ObjectHideFlags: 0
@@ -8143,10 +8143,10 @@ RectTransform:
   m_Father: {fileID: 8173640441273753839}
   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}
-  m_AnchoredPosition: {x: 321.0616, y: -589.9922}
-  m_SizeDelta: {x: 340.7788, y: 131.002}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 1, y: 1}
   m_Pivot: {x: 0.5, y: 1}
 --- !u!222 &8173640441509690787
 CanvasRenderer:
@@ -8728,6 +8728,22 @@ PrefabInstance:
   m_Modification:
     m_TransformParent: {fileID: 8173640441273753839}
     m_Modifications:
+    - target: {fileID: 464229095961303548, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: AudioTarget
+      value: 
+      objectReference: {fileID: 8173640441509690718}
+    - target: {fileID: 464229095961303548, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: DefaultWidth
+      value: 320
+      objectReference: {fileID: 0}
+    - target: {fileID: 464229095961303548, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: DefaultHeight
+      value: 240
+      objectReference: {fileID: 0}
+    - target: {fileID: 464229095961303548, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: RenderTargets.Array.size
+      value: 1
+      objectReference: {fileID: 0}
     - target: {fileID: 464229095961303548, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
       propertyPath: RenderTargets.Array.data[0]
       value: 
@@ -8808,6 +8824,18 @@ PrefabInstance:
       propertyPath: PreferH264
       value: 1
       objectReference: {fileID: 0}
+    - target: {fileID: 7716261784260357304, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: UACEnabled
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7716261784260357304, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: DefaultWidth
+      value: 320
+      objectReference: {fileID: 0}
+    - target: {fileID: 7716261784260357304, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
+      propertyPath: DefaultHeight
+      value: 240
+      objectReference: {fileID: 0}
     - target: {fileID: 7716261784260357304, guid: fa65cd0b0e2ffad4180eabf8fe755f9a, type: 3}
       propertyPath: RenderBeforeSceneRendering
       value: 1

+ 2 - 40
Assets/InfraredProject/UVC4UnityAndroidPlugin/Scripts/UVCManager.cs

@@ -972,43 +972,10 @@ namespace Serenegiant.UVC
             var info = CreateCameraIfNotExist(device);
             if ((info != null) && !info.IsPreviewing)
             {
-
-
                 Debug.Log("开始渲染StartPreview DefaultWidth:" + DefaultWidth + " , DefaultHeight:" + DefaultHeight);
                 int width = DefaultWidth;
                 int height = DefaultHeight;
-
-                //				var supportedVideoSize = GetSupportedVideoSize(deviceName);
-                //				if (supportedVideoSize == null)
-                //				{
-                //					throw new ArgumentException("fauled to get supported video size");
-                //				}
-
-                //				// 解像度の選択処理
-                //				if ((UVCDrawers != null) && (UVCDrawers.Length > 0))
-                //				{
-                //					foreach (var drawer in UVCDrawers)
-                //					{
-                //						if ((drawer is IUVCDrawer) && ((drawer as IUVCDrawer).IsUVCEnabled(this, info.device)))
-                //						{
-                //							var size = (drawer as IUVCDrawer).OnUVCSelectSize(this, info.device, supportedVideoSize);
-                //#if (!NDEBUG && DEBUG && ENABLE_LOG)
-                //							Console.WriteLine($"{TAG}StartPreview:selected={size}");
-                //#endif
-                //							if (size != null)
-                //							{   // 一番最初に見つかった描画可能なIUVCDrawersがnull以外を返せばそれを使う
-                //								width = size.Width;
-                //								height = size.Height;
-                //								break;
-                //							}
-                //						}
-                //					}
-                //				}
-
-                // FIXME 対応解像度の確認処理
-#if (!NDEBUG && DEBUG && ENABLE_LOG)
-				Console.WriteLine($"{TAG}StartPreview:({width}x{height}),id={device.id}");
-#endif
+                Debug.Log($"{TAG}StartPreview:({width}x{height}),id={device.id}");
                 int[] frameTypes = {
                     PreferH264 ? FRAME_TYPE_H264 : FRAME_TYPE_MJPEG,
                     PreferH264 ? FRAME_TYPE_MJPEG : FRAME_TYPE_H264,
@@ -1026,10 +993,7 @@ namespace Serenegiant.UVC
                 info.activeId = device.id;
                 info.UpdateCtrls();
                 mainContext.Post(__ =>
-                {   // テクスチャの生成はメインスレッドで行わないといけない
-#if (!NDEBUG && DEBUG && ENABLE_LOG)
-					Console.WriteLine($"{TAG}映像受け取り用テクスチャ生成:({width}x{height})");
-#endif
+                {   
                     Texture2D tex = new Texture2D(
                             width, height,
                             TextureFormat.ARGB32,
@@ -1042,8 +1006,6 @@ namespace Serenegiant.UVC
                     Debug.Log(TAG + "nativeTexPtr:"+ nativeTexPtr.ToInt32() + "[" + width + "," + height + "]");
                     Start(device.id, nativeTexPtr.ToInt32());
                     HandleOnStartPreviewEvent(info);
-                    //测试
-                    //InfraredDemo._ins.MyCameraRender2.texture = info.previewTexture;
                     info.StartRender(this, RenderBeforeSceneRendering);
                 }, null);
             }

+ 3 - 3
Assets/InfraredProject/WebCamera/Script/PcWebCamera.cs

@@ -131,13 +131,13 @@ public class PcWebCamera : MonoBehaviour
             Debug.LogError("开启失败,用户未授予摄像头权限!");
         }
     }
-    private int[] widths = { 320, 640, 640 };
-    private int[] heights = { 240, 360, 480 };
+    private int[] widths = { 320, 160 };
+    private int[] heights = { 240, 120 };
     private List<Resolution> supportedResolutions = new List<Resolution>();
 
     private IEnumerator DetectResolutions()
     {
-        for (int i = 0; i < 3; i++)
+        for (int i = 0; i < 2; i++)
         {
             int _width = widths[i], _height = heights[i];
             _webCamTexture = new WebCamTexture(deviceName, _width, _height, fps);

+ 8 - 0
Assets/SmartBow/Resources/Common.meta

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

+ 1188 - 0
Assets/SmartBow/Resources/Common/BulletManager.prefab

@@ -0,0 +1,1188 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &237122600383828186
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7884716394307281759}
+  - component: {fileID: 5590606344641434929}
+  - component: {fileID: 3394545336590347992}
+  m_Layer: 5
+  m_Name: Image (9)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7884716394307281759
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 237122600383828186}
+  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: 5302055793060261728}
+  m_RootOrder: 8
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 677.60004, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5590606344641434929
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 237122600383828186}
+  m_CullTransparentMesh: 1
+--- !u!114 &3394545336590347992
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 237122600383828186}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &440043521010991320
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3261241466425081216}
+  - component: {fileID: 3351866092722874535}
+  m_Layer: 0
+  m_Name: BulletManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!4 &3261241466425081216
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 440043521010991320}
+  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: 4637659189547032}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &3351866092722874535
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 440043521010991320}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e3ff1e8de644a534b8dd4637febe7067, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  bulletImages:
+  - {fileID: 9018833200973336421}
+  - {fileID: 1199979718228008356}
+  - {fileID: 8506044881454181742}
+  - {fileID: 4245414753323581695}
+  - {fileID: 5812994965590544079}
+  - {fileID: 4942637001303907194}
+  - {fileID: 8410649483632033525}
+  - {fileID: 4607124433585730312}
+  - {fileID: 3394545336590347992}
+  bulletSprite: {fileID: 21300000, guid: 8ea56d88b1c3009488b29359a2fa2698, type: 3}
+  emptyBulletSprite: {fileID: 21300000, guid: 434fe1c3dda4d2b4eb8da12815e1622d, type: 3}
+  parent: {fileID: 0}
+--- !u!1 &1876679421156954069
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4637659189547032}
+  - component: {fileID: 7796246431171135654}
+  - component: {fileID: 2630122734340916201}
+  - component: {fileID: 4820000028359458175}
+  m_Layer: 5
+  m_Name: Canvas
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4637659189547032
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1876679421156954069}
+  m_LocalRotation: {x: -0, y: -1, z: -0, w: 0.00008821487}
+  m_LocalPosition: {x: 0, y: 0, z: 0.1}
+  m_LocalScale: {x: 0.0054, y: 0.006576, z: 0.006576}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 7748541103728166431}
+  m_Father: {fileID: 3261241466425081216}
+  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: 3.87}
+  m_SizeDelta: {x: 2532, y: 1170}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!223 &7796246431171135654
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1876679421156954069}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 2
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &2630122734340916201
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1876679421156954069}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 1
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 2532, y: 1170}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 1
+--- !u!114 &4820000028359458175
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1876679421156954069}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!1 &2814030836988240800
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7748541103728166431}
+  - component: {fileID: 4858224774007863967}
+  - component: {fileID: 924372367743447998}
+  m_Layer: 5
+  m_Name: 'BulletBackground '
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7748541103728166431
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2814030836988240800}
+  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: 2527926990235505387}
+  - {fileID: 5302055793060261728}
+  m_Father: {fileID: 4637659189547032}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 1016, y: 280}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4858224774007863967
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2814030836988240800}
+  m_CullTransparentMesh: 1
+--- !u!114 &924372367743447998
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2814030836988240800}
+  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: ae73c256109a6484c98f9758e566c9fd, 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 &2889415493517559946
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1342068690025331436}
+  - component: {fileID: 1151218025332977756}
+  - component: {fileID: 4607124433585730312}
+  m_Layer: 5
+  m_Name: Image (8)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1342068690025331436
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2889415493517559946}
+  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: 5302055793060261728}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 597.4, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1151218025332977756
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2889415493517559946}
+  m_CullTransparentMesh: 1
+--- !u!114 &4607124433585730312
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2889415493517559946}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &3135223686767979369
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8275029792431634851}
+  - component: {fileID: 7817869275866837290}
+  - component: {fileID: 4942637001303907194}
+  m_Layer: 5
+  m_Name: Image (6)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8275029792431634851
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3135223686767979369}
+  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: 5302055793060261728}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 437, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7817869275866837290
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3135223686767979369}
+  m_CullTransparentMesh: 1
+--- !u!114 &4942637001303907194
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3135223686767979369}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &3480010623487106930
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6106352564535040600}
+  - component: {fileID: 1265833238619163280}
+  - component: {fileID: 1199979718228008356}
+  m_Layer: 5
+  m_Name: Image (2)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6106352564535040600
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3480010623487106930}
+  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: 5302055793060261728}
+  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: 116.2, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1265833238619163280
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3480010623487106930}
+  m_CullTransparentMesh: 1
+--- !u!114 &1199979718228008356
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3480010623487106930}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &3605749099721469672
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1685006684993908114}
+  - component: {fileID: 7267758044630041458}
+  - component: {fileID: 8506044881454181742}
+  m_Layer: 5
+  m_Name: Image (3)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1685006684993908114
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3605749099721469672}
+  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: 5302055793060261728}
+  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: 196.4, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7267758044630041458
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3605749099721469672}
+  m_CullTransparentMesh: 1
+--- !u!114 &8506044881454181742
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3605749099721469672}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &3808575688904122451
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2821072729052929892}
+  - component: {fileID: 3368331972432479913}
+  - component: {fileID: 4245414753323581695}
+  m_Layer: 5
+  m_Name: Image (4)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2821072729052929892
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3808575688904122451}
+  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: 5302055793060261728}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 276.59998, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3368331972432479913
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3808575688904122451}
+  m_CullTransparentMesh: 1
+--- !u!114 &4245414753323581695
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3808575688904122451}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4840100743731196857
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7802431997391282719}
+  - component: {fileID: 2088055961532663176}
+  - component: {fileID: 5812994965590544079}
+  m_Layer: 5
+  m_Name: Image (5)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7802431997391282719
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4840100743731196857}
+  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: 5302055793060261728}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 356.8, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &2088055961532663176
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4840100743731196857}
+  m_CullTransparentMesh: 1
+--- !u!114 &5812994965590544079
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4840100743731196857}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4988094504529977066
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7082593504445651580}
+  - component: {fileID: 8026178216687944856}
+  - component: {fileID: 8410649483632033525}
+  m_Layer: 5
+  m_Name: Image (7)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7082593504445651580
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4988094504529977066}
+  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: 5302055793060261728}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 517.2, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &8026178216687944856
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4988094504529977066}
+  m_CullTransparentMesh: 1
+--- !u!114 &8410649483632033525
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4988094504529977066}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &5184477801617806388
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2527926990235505387}
+  - component: {fileID: 8036128525140724704}
+  - component: {fileID: 8501143224124895142}
+  m_Layer: 5
+  m_Name: left
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &2527926990235505387
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5184477801617806388}
+  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: 272144924207011420}
+  m_Father: {fileID: 7748541103728166431}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.5}
+  m_AnchorMax: {x: 0, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 243, y: 280}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &8036128525140724704
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5184477801617806388}
+  m_CullTransparentMesh: 1
+--- !u!114 &8501143224124895142
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5184477801617806388}
+  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: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &8428517925564255214
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 659592371808692769}
+  - component: {fileID: 5663780340981019248}
+  - component: {fileID: 9018833200973336421}
+  m_Layer: 5
+  m_Name: Image (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &659592371808692769
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8428517925564255214}
+  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: 5302055793060261728}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 36, y: -140}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5663780340981019248
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8428517925564255214}
+  m_CullTransparentMesh: 1
+--- !u!114 &9018833200973336421
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8428517925564255214}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &8463792242847240694
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 272144924207011420}
+  - component: {fileID: 5136094920789205}
+  - component: {fileID: 8964524545126572148}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &272144924207011420
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8463792242847240694}
+  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: 2527926990235505387}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 200, y: 200}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5136094920789205
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8463792242847240694}
+  m_CullTransparentMesh: 1
+--- !u!114 &8964524545126572148
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8463792242847240694}
+  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: ace54335c90ed0c4392bde89aa5f5b41, 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 &8499395970430086677
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5302055793060261728}
+  - component: {fileID: 1652016584091045658}
+  - component: {fileID: 8487150161114568812}
+  - component: {fileID: 3680085382287210127}
+  m_Layer: 5
+  m_Name: right
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5302055793060261728
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8499395970430086677}
+  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: 659592371808692769}
+  - {fileID: 6106352564535040600}
+  - {fileID: 1685006684993908114}
+  - {fileID: 2821072729052929892}
+  - {fileID: 7802431997391282719}
+  - {fileID: 8275029792431634851}
+  - {fileID: 7082593504445651580}
+  - {fileID: 1342068690025331436}
+  - {fileID: 7884716394307281759}
+  m_Father: {fileID: 7748541103728166431}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 771.8, y: 280}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &1652016584091045658
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8499395970430086677}
+  m_CullTransparentMesh: 1
+--- !u!114 &8487150161114568812
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8499395970430086677}
+  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: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &3680085382287210127
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8499395970430086677}
+  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: 50
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 3
+  m_Spacing: 0
+  m_ChildForceExpandWidth: 1
+  m_ChildForceExpandHeight: 1
+  m_ChildControlWidth: 0
+  m_ChildControlHeight: 0
+  m_ChildScaleWidth: 0
+  m_ChildScaleHeight: 0
+  m_ReverseArrangement: 0

+ 7 - 0
Assets/SmartBow/Resources/Common/BulletManager.prefab.meta

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

+ 1092 - 0
Assets/SmartBow/Resources/Common/BulletManager_Fruit.prefab

@@ -0,0 +1,1092 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4303088160039079903
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160039079900}
+  - component: {fileID: 4303088160039079890}
+  - component: {fileID: 4303088160039079901}
+  m_Layer: 5
+  m_Name: Image (2)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160039079900
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160039079903}
+  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: 4303088160474522467}
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160039079890
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160039079903}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160039079901
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160039079903}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088160119881689
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160119881694}
+  - component: {fileID: 4303088160119881692}
+  - component: {fileID: 4303088160119881695}
+  m_Layer: 5
+  m_Name: Image (9)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160119881694
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160119881689}
+  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: 4303088160474522467}
+  m_RootOrder: 8
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160119881692
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160119881689}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160119881695
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160119881689}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088160285286966
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160285286967}
+  - component: {fileID: 4303088160285286965}
+  - component: {fileID: 4303088160285286964}
+  m_Layer: 5
+  m_Name: Image
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160285286967
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160285286966}
+  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: 4303088160781705348}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 200, y: 200}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160285286965
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160285286966}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160285286964
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160285286966}
+  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: ace54335c90ed0c4392bde89aa5f5b41, 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 &4303088160356471683
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160356471680}
+  - component: {fileID: 4303088160356471686}
+  - component: {fileID: 4303088160356471681}
+  m_Layer: 5
+  m_Name: Image (5)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160356471680
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160356471683}
+  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: 4303088160474522467}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160356471686
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160356471683}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160356471681
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160356471683}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088160474522466
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160474522467}
+  - component: {fileID: 4303088160474522470}
+  - component: {fileID: 4303088160474522465}
+  - component: {fileID: 4303088160474522464}
+  m_Layer: 5
+  m_Name: right
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160474522467
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160474522466}
+  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: 4303088161540456216}
+  - {fileID: 4303088160039079900}
+  - {fileID: 4303088161959514139}
+  - {fileID: 4303088160691798757}
+  - {fileID: 4303088160356471680}
+  - {fileID: 4303088160767665757}
+  - {fileID: 4303088161442305734}
+  - {fileID: 4303088161449957342}
+  - {fileID: 4303088160119881694}
+  m_Father: {fileID: 4303088160810168236}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 771.8, y: 280}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &4303088160474522470
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160474522466}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160474522465
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160474522466}
+  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: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &4303088160474522464
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160474522466}
+  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: 50
+    m_Top: 0
+    m_Bottom: 0
+  m_ChildAlignment: 3
+  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 &4303088160691798756
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160691798757}
+  - component: {fileID: 4303088160691798683}
+  - component: {fileID: 4303088160691798682}
+  m_Layer: 5
+  m_Name: Image (4)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160691798757
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160691798756}
+  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: 4303088160474522467}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160691798683
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160691798756}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160691798682
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160691798756}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088160767665756
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160767665757}
+  - component: {fileID: 4303088160767665747}
+  - component: {fileID: 4303088160767665746}
+  m_Layer: 5
+  m_Name: Image (6)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160767665757
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160767665756}
+  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: 4303088160474522467}
+  m_RootOrder: 5
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160767665747
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160767665756}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160767665746
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160767665756}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088160781705351
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160781705348}
+  - component: {fileID: 4303088160781705402}
+  - component: {fileID: 4303088160781705349}
+  m_Layer: 5
+  m_Name: left
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160781705348
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160781705351}
+  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: 4303088160285286967}
+  m_Father: {fileID: 4303088160810168236}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.5}
+  m_AnchorMax: {x: 0, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 243, y: 280}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &4303088160781705402
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160781705351}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160781705349
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160781705351}
+  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: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &4303088160810168239
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088160810168236}
+  - component: {fileID: 4303088160810168226}
+  - component: {fileID: 4303088160810168237}
+  m_Layer: 5
+  m_Name: 'BulletBackground '
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088160810168236
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160810168239}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.5, y: 0.5, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 4303088160781705348}
+  - {fileID: 4303088160474522467}
+  m_Father: {fileID: 353728581831377826}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 1016, y: 280}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088160810168226
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160810168239}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088160810168237
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088160810168239}
+  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: ae73c256109a6484c98f9758e566c9fd, 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 &4303088161442305729
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088161442305734}
+  - component: {fileID: 4303088161442305732}
+  - component: {fileID: 4303088161442305735}
+  m_Layer: 5
+  m_Name: Image (7)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088161442305734
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161442305729}
+  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: 4303088160474522467}
+  m_RootOrder: 6
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088161442305732
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161442305729}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088161442305735
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161442305729}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088161449957337
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088161449957342}
+  - component: {fileID: 4303088161449957340}
+  - component: {fileID: 4303088161449957343}
+  m_Layer: 5
+  m_Name: Image (8)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088161449957342
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161449957337}
+  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: 4303088160474522467}
+  m_RootOrder: 7
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088161449957340
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161449957337}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088161449957343
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161449957337}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088161540456219
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088161540456216}
+  - component: {fileID: 4303088161540456222}
+  - component: {fileID: 4303088161540456217}
+  m_Layer: 5
+  m_Name: Image (1)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088161540456216
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161540456219}
+  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: 4303088160474522467}
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088161540456222
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161540456219}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088161540456217
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161540456219}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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 &4303088161757527230
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 353728581831377826}
+  - component: {fileID: 7001458610342891591}
+  m_Layer: 0
+  m_Name: BulletManager_Fruit
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &353728581831377826
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161757527230}
+  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: 4303088160810168236}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &7001458610342891591
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161757527230}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e3ff1e8de644a534b8dd4637febe7067, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  bulletImages:
+  - {fileID: 4303088161540456217}
+  - {fileID: 4303088160039079901}
+  - {fileID: 4303088161959514136}
+  - {fileID: 4303088160691798682}
+  - {fileID: 4303088160356471681}
+  - {fileID: 4303088160767665746}
+  - {fileID: 4303088161442305735}
+  - {fileID: 4303088161449957343}
+  - {fileID: 4303088160119881695}
+  bulletSprite: {fileID: 21300000, guid: 8ea56d88b1c3009488b29359a2fa2698, type: 3}
+  emptyBulletSprite: {fileID: 21300000, guid: 434fe1c3dda4d2b4eb8da12815e1622d, type: 3}
+  parent: {fileID: 0}
+--- !u!1 &4303088161959514138
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4303088161959514139}
+  - component: {fileID: 4303088161959514137}
+  - component: {fileID: 4303088161959514136}
+  m_Layer: 5
+  m_Name: Image (3)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4303088161959514139
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161959514138}
+  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: 4303088160474522467}
+  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: 72, y: 145}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4303088161959514137
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161959514138}
+  m_CullTransparentMesh: 1
+--- !u!114 &4303088161959514136
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4303088161959514138}
+  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: 434fe1c3dda4d2b4eb8da12815e1622d, 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

+ 7 - 0
Assets/SmartBow/Resources/Common/BulletManager_Fruit.prefab.meta

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

+ 164 - 0
Assets/SmartBow/Resources/Common/TipBulletNumber.prefab

@@ -0,0 +1,164 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1260546180181321422
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4955470051127942227}
+  - component: {fileID: 9181745763393146026}
+  - component: {fileID: 1925971231763318881}
+  - component: {fileID: 1424465692820929678}
+  - component: {fileID: 3650883179258120243}
+  m_Layer: 5
+  m_Name: OutTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4955470051127942227
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  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: 783234584897278844}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 300, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &9181745763393146026
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_CullTransparentMesh: 0
+--- !u!114 &1925971231763318881
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  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: 0.107547104, b: 0.17932925, 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: 32
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u8BF7\u66F4\u6362\u5F39\u5939\uFF01"
+--- !u!114 &1424465692820929678
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 1, g: 1, b: 1, a: 0.5}
+  m_EffectDistance: {x: 1, y: -1}
+  m_UseGraphicAlpha: 1
+--- !u!114 &3650883179258120243
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: BulletTip
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
+--- !u!1 &2633200938255157098
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 783234584897278844}
+  - component: {fileID: 258257244535761942}
+  m_Layer: 5
+  m_Name: TipBulletNumber
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &783234584897278844
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  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: 4955470051127942227}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 0}
+  m_AnchoredPosition: {x: 0, y: 200}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &258257244535761942
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4b4405f9ab2064e47addd87c8501c043, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 7 - 0
Assets/SmartBow/Resources/Common/TipBulletNumber.prefab.meta

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

+ 58 - 107
Assets/SmartBow/Resources/SmartBow/Prefabs/Views/Home/InfraredScreenPositioningView.prefab

@@ -352,6 +352,7 @@ GameObject:
   - component: {fileID: 1574323685}
   - component: {fileID: 1574323687}
   - component: {fileID: 1574323686}
+  - component: {fileID: 4505219932117561472}
   m_Layer: 5
   m_Name: Text (Legacy)
   m_TagString: Untagged
@@ -421,6 +422,21 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u56FE\u50CF\u5BF9\u6BD4\u5EA6"
+--- !u!114 &4505219932117561472
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1574323684}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: ImageContrast
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &1657718194
 GameObject:
   m_ObjectHideFlags: 0
@@ -846,102 +862,6 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
---- !u!1 &30004706745659004
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1210159288084954855}
-  - component: {fileID: 2560194577531154597}
-  - component: {fileID: 1723412550526208201}
-  - component: {fileID: 8435948294167572824}
-  m_Layer: 5
-  m_Name: Title
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 0
---- !u!224 &1210159288084954855
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 30004706745659004}
-  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: 518485857765021418}
-  m_RootOrder: 1
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -808, y: 460}
-  m_SizeDelta: {x: 600, y: 30}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &2560194577531154597
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 30004706745659004}
-  m_CullTransparentMesh: 1
---- !u!114 &1723412550526208201
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 30004706745659004}
-  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.1882353, g: 0.22352941, b: 0.22352941, 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: 42
-    m_FontStyle: 1
-    m_BestFit: 0
-    m_MinSize: 0
-    m_MaxSize: 52
-    m_Alignment: 3
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 1
-    m_VerticalOverflow: 1
-    m_LineSpacing: 1
-  m_Text: Connection Guidance
---- !u!114 &8435948294167572824
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 30004706745659004}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  textKey: Gyro_Title
-  layoutRebuildObject: {fileID: 0}
-  languageFontSizes: []
 --- !u!1 &450749006381852330
 GameObject:
   m_ObjectHideFlags: 0
@@ -1527,12 +1447,12 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 1138206598639200060}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: 
+  textKey: Automatic
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &1157595948825060677
@@ -1667,7 +1587,7 @@ RectTransform:
   - {fileID: 7855798539375045847}
   - {fileID: 4365742840661124964}
   m_Father: {fileID: 518485857765021418}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
@@ -2853,6 +2773,7 @@ GameObject:
   - component: {fileID: 6291751542338047667}
   - component: {fileID: 3260208961506221279}
   - component: {fileID: 2687458959944016227}
+  - component: {fileID: 7399493526703182411}
   m_Layer: 5
   m_Name: TextTip 2
   m_TagString: Untagged
@@ -2922,6 +2843,21 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u5982\u81EA\u52A8\u8BC6\u522B\u4E0D\u51C6\u786E\uFF0C\u53EF\u4EE5\u901A\u8FC7\u8C03\u6574\u6444\u50CF\u5934\u4F4D\u7F6E\u6216\u5BF9\u56FE\u50CF\u5BF9\u6BD4\u5EA6\u8FDB\u884C\n\u8C03\u8282\uFF0C\u4F7F\u5C4F\u5E55\u7684\u8FB9\u7F18\u8F83\u6E05\u6670\u540E\uFF0C\u518D\u6B21\u81EA\u52A8\u8BC6\u522B\u3002\u5982\u591A\u6B21\u81EA\u52A8\u8BC6\u522B\u4E0D\n\u6210\u529F\uFF0C\u53EF\u70B9\u51FB\u624B\u52A8\u529F\u80FD\uFF0C\u5E76\u901A\u8FC7\u624B\u6307\u70B9\u51FB\u62D6\u52A8\u5B9A\u4F4D\u533A\u57DF\u56DB\u4E2A\u89D2\u8FDB\u884C\n\u8C03\u6574\u3002\u70B9\u51FB\u786E\u8BA4\u6309\u952E\u8FDB\u5165\u4E0B\u4E00\u6B65\u3002"
+--- !u!114 &7399493526703182411
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4901933954594160457}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: TitleTip2
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &5200702324567003523
 GameObject:
   m_ObjectHideFlags: 0
@@ -3082,12 +3018,12 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 5505594364145592592}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: 
+  textKey: Manual
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &6068488703563348653
@@ -3122,7 +3058,6 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 5352980848473047839}
-  - {fileID: 1210159288084954855}
   - {fileID: 7371505907208373617}
   - {fileID: 1721352479526113342}
   m_Father: {fileID: 1063506209527944585}
@@ -3342,6 +3277,7 @@ GameObject:
   - component: {fileID: 213060852178376601}
   - component: {fileID: 4859593515274267305}
   - component: {fileID: 3128554242021740522}
+  - component: {fileID: 8092827687625333888}
   m_Layer: 5
   m_Name: TextTip
   m_TagString: Untagged
@@ -3411,6 +3347,21 @@ MonoBehaviour:
     m_VerticalOverflow: 1
     m_LineSpacing: 1
   m_Text: "\u8C03\u6574\u6444\u50CF\u5934\u4F4D\u7F6E\u548C\u89D2\u5EA6\uFF0C\u786E\u4FDD\u53EF\u4EE5\u62CD\u6444\u5230\u7535\u89C6\u7684\u56DB\u89D2\u3002\n\u5148\u70B9\u51FB\u81EA\u52A8\u6309\u952E\u8FDB\u884C\u5C4F\u5E55\u8BC6\u522B\uFF0C\u7535\u89C6\u4E0A\u4F1A\u51FA\u73B0\u9ED1\u5C4F\u548C\n\u767D\u5C4F\u7684\u56FE\u50CF\uFF0C\u5E76\u901A\u8FC7\u8F6F\u4EF6\u8FDB\u884C\u8BC6\u522B\u3002"
+--- !u!114 &8092827687625333888
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6474032259244959646}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  textKey: TitleTip1
+  layoutRebuildObject: {fileID: 0}
+  languageFontSizes: []
 --- !u!1 &6607547226471776927
 GameObject:
   m_ObjectHideFlags: 0
@@ -3990,12 +3941,12 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 7441345589400636852}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: 
+  textKey: Withdrawal
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &7535762986329011097
@@ -4036,7 +3987,7 @@ RectTransform:
   - {fileID: 2480474177723386199}
   - {fileID: 2371513326884009388}
   m_Father: {fileID: 518485857765021418}
-  m_RootOrder: 2
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -4545,12 +4496,12 @@ MonoBehaviour:
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 8427933407996438405}
-  m_Enabled: 0
+  m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: 
+  textKey: Confirm
   layoutRebuildObject: {fileID: 0}
   languageFontSizes: []
 --- !u!1 &8486696878974212867

+ 8 - 0
Assets/SmartBow/Scripts/Common.meta

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

+ 87 - 0
Assets/SmartBow/Scripts/Common/BulletManager.cs

@@ -0,0 +1,87 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class BulletManager : MonoBehaviour
+{
+    public Image[] bulletImages;
+    public Sprite bulletSprite;
+    public Sprite emptyBulletSprite;
+    private int bulletCount = 9;
+
+    public GameObject parent ;
+    public int getBulletCount { 
+        get {
+            return bulletCount;
+        }
+    }
+    void Start()
+    {
+        ResetBullets();
+    }
+
+    public void FireBullet()
+    {
+        if (bulletCount > 0)
+        {
+            bulletCount--;
+            UpdateBullets();
+        }
+    }
+
+    public void ResetBullets()
+    {
+        bulletCount = 9;
+        UpdateBullets();
+    }
+
+    public bool bulletZero() {
+        if (getBulletCount == 0) {
+            Create(parent.transform);
+            //暂时自动刷新,接入协议后修改效果
+            ResetBullets();
+            return true;
+        }
+        return false;
+    }
+
+    private void UpdateBullets()
+    {
+        for (int i = 0; i < bulletImages.Length; i++)
+        {
+            if (i < bulletCount)
+            {
+                bulletImages[i].sprite = bulletSprite;
+            }
+            else
+            {
+                bulletImages[i].sprite = emptyBulletSprite;
+            }
+        }
+    }
+
+
+    static List<GameObject> bulletNumber = new();
+    public static void Create(Transform parentTran)
+    {
+        //清空对象
+        for (int i = bulletNumber.Count - 1; i >= 0; i--)
+        {
+            Destroy(bulletNumber[i].gameObject);
+            bulletNumber.RemoveAt(i);
+        }
+        GameObject o = Instantiate(Resources.Load<GameObject>("Common/TipBulletNumber"));
+        // 重置Transform属性
+        o.transform.SetParent(parentTran);
+
+        // 获取RectTransform组件
+        RectTransform rectTransform = o.GetComponent<RectTransform>();
+
+        // 设置相对于锚点的偏移位置
+        rectTransform.anchoredPosition = new Vector2(0, 120);
+        rectTransform.localRotation = Quaternion.identity;
+        rectTransform.localScale = Vector3.one;
+        //o.GetComponentInChildren<Text>().text = number.ToString($"f{CommonConfig.ringsPrecision}");
+        bulletNumber.Add(o);
+    }
+}

+ 11 - 0
Assets/SmartBow/Scripts/Common/BulletManager.cs.meta

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

+ 15 - 0
Assets/SmartBow/Scripts/Common/TipBulletNumber.cs

@@ -0,0 +1,15 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TipBulletNumber : MonoBehaviour
+{
+    // Start is called before the first frame update
+    IEnumerator Start()
+    {
+        yield return new WaitForSecondsRealtime(3.0f);
+        Destroy(this.gameObject);
+    }
+}
+
+   

+ 11 - 0
Assets/SmartBow/Scripts/Common/TipBulletNumber.cs.meta

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

+ 122 - 0
Assets/SmartBow/SmartBowSDK/Decryptor.cs

@@ -0,0 +1,122 @@
+using System;
+using UnityEngine;
+
+public class Decryptor
+{
+    // 密钥长度
+    private const int KEY_LENGTH = 12;
+    // 对称密钥
+    private static readonly byte[] c_abySecretKey = System.Text.Encoding.ASCII.GetBytes("qingfengluan");
+
+    /***********************************************************
+    *@函 数 名 : AUTHOR_ImprovedDecrypt
+    *@功能说明 : 解密函数
+    *@形 参 : pbyData - 待解密字符串
+    *@ dwDataLen - 解密数据长度
+    *@返 回 值 : pbyData - 解密后的数据
+    *@作 者 : Shaoxin Wu
+    *@日 期 : 2024-06-24
+    ***********************************************************/
+    public static byte[] AUTHOR_ImprovedDecrypt(byte[] pbyData, uint dwDataLen)
+    {
+        for (uint i = 0; i < dwDataLen; i++)
+        {
+            for (int j = KEY_LENGTH - 1; j >= 0; j--)
+            {
+                pbyData[i] = (byte)((pbyData[i] >> 1) | (pbyData[i] << 7)); // 右循环移位
+                pbyData[i] ^= c_abySecretKey[j]; // 多轮异或
+            }
+        }
+        return pbyData;
+    }
+
+    /***********************************************************
+    *@函 数 名 : CheckSum
+    *@功能说明 : 累加和校验计算
+    *@形 参 : pbyData - 数据地址
+    *@ byDataLen - 校验数据长度
+    *@返 回 值 : 校验和结果
+    *@作 者 : Shaoxin Wu
+    *@日 期 : 2024-06-24
+    ***********************************************************/
+    public static byte CheckSum(byte[] pbyData, byte byDataLen)
+    {
+        byte byRet = 0;
+        for (byte i = 0; i < byDataLen; i++)
+        {
+            byRet += pbyData[i];
+        }
+        return byRet;
+    }
+
+    /// <summary>
+    /// 最前面插入一个字节
+    /// </summary>
+    /// <param name="originalArray"></param>
+    /// <param name="newByte"></param>
+    /// <returns></returns>
+    public static byte[] InsertByteAtBeginning(byte[] originalArray, byte newByte)
+    {
+        byte[] newArray = new byte[originalArray.Length + 1];
+        newArray[0] = newByte;
+        Array.Copy(originalArray, 0, newArray, 1, originalArray.Length);
+        return newArray;
+    }
+
+    public static string GetResponseStr(byte[] bytes) {
+        //byte[] dataToDecrypt = { 0x5A, 0x76, 0xD1, 0x02, 0xEB, 0x8E, 0x5D };
+        //需要解密的4个数据
+        byte[] encryptedData = new byte[] { bytes[1], bytes[2], bytes[3], bytes[4] };
+        uint dataLength = (uint)encryptedData.Length;
+        byte checksumStart = Decryptor.CheckSum(new byte[] { bytes[0] , bytes[1], bytes[2], bytes[3], bytes[4] }, 5);
+        // 打印开始校验和
+        //Debug.Log("checksumStart: " + checksumStart + ",对应16进制=" + checksumStart.ToString("X"));
+
+        // 打印原始加密数据
+        Debug.Log("Original Data: " + System.BitConverter.ToString(bytes));
+        //Debug.Log("Original Encrypted Data: " + System.BitConverter.ToString(encryptedData));
+        // 解密数据
+        byte[] decryptedData = AUTHOR_ImprovedDecrypt(encryptedData, dataLength);
+        // 打印解密后的数据
+        //Debug.Log("Decrypted Data: " + System.BitConverter.ToString(decryptedData));
+        byte[] newArray = Decryptor.InsertByteAtBeginning(decryptedData, bytes[0]);
+        //Debug.Log("前插 {0x5A} 后:  " + System.BitConverter.ToString(newArray));
+        // 计算累加和校验
+        byte checksum = Decryptor.CheckSum(newArray, (byte)newArray.Length);
+       // Debug.Log("checksum:" + checksum + ", 对应16进制:"+ checksum.ToString("X"));
+        //byte checksum = Decryptor.CheckSum(decryptedData, (byte)dataLength);
+        //// 打印校验和
+        //Debug.Log("Checksum: " + checksum+",16=" + checksum.ToString("X"));
+        // 组装应答数据
+        byte[] responseData = new byte[7];
+        responseData[0] = 0x5A; // 起始码
+        System.Array.Copy(decryptedData, 0, responseData, 1, decryptedData.Length); // 解密数据
+        responseData[5] = checksum; // 累加和校验
+        responseData[6] = 0x5D; // 结束码
+        // 将应答数据转换为字符串
+        Debug.Log("Original Response Data: " + System.BitConverter.ToString(responseData));
+        string responseString = System.BitConverter.ToString(responseData).Replace("-", "");
+        //Debug.Log("Response Data: " + responseString);
+        return responseString;
+    }
+
+}
+//public class DecryptorTest : MonoBehaviour
+//{
+//    void Start()
+//    {
+//        byte[] dataToDecrypt = { /* 你的待解密数据 */ };
+//        uint dataLength = (uint)dataToDecrypt.Length;
+
+//        byte[] decryptedData = Decryptor.AUTHOR_ImprovedDecrypt(dataToDecrypt, dataLength);
+
+//        // 打印解密后的数据
+//        Debug.Log(BitConverter.ToString(decryptedData));
+
+//        // 计算校验和
+//        byte checksum = Decryptor.CheckSum(decryptedData, (byte)decryptedData.Length);
+
+//        // 打印校验和
+//        Debug.Log("Checksum: " + checksum);
+//    }
+//}

+ 11 - 0
Assets/SmartBow/SmartBowSDK/Decryptor.cs.meta

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

+ 3 - 1
Assets/SmartBow/Unity-Logs-Viewer/Reporter/Reporter.cs

@@ -363,7 +363,9 @@ public class Reporter : MonoBehaviour
 			scenes = new string[Application.levelCount];
 			currentScene = Application.loadedLevelName;
 #endif
-			DontDestroyOnLoad(gameObject);
+			if (transform.parent == null) {
+				DontDestroyOnLoad(gameObject);
+			}
 #if UNITY_CHANGE1
 			Application.RegisterLogCallback (new Application.LogCallback (CaptureLog));
 			Application.RegisterLogCallbackThreaded (new Application.LogCallback (CaptureLogThread));

Неке датотеке нису приказане због велике количине промена