Browse Source

pad适配

guodong 1 year ago
parent
commit
34327974a1

+ 0 - 12
GameClient/Assets/Game/HotUpdate/Constant/ConstSortingOrder.cs

@@ -1,12 +0,0 @@
-namespace GFGGame
-{
-    public class ConstSortingOrder
-    {
-        public const int TOP = 1099;
-        public const int Guide = 1100;
-        public const int Modal = 1101;
-        public const int Alert = 1102;
-        public const int Debug = 1103;
-        public const int Float = 1104;
-    }
-}

+ 11 - 4
GameClient/Assets/Game/HotUpdate/Constant/ConstViewLayer.cs

@@ -1,7 +1,4 @@
-using System.Collections;
-using UnityEngine;
-
-namespace GFGGame
+namespace GFGGame
 {
     public class ConstViewLayer
     {
@@ -35,4 +32,14 @@ namespace GFGGame
         public const string FLOAT = "FLOAT";
 
     }
+
+    public class ConstViewLayerSortingOrder
+    {
+        public const int TOP = 1099;
+        public const int Guide = 1100;
+        public const int Modal = 1101;
+        public const int Alert = 1102;
+        public const int Debug = 1103;
+        public const int Float = 1104;
+    }
 }

+ 6 - 9
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -1,11 +1,8 @@
-using UnityEngine;
 using System.Collections.Generic;
 using System;
 using FairyGUI;
 using System.Linq;
 using ET;
-using YooAsset;
-using System.Threading.Tasks;
 
 namespace GFGGame
 {
@@ -65,21 +62,21 @@ namespace GFGGame
             //_bottomLayer.sortingOrder = ConstSortingOrder.Bottom;
 
             _topLayer = CreateLayer("TopLayer");
-            _topLayer.sortingOrder = ConstSortingOrder.TOP;
+            _topLayer.sortingOrder = ConstViewLayerSortingOrder.TOP;
 
             _guideLayer = CreateLayer("GuideLayer");
-            _guideLayer.sortingOrder = ConstSortingOrder.Guide;
+            _guideLayer.sortingOrder = ConstViewLayerSortingOrder.Guide;
 
             _modalLayer = CreateLayer("ModalLayer");
-            _modalLayer.sortingOrder = ConstSortingOrder.Modal;
+            _modalLayer.sortingOrder = ConstViewLayerSortingOrder.Modal;
 
             _alertLayer = CreateLayer("AlertLayer");
-            _alertLayer.sortingOrder = ConstSortingOrder.Alert;
+            _alertLayer.sortingOrder = ConstViewLayerSortingOrder.Alert;
             //debug层
             _debugLayer = CreateLayer("DebugLayer");
-            _debugLayer.sortingOrder = ConstSortingOrder.Debug;
+            _debugLayer.sortingOrder = ConstViewLayerSortingOrder.Debug;
             _floatLayer = CreateLayer("FloatLayer");
-            _floatLayer.sortingOrder = ConstSortingOrder.Float;
+            _floatLayer.sortingOrder = ConstViewLayerSortingOrder.Float;
             SetMaskAlpha(0.6f);
         }
 

+ 4 - 0
GameClient/Assets/Game/Launcher/Views/HealthAdviceView.cs

@@ -26,6 +26,10 @@ namespace GFGGame
         {
             GameObject.DestroyImmediate(_ui);
             _ui = null;
+            //检测开启pad遮挡
+            float maxAspectRatio = 1080 * 1.0f / 1920;
+            if (Screen.width * 1.0f / Screen.height > maxAspectRatio)
+                PadMaskView.Open();
         }
     }
 }

+ 62 - 0
GameClient/Assets/Game/Launcher/Views/PadMaskView.cs

@@ -0,0 +1,62 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace GFGGame
+{
+    public class PadMaskView : MonoBehaviour
+    {
+        private static GameObject _ui;
+        private Image BorderLeft;
+        private Image BorderRight;
+
+        /// <summary>
+        /// 打开界面
+        /// </summary>
+        public static void Open()
+        {
+            var go = Resources.Load<GameObject>("UUI/Launcher/UIPadMask");
+            _ui = GameObject.Instantiate(go);
+            DontDestroyOnLoad(_ui);
+
+        }
+
+        /// <summary>
+        /// 关闭界面
+        /// </summary>
+        /// <param name="toDestroy"></param>
+        public static void Close()
+        {
+            GameObject.DestroyImmediate(_ui);
+            _ui = null;
+        }
+
+        private void Start()
+        {
+            BorderLeft = _ui.transform.Find("BorderLeft").GetComponent<Image>();
+            BorderRight = _ui.transform.Find("BorderRight").GetComponent<Image>();
+            InitBorder();
+        }
+
+        private void InitBorder()
+        {
+            //这里做了最大宽度适配
+            float targetWidth;
+            float maxAspectRatio = 1080 * 1.0f / 1920;
+            if (Screen.width * 1.0f / Screen.height > maxAspectRatio)
+            {
+                targetWidth = Screen.height * maxAspectRatio;
+            }
+            else
+            {
+                targetWidth = Screen.width;
+            }
+            float leftX = - targetWidth / 2;
+            float rightX = -leftX;
+            float maskWidth = (Screen.width - targetWidth) / 2;
+            BorderLeft.rectTransform.anchoredPosition = new Vector2(leftX, 0);
+            BorderRight.rectTransform.anchoredPosition = new Vector2(rightX, 0);
+            BorderLeft.rectTransform.sizeDelta = new Vector2(maskWidth, BorderLeft.rectTransform.sizeDelta.y);
+            BorderRight.rectTransform.sizeDelta = BorderLeft.rectTransform.sizeDelta;
+        }
+    }
+}

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Constant/ConstSortingOrder.cs.meta → GameClient/Assets/Game/Launcher/Views/PadMaskView.cs.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 0cd56e09cd613bc489faab1b797d5614
+guid: d537630cc7775534f93a831e11ab9ac4
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2

+ 1 - 1
GameClient/Assets/Resources/UUI/Launcher/UIHealthAdvice.prefab

@@ -105,7 +105,7 @@ MonoBehaviour:
   m_UiScaleMode: 1
   m_ReferencePixelsPerUnit: 100
   m_ScaleFactor: 1
-  m_ReferenceResolution: {x: 1080, y: 2400}
+  m_ReferenceResolution: {x: 1080, y: 1920}
   m_ScreenMatchMode: 0
   m_MatchWidthOrHeight: 0
   m_PhysicalUnit: 3

+ 266 - 0
GameClient/Assets/Resources/UUI/Launcher/UIPadMask.prefab

@@ -0,0 +1,266 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &291329821328171070
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7564798782859731639}
+  - component: {fileID: 7343403990743592982}
+  - component: {fileID: 8230759778557096003}
+  m_Layer: 5
+  m_Name: BorderRight
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7564798782859731639
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 291329821328171070}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5667777262570446376}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: 540, y: 0}
+  m_SizeDelta: {x: 300, y: 0}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &7343403990743592982
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 291329821328171070}
+  m_CullTransparentMesh: 1
+--- !u!114 &8230759778557096003
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 291329821328171070}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 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 &1295297460915211435
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5667777262570446376}
+  - component: {fileID: 9096084388810831798}
+  - component: {fileID: 807896193719470942}
+  - component: {fileID: 7662264714407475666}
+  - component: {fileID: 2011353926892726030}
+  m_Layer: 5
+  m_Name: UIPadMask
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5667777262570446376
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1295297460915211435}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0, y: 0, z: 0}
+  m_Children:
+  - {fileID: 3021946367264451120}
+  - {fileID: 7564798782859731639}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &9096084388810831798
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1295297460915211435}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &807896193719470942
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1295297460915211435}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 1080, y: 1920}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &7662264714407475666
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1295297460915211435}
+  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!114 &2011353926892726030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1295297460915211435}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d537630cc7775534f93a831e11ab9ac4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &8611662582128336936
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3021946367264451120}
+  - component: {fileID: 2800384106661907281}
+  - component: {fileID: 2378797629806117933}
+  m_Layer: 5
+  m_Name: BorderLeft
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3021946367264451120
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8611662582128336936}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5667777262570446376}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: -540, y: 0}
+  m_SizeDelta: {x: 300, y: 0}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!222 &2800384106661907281
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8611662582128336936}
+  m_CullTransparentMesh: 1
+--- !u!114 &2378797629806117933
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8611662582128336936}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 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

+ 7 - 0
GameClient/Assets/Resources/UUI/Launcher/UIPadMask.prefab.meta

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

+ 13 - 1
GameClient/Assets/ThirdParty/FairyGUI/Scripts/UI/GObject.cs

@@ -473,7 +473,19 @@ namespace FairyGUI
         /// </summary>
         public void MakeFullScreen()
         {
-            this.SetSize(GRoot.inst.width, GRoot.inst.height);
+            //这里做了最大宽度适配
+            float targetWidth;
+            float maxAspectRatio = 1080 * 1.0f / 1920;
+            if (Screen.width * 1.0f / Screen.height > maxAspectRatio)
+            {
+                targetWidth = GRoot.inst.height * maxAspectRatio;
+                this.Center();
+            }
+            else
+            {
+                targetWidth = GRoot.inst.width;
+            }
+            this.SetSize(targetWidth, GRoot.inst.height);
         }
 
         /// <summary>