slambb 9 miesięcy temu
rodzic
commit
3a236be845

+ 15 - 4
Assets/BowArrow/InfraredCamera/InfraredDemo.cs

@@ -690,6 +690,17 @@ public class InfraredDemo : JCUnityLib.ViewBase
                     FindObjectOfType<InfraredScreenPositioningView>()?.onReset();
                 }
             };
+
+            //算法准备事件
+            infraredCameraHelper.OnScreenLocateIsReady += () =>
+            {
+                Debug.Log("OnScreenLocateIsReady.");
+                //b端设置偏移值
+                if (CommonConfig.StandaloneModeOrPlatformB)
+                {
+                    InitCenterOffset();
+                }
+            };
         }
     }
 
@@ -767,10 +778,10 @@ public class InfraredDemo : JCUnityLib.ViewBase
         _duckLevelDropdown.SetValueWithoutNotify(defLevel);
         _duckLevelDropdown.onValueChanged.AddListener(SetDuckLevelTest);
 
-        //b端设置偏移值
-        if (CommonConfig.StandaloneModeOrPlatformB) {
-            InitCenterOffset();
-        }
+        ////b端设置偏移值
+        //if (CommonConfig.StandaloneModeOrPlatformB) {
+        //    InitCenterOffset();
+        //}
     }
 
 

Plik diff jest za duży
+ 936 - 0
Assets/Game_Hyperspace/Font/ali SDF 1.asset


+ 8 - 0
Assets/Game_Hyperspace/Font/ali SDF 1.asset.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0deb54a3060b89f4fb8b297b552da2ed
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 4
Assets/Game_Hyperspace/Font/ali SDF.asset

@@ -906,7 +906,7 @@ Texture2D:
   m_ForcedFallbackFormat: 4
   m_DownscaleFallback: 0
   m_IsAlphaChannelOptional: 0
-  serializedVersion: 3
+  serializedVersion: 2
   m_Width: 512
   m_Height: 512
   m_CompleteImageSize: 262144
@@ -940,6 +940,3 @@ Texture2D:
     offset: 0
     size: 0
     path: 
-  m_OriginalWidth: 0
-  m_OriginalHeight: 0
-  m_OriginalAssetGuid: 00000000000000000000000000000000

+ 76 - 0
Assets/Game_Hyperspace/Hyperspace FX/Demo/Scenes/Hyperspace03.unity

@@ -4913,6 +4913,22 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 1633121641254296839, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1633121641254296839, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1633121641254296839, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1633121641254296839, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 2736556116586882158, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchorMax.y
       value: 0
@@ -5145,6 +5161,38 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 3097182269755761323, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3097182269755761323, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3097182269755761323, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3097182269755761323, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3542185639350097562, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3542185639350097562, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3542185639350097562, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 3542185639350097562, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 4321053464539678968, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchorMax.y
       value: 0
@@ -5153,6 +5201,10 @@ PrefabInstance:
       propertyPath: m_AnchorMin.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 4321053464539678968, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 75
+      objectReference: {fileID: 0}
     - target: {fileID: 4321053464539678968, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchoredPosition.x
       value: 0
@@ -5161,6 +5213,22 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 4394451510602100120, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4394451510602100120, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4394451510602100120, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4394451510602100120, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 4873923243425451560, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchorMax.y
       value: 0
@@ -5169,6 +5237,10 @@ PrefabInstance:
       propertyPath: m_AnchorMin.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 4873923243425451560, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 75
+      objectReference: {fileID: 0}
     - target: {fileID: 4873923243425451560, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchoredPosition.x
       value: 0
@@ -5185,6 +5257,10 @@ PrefabInstance:
       propertyPath: m_AnchorMin.y
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 6650810117416880763, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 75
+      objectReference: {fileID: 0}
     - target: {fileID: 6650810117416880763, guid: b783c777a69d44049a78f6bcaddb7e13, type: 3}
       propertyPath: m_AnchoredPosition.x
       value: 0

+ 558 - 59
Assets/Game_Hyperspace/Resources/game over.prefab

@@ -33,7 +33,7 @@ RectTransform:
   - {fileID: 2736556117898888689}
   - {fileID: 2736556117510927436}
   m_Father: {fileID: 2736556117804988941}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -51,7 +51,6 @@ GameObject:
   - component: {fileID: 6650810117416880763}
   - component: {fileID: 4940121006830559178}
   - component: {fileID: 928283591506157}
-  - component: {fileID: 8010530887107786630}
   m_Layer: 5
   m_Name: Text
   m_TagString: Untagged
@@ -77,7 +76,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 112, y: 50}
+  m_SizeDelta: {x: 75, y: 50}
   m_Pivot: {x: 1, y: 0.5}
 --- !u!222 &4940121006830559178
 CanvasRenderer:
@@ -141,7 +140,7 @@ MonoBehaviour:
   m_fontSizeMin: 18
   m_fontSizeMax: 72
   m_fontStyle: 1
-  m_HorizontalAlignment: 4
+  m_HorizontalAlignment: 1
   m_VerticalAlignment: 4096
   m_textAlignment: 65535
   m_characterSpacing: 0
@@ -176,21 +175,141 @@ MonoBehaviour:
   m_hasFontAssetChanged: 0
   m_baseMaterial: {fileID: 0}
   m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!114 &8010530887107786630
+--- !u!1 &2406991724965898969
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3097182269755761323}
+  - component: {fileID: 8809887650787544279}
+  - component: {fileID: 3600213992353398882}
+  m_Layer: 5
+  m_Name: TextEn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &3097182269755761323
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2406991724965898969}
+  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: 2736556117908487527}
+  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: 175.7, y: -15}
+  m_SizeDelta: {x: 92.7, y: 30}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &8809887650787544279
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2406991724965898969}
+  m_CullTransparentMesh: 1
+--- !u!114 &3600213992353398882
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2167889379354049417}
+  m_GameObject: {fileID: 2406991724965898969}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: ShotCount
-  layoutRebuildObject: {fileID: 0}
-  languageFontSizes: []
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: HitCount
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_sharedMaterial: {fileID: -6865708031882221899, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4289192954
+  m_fontColor: {r: 0.98039216, g: 0.8901961, b: 0.654902, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 17
+  m_fontSizeBase: 17
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 1
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 512
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 10.940662, z: 0, w: 10.075355}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
 --- !u!1 &2736556116527294499
 GameObject:
   m_ObjectHideFlags: 0
@@ -318,6 +437,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 6650810117416880763}
+  - {fileID: 4394451510602100120}
   - {fileID: 2736556117020107973}
   m_Father: {fileID: 4178952900737131963}
   m_RootOrder: 0
@@ -352,7 +472,7 @@ MonoBehaviour:
     m_Right: 0
     m_Top: 0
     m_Bottom: 0
-  m_ChildAlignment: 3
+  m_ChildAlignment: 4
   m_Spacing: 8
   m_ChildForceExpandWidth: 0
   m_ChildForceExpandHeight: 0
@@ -679,7 +799,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2736556117908487527}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -910,7 +1030,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2736556116586882158}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -1239,6 +1359,7 @@ GameObject:
   - component: {fileID: 2736556117492972157}
   - component: {fileID: 2736556117492972155}
   - component: {fileID: 2736556117492972154}
+  - component: {fileID: 5673742872809988634}
   m_Layer: 5
   m_Name: game over
   m_TagString: Untagged
@@ -1307,6 +1428,30 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5673742872809988634
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2736556117492972156}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2d0dc4e5960138241a7a1e4bd726828c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  ScoreObj:
+  - {fileID: 5001226928651770973}
+  - {fileID: 4540551516767406017}
+  ShotObj:
+  - {fileID: 2167889379354049417}
+  - {fileID: 9042324868433221308}
+  HitObj:
+  - {fileID: 6902144239145093169}
+  - {fileID: 2406991724965898969}
+  HitRateObj:
+  - {fileID: 7935822091360949916}
+  - {fileID: 5789530503628165032}
 --- !u!1 &2736556117510927425
 GameObject:
   m_ObjectHideFlags: 0
@@ -1510,6 +1655,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 1385102568835467044}
+  - {fileID: 1633121641254296839}
   - {fileID: 197412950495838562}
   m_Father: {fileID: 2736556117064423623}
   m_RootOrder: 1
@@ -1786,7 +1932,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 2736556118543538288}
-  m_RootOrder: 1
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -2133,6 +2279,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 4321053464539678968}
+  - {fileID: 3097182269755761323}
   - {fileID: 2736556116904858068}
   m_Father: {fileID: 4178952900737131963}
   m_RootOrder: 1
@@ -2167,7 +2314,7 @@ MonoBehaviour:
     m_Right: 0
     m_Top: 0
     m_Bottom: 0
-  m_ChildAlignment: 3
+  m_ChildAlignment: 4
   m_Spacing: 8
   m_ChildForceExpandWidth: 0
   m_ChildForceExpandHeight: 0
@@ -2495,6 +2642,7 @@ RectTransform:
   m_ConstrainProportionsScale: 0
   m_Children:
   - {fileID: 4873923243425451560}
+  - {fileID: 3542185639350097562}
   - {fileID: 2736556117821336190}
   m_Father: {fileID: 4178952900737131963}
   m_RootOrder: 2
@@ -2529,7 +2677,7 @@ MonoBehaviour:
     m_Right: 0
     m_Top: 0
     m_Bottom: 0
-  m_ChildAlignment: 3
+  m_ChildAlignment: 4
   m_Spacing: 8
   m_ChildForceExpandWidth: 0
   m_ChildForceExpandHeight: 0
@@ -2538,6 +2686,141 @@ MonoBehaviour:
   m_ChildScaleWidth: 0
   m_ChildScaleHeight: 0
   m_ReverseArrangement: 0
+--- !u!1 &4540551516767406017
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1633121641254296839}
+  - component: {fileID: 4642394356851419281}
+  - component: {fileID: 8475576952376096964}
+  m_Layer: 5
+  m_Name: TextEn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &1633121641254296839
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4540551516767406017}
+  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: 2736556117804988941}
+  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: 134.5, y: -16.335}
+  m_SizeDelta: {x: 134.5, y: 26.19}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &4642394356851419281
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4540551516767406017}
+  m_CullTransparentMesh: 1
+--- !u!114 &8475576952376096964
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4540551516767406017}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: TotalScore
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_sharedMaterial: {fileID: -6865708031882221899, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4289192954
+  m_fontColor: {r: 0.9803922, g: 0.89019614, b: 0.654902, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 22
+  m_fontSizeBase: 22
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 1
+  m_HorizontalAlignment: 4
+  m_VerticalAlignment: 512
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: -2.8806686, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
 --- !u!1 &5001226928651770973
 GameObject:
   m_ObjectHideFlags: 0
@@ -2549,7 +2832,6 @@ GameObject:
   - component: {fileID: 1385102568835467044}
   - component: {fileID: 6493507388149917562}
   - component: {fileID: 1448597116073198758}
-  - component: {fileID: 6344800992736594350}
   m_Layer: 5
   m_Name: Text
   m_TagString: Untagged
@@ -2674,27 +2956,141 @@ MonoBehaviour:
   m_hasFontAssetChanged: 0
   m_baseMaterial: {fileID: 0}
   m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!114 &6344800992736594350
+--- !u!1 &5789530503628165032
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3542185639350097562}
+  - component: {fileID: 5577106662903413821}
+  - component: {fileID: 9183229394413497352}
+  m_Layer: 5
+  m_Name: TextEn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &3542185639350097562
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5789530503628165032}
+  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: 2736556118543538288}
+  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: 175.7, y: -15}
+  m_SizeDelta: {x: 92.7, y: 30}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &5577106662903413821
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5789530503628165032}
+  m_CullTransparentMesh: 1
+--- !u!114 &9183229394413497352
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5001226928651770973}
+  m_GameObject: {fileID: 5789530503628165032}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: TotalScore
-  layoutRebuildObject: {fileID: 0}
-  languageFontSizes:
-  - language: 0
-    fontSize: 23
-    lineSpacing: 0
-  - language: 1
-    fontSize: 19
-    lineSpacing: 0
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: HitRate
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_sharedMaterial: {fileID: -6865708031882221899, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4289192954
+  m_fontColor: {r: 0.98039216, g: 0.8901961, b: 0.654902, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 17
+  m_fontSizeBase: 17
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 1
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 4096
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 10.940662, z: 0, w: 10.075355}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
 --- !u!1 &6902144239145093169
 GameObject:
   m_ObjectHideFlags: 0
@@ -2706,7 +3102,6 @@ GameObject:
   - component: {fileID: 4321053464539678968}
   - component: {fileID: 8951766215084507463}
   - component: {fileID: 3655364466479031354}
-  - component: {fileID: 2445938306401793070}
   m_Layer: 5
   m_Name: Text
   m_TagString: Untagged
@@ -2732,7 +3127,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 112, y: 30}
+  m_SizeDelta: {x: 75, y: 30}
   m_Pivot: {x: 1, y: 0.5}
 --- !u!222 &8951766215084507463
 CanvasRenderer:
@@ -2796,7 +3191,7 @@ MonoBehaviour:
   m_fontSizeMin: 18
   m_fontSizeMax: 72
   m_fontStyle: 1
-  m_HorizontalAlignment: 4
+  m_HorizontalAlignment: 1
   m_VerticalAlignment: 512
   m_textAlignment: 65535
   m_characterSpacing: 0
@@ -2825,27 +3220,12 @@ MonoBehaviour:
   m_VertexBufferAutoSizeReduction: 0
   m_useMaxVisibleDescender: 1
   m_pageToDisplay: 1
-  m_margin: {x: 0, y: 0, z: 0, w: 0.006269462}
+  m_margin: {x: 0, y: 10.940662, z: 0, w: 10.075355}
   m_isUsingLegacyAnimationComponent: 0
   m_isVolumetricText: 0
   m_hasFontAssetChanged: 0
   m_baseMaterial: {fileID: 0}
   m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!114 &2445938306401793070
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6902144239145093169}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  textKey: HitCount
-  layoutRebuildObject: {fileID: 0}
-  languageFontSizes: []
 --- !u!1 &6976205894731838914
 GameObject:
   m_ObjectHideFlags: 0
@@ -2883,7 +3263,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: 36.399998, y: -53.3}
+  m_AnchoredPosition: {x: 64.2, y: -53.3}
   m_SizeDelta: {x: 250, y: 90}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!114 &5622467406350384246
@@ -2923,7 +3303,6 @@ GameObject:
   - component: {fileID: 4873923243425451560}
   - component: {fileID: 74255302356211911}
   - component: {fileID: 677321295971966635}
-  - component: {fileID: 8284794165792168286}
   m_Layer: 5
   m_Name: Text
   m_TagString: Untagged
@@ -2949,7 +3328,7 @@ RectTransform:
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 112, y: 30}
+  m_SizeDelta: {x: 75, y: 30}
   m_Pivot: {x: 1, y: 0.5}
 --- !u!222 &74255302356211911
 CanvasRenderer:
@@ -3013,7 +3392,7 @@ MonoBehaviour:
   m_fontSizeMin: 18
   m_fontSizeMax: 72
   m_fontStyle: 1
-  m_HorizontalAlignment: 4
+  m_HorizontalAlignment: 1
   m_VerticalAlignment: 4096
   m_textAlignment: 65535
   m_characterSpacing: 0
@@ -3042,24 +3421,144 @@ MonoBehaviour:
   m_VertexBufferAutoSizeReduction: 0
   m_useMaxVisibleDescender: 1
   m_pageToDisplay: 1
-  m_margin: {x: 0, y: 0.49602127, z: 0, w: -0.015721325}
+  m_margin: {x: 0, y: 10.940662, z: 0, w: 10.075355}
   m_isUsingLegacyAnimationComponent: 0
   m_isVolumetricText: 0
   m_hasFontAssetChanged: 0
   m_baseMaterial: {fileID: 0}
   m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
---- !u!114 &8284794165792168286
+--- !u!1 &9042324868433221308
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4394451510602100120}
+  - component: {fileID: 2535069909443220233}
+  - component: {fileID: 7230239629468809373}
+  m_Layer: 5
+  m_Name: TextEn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &4394451510602100120
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9042324868433221308}
+  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: 2736556116586882158}
+  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: 100.85, y: -15}
+  m_SizeDelta: {x: 92.7, y: 50}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &2535069909443220233
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 9042324868433221308}
+  m_CullTransparentMesh: 1
+--- !u!114 &7230239629468809373
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7935822091360949916}
+  m_GameObject: {fileID: 9042324868433221308}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0f4efe98aab6c6b41a7ee1f4c49df27b, type: 3}
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  textKey: HitRate
-  layoutRebuildObject: {fileID: 0}
-  languageFontSizes: []
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: ShotCount
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_sharedMaterial: {fileID: -6865708031882221899, guid: 0deb54a3060b89f4fb8b297b552da2ed, type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4289192954
+  m_fontColor: {r: 0.98039216, g: 0.8901961, b: 0.654902, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 17
+  m_fontSizeBase: 17
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 1
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 4096
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 0
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 10.940662, z: 0, w: 10.075355}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

+ 31 - 0
Assets/Game_Hyperspace/Script/GameOverUI.cs

@@ -0,0 +1,31 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class GameOverUI : MonoBehaviour
+{
+    public GameObject[] ScoreObj;
+    public GameObject[] ShotObj;
+    public GameObject[] HitObj;
+    public GameObject[] HitRateObj;
+
+    // Start is called before the first frame update
+    void Start()
+    {
+        bool isChinese = TextAutoLanguage2.GetLanguage() == LanguageEnum.Chinese;
+        SetLanguageObjects(ScoreObj, isChinese);
+        SetLanguageObjects(ShotObj, isChinese);
+        SetLanguageObjects(HitObj, isChinese);
+        SetLanguageObjects(HitRateObj, isChinese);
+    }
+
+    private void SetLanguageObjects(GameObject[] objects, bool isChinese)
+    {
+        if (objects == null || objects.Length < 2) return;
+
+        objects[0].SetActive(isChinese);
+        objects[1].SetActive(!isChinese);
+    }
+
+
+}

+ 11 - 0
Assets/Game_Hyperspace/Script/GameOverUI.cs.meta

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

+ 78 - 6
Assets/InfraredProject/InfraredCamera/Scripts/InfraredCameraHelper.cs

@@ -6,6 +6,7 @@ using SLAMUVC;
 using UnityEngine.UI;
 using SmartBowSDK;
 using o0InfraredLocate.ZIM;
+using static ScreenLocate;
 
 namespace InfraredManager
 {
@@ -170,6 +171,15 @@ namespace InfraredManager
         #endregion
 
         #region 操作接口
+        /// <summary>
+        /// 获取screenLocate 对象
+        /// </summary>
+        /// <returns>ScreenLocate</returns>
+        public ScreenLocate getScreenLocate()
+        {
+            return _screenLocate;
+        }
+
         /// <summary>
         /// 单点模式开关
         /// </summary>
@@ -241,7 +251,7 @@ namespace InfraredManager
             return _screenLocate.SetPointsOffset(inputPointOffset, type);
         }
         /// <summary>
-        /// 获取中心点偏移量
+        /// 获取中心点偏移量,双点情况下不会自动存储。需要再调用 SetCenterOffsets 
         /// </summary>
         /// <param name="inputPoint"></param>
         /// <param name="type"> CameraLocation , ScreenUV</param>
@@ -251,10 +261,12 @@ namespace InfraredManager
             // 获取偏移量
             return _screenLocate.AdjustPointsOffset(inputPoint, type);
         }
+
         /// <summary>
         /// 重置中心点的偏移量
         /// </summary>
-        public void ResetCenterOffset() {
+        public void ResetCenterOffset()
+        {
 
             _screenLocate.ResetPointsOffest();
         }
@@ -265,17 +277,60 @@ namespace InfraredManager
         {
             _screenLocate.RevokePointsOffest();
         }
-        
+
+        /// <summary>
+        /// 获取中心点偏移量,双点情况下不会自动存储。需要再调用 SetCenterOffsets 
+        /// 左右屏时候调用
+        /// </summary>
+        /// <param name="inputPoint"></param>
+        /// <param name="type"> CameraLocation , ScreenUV</param>
+        /// <returns></returns>
+        public Vector2 GetCenterOffset(Vector2 inputPoint, bool isLeft, string type = "CameraLocation")
+        {
+            // 获取偏移量
+            return _screenLocate.AdjustPointsOffset(inputPoint, type, isLeft);
+        }
+
+        /// <summary>
+        /// 设置偏移量--双点
+        /// </summary>
+        /// <param name="playerType">玩家类型</param>
+        /// <param name="inputPointOffset">偏移点</param>
+        /// <param name="type">CameraLocation 或者 UV</param>
+        /// <returns></returns>
+        public Vector2[] SetCenterOffsets(PlayerType playerType, Vector2 inputPointOffset, string type = "CameraLocation")
+        {
+            // 获取偏移量
+            return _screenLocate.SetPointsOffsets(playerType, inputPointOffset, type);
+        }
+        /// <summary>
+        /// 重置偏移点--双点
+        /// </summary>
+        public void RevokeCenterOffsets()
+        {
+
+            _screenLocate.RevokePointsOffests();
+        }
+        /// <summary>
+        /// 重置中心点的偏移量--双点
+        /// </summary>
+        public void ResetCenterOffsets()
+        {
+            _screenLocate.ResetPointsOffests();
+        }
+
+
         /// <summary>
         /// 清除定位数据
         /// </summary>
-        public void ClearInfraredPositioningData(bool bSyncLocal = false) {
+        public void ClearInfraredPositioningData(bool bSyncLocal = false)
+        {
             //重置识别点
             ScreenLocate.Main.ScreenIdentification.ClearQuadCache();
             //清除一下记录的点
             ScreenLocate.quadUnityVectorList.Clear();
             //是否需要保存清除后的数据
-            if(bSyncLocal)  ScreenLocate.SaveScreenLocateVectorList();
+            if (bSyncLocal) ScreenLocate.SaveScreenLocateVectorList();
         }
 
         /// <summary>
@@ -290,7 +345,7 @@ namespace InfraredManager
                 Debug.Log("[初始化本地坐标]:" + _screenLocate.PrintVector2List(ScreenLocate.quadUnityVectorList));
                 //使用算法顺序点来设置屏幕四边形,定位点(左下,右下,左上,右上)
                 _screenLocate.QuadUnityVectorListToScreenQuad(ScreenLocate.quadUnityVectorList);
-               // _screenLocate.SyncInfraredDemo();
+                // _screenLocate.SyncInfraredDemo();
                 InvokeOnUVCPosUpdate(ScreenLocate.quadUnityVectorList);
             }
         }
@@ -320,6 +375,23 @@ namespace InfraredManager
 
         #region 监听事件
         /// <summary>
+        /// ScreenLocate准备事件
+        /// 初始化 screenIdentification 和 infraredLocate后回调
+        /// </summary>
+        public OnScreenLocateIsReadyEvent OnScreenLocateIsReady;
+        public delegate void OnScreenLocateIsReadyEvent();
+        public void InvokeOnScreenLocateIsReady()
+        {
+            try
+            {
+                OnScreenLocateIsReady?.Invoke();
+            }
+            catch (Exception e)
+            {
+                Debug.LogError(e);
+            }
+        }
+        /// <summary>
         /// UVC 相机准备事件
         /// </summary>
         public OnUVCIsReadyEvent OnUVCIsReady;

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

@@ -114,7 +114,43 @@ public partial class ScreenLocate : o0InfraredCameraHandler
     Vector2 OldCameraLocationOffset { get; set; } = new Vector2(0, 0);
         //用来记录最后一次更新的数据
     Vector2 OldUVOffset { get; set; } = new Vector2(0, 0);
-    
+    #region 双点情况
+    public Vector2[] curCameraLocationOffsets
+    {
+        get => CameraLocationOffsets;
+        set
+        {
+            // 确保数组大小正确
+            if (value.Length == 2) // 假设你只需要两个元素
+            {
+                CameraLocationOffsets = value;
+            }
+        }
+    }
+    public Vector2[] curUVOffsets
+    {
+        get => UVOffsets;
+        set
+        {
+            // 确保数组大小正确
+            if (value.Length == 2) // 假设你只需要两个元素
+            {
+                UVOffsets = value;
+            }
+        }
+    }
+    // 用来记录最后一次更新的数据,改为数组形式,默认是零
+    Vector2[] CameraLocationOffsets { get; set; } = new Vector2[2] { Vector2.zero, Vector2.zero };
+
+    // 用来记录最后一次更新的数据,改为数组形式,默认是零
+    Vector2[] UVOffsets { get; set; } = new Vector2[2] { Vector2.zero, Vector2.zero };
+    // 用来记录最后一次更新的数据,改为数组形式,默认是零
+    Vector2[] OldCameraLocationOffsets { get; set; } = new Vector2[2] { Vector2.zero, Vector2.zero };
+
+    // 用来记录最后一次更新的数据,改为数组形式,默认是零
+    Vector2[] OldUVOffsets { get; set; } = new Vector2[2] { Vector2.zero, Vector2.zero };
+
+    #endregion
     //是否单点显示
     public bool bSinglePoint => infraredLocate.bSinglePoint;
 
@@ -358,6 +394,7 @@ public partial class ScreenLocate : o0InfraredCameraHandler
     }
 
     // 初始化算法
+    bool bInitScreenIdentificationAndInfraredLocate = false;
     void AlgorithmInit()
     {
         if (screenIdentification == null)
@@ -393,6 +430,12 @@ public partial class ScreenLocate : o0InfraredCameraHandler
                 });
             }
         }
+
+        if (screenIdentification != null && infraredLocate != null && !bInitScreenIdentificationAndInfraredLocate)
+        {
+            InfraredCameraHelper?.InvokeOnScreenLocateIsReady();
+            bInitScreenIdentificationAndInfraredLocate = true;
+        }
     }
 
     IEnumerator LateDestoryIEnum(UnityEngine.Object o)
@@ -1221,6 +1264,84 @@ public partial class ScreenLocate : o0InfraredCameraHandler
         return cameraLocatoin - CameraLocationOffset;
     }
 
+    #region 双点下的操作函数
+    /// <summary>
+    /// 设置记录位置,双点
+    /// </summary>
+    /// <param name="playerType"></param>
+    /// <param name="inputPointOffset"></param>
+    /// <param name="type"></param>
+    /// <returns></returns>
+    public Vector2[] SetPointsOffsets(PlayerType playerType, Vector2 inputPointOffset, string type = "CameraLocation")
+    {
+        int index = 0;
+        if (playerType == PlayerType.FirstPlayer)
+        {
+            index = 0;
+        }
+        else
+        {
+            index = 1;
+        }
+        // 计算从原始中心到输入点的偏移量
+        if (type == "CameraLocation")
+        {
+            OldCameraLocationOffsets[index] = CameraLocationOffsets[index] = inputPointOffset;
+            return CameraLocationOffsets;
+        }
+        else
+        {
+            //ScreenUV
+            OldUVOffsets[index] = UVOffsets[index] = inputPointOffset;
+            return UVOffsets;
+        }
+    }
+    /// <summary>
+    /// 撤销操作,双点
+    /// </summary>
+    public void RevokePointsOffests()
+    {
+        CameraLocationOffsets = OldCameraLocationOffsets;
+        UVOffsets = OldUVOffsets;
+    }
+
+    public void ResetPointsOffests()
+    {
+        SetPointsOffsets(PlayerType.FirstPlayer, Vector2.zero, "CameraLocation");
+        SetPointsOffsets(PlayerType.SecondPlayer, Vector2.zero, "ScreenUV");
+    }
+    /// <summary>
+    /// 左右屏校准中心点时候调用
+    /// </summary>
+    /// <param name="inputPoint"></param>
+    /// <param name="type"></param>
+    /// <param name="isLeftScreen"></param>
+    /// <returns></returns>
+    public Vector2 AdjustPointsOffset(Vector2 inputPoint, string type = "CameraLocation", bool isLeftScreen = true)
+    {
+        Vector2 offset;
+
+        if (type == "CameraLocation")
+        {
+            // 计算 CameraLocation 的偏移量,考虑左右屏
+            Vector2 center = screenIdentification.Screen.TransformToCamera(
+                new Vector2(isLeftScreen ? 0.25f : 0.75f, 0.5f) * screenIdentification.Screen.UVSize
+            );
+            offset = inputPoint - center; // 偏移量 = 输入点 - 中心点
+        }
+        else
+        {
+            // UV 坐标系下的偏移量,考虑左右屏
+            Vector2 center = new Vector2(isLeftScreen ? 0.25f : 0.75f, 0.5f); // 左屏或右屏中心点
+            offset = inputPoint - center; // 偏移量 = 输入点 - 中心点
+        }
+
+        return offset;
+    }
+
+
+    #endregion
+
     void ToMode(Mode mode)
     {
         if (this.mode == mode)

+ 1 - 1
ProjectSettings/ProjectSettings.asset

@@ -137,7 +137,7 @@ PlayerSettings:
     16:10: 1
     16:9: 1
     Others: 1
-  bundleVersion: 2.0.0
+  bundleVersion: 2.0.1
   preloadedAssets: []
   metroInputSource: 0
   wsaTransparentSwapchain: 0

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