com.taptap.sdk.core 4.3.0-aplha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/Editor/BuildTargetUtils.cs +14 -0
  2. package/Editor/BuildTargetUtils.cs.meta +11 -0
  3. package/Editor/LinkXMLGenerator.cs +70 -0
  4. package/Editor/LinkXMLGenerator.cs.meta +11 -0
  5. package/Editor/Plist.cs +954 -0
  6. package/Editor/Plist.cs.meta +3 -0
  7. package/Editor/SDKLinkProcessBuild.cs +119 -0
  8. package/Editor/SDKLinkProcessBuild.cs.meta +11 -0
  9. package/Editor/TapFileHelper.cs +168 -0
  10. package/Editor/TapFileHelper.cs.meta +3 -0
  11. package/Editor/TapSDK.Core.Editor.asmdef +15 -0
  12. package/Editor/TapSDK.Core.Editor.asmdef.meta +7 -0
  13. package/Editor/TapSDKCoreCompile.cs +284 -0
  14. package/Editor/TapSDKCoreCompile.cs.meta +3 -0
  15. package/Editor/TapSDKCoreIOSProcessor.cs +74 -0
  16. package/Editor/TapSDKCoreIOSProcessor.cs.meta +3 -0
  17. package/Editor/UI/ScrollViewEditor.cs +267 -0
  18. package/Editor/UI/ScrollViewEditor.cs.meta +12 -0
  19. package/Editor/UI/ScrollViewExEditor.cs +34 -0
  20. package/Editor/UI/ScrollViewExEditor.cs.meta +12 -0
  21. package/Editor/UI/TapSDK.UI.Editor.asmdef +17 -0
  22. package/Editor/UI/TapSDK.UI.Editor.asmdef.meta +7 -0
  23. package/Editor/UI.meta +9 -0
  24. package/Editor.meta +8 -0
  25. package/Mobile/Editor/NativeDependencies.xml +22 -0
  26. package/Mobile/Editor/NativeDependencies.xml.meta +7 -0
  27. package/Mobile/Editor/TapCommonMobileProcessBuild.cs +20 -0
  28. package/Mobile/Editor/TapCommonMobileProcessBuild.cs.meta +11 -0
  29. package/Mobile/Editor/TapSDK.Core.Mobile.Editor.asmdef +17 -0
  30. package/Mobile/Editor/TapSDK.Core.Mobile.Editor.asmdef.meta +7 -0
  31. package/Mobile/Editor.meta +8 -0
  32. package/Mobile/Runtime/AndroidNativeWrapper.cs +50 -0
  33. package/Mobile/Runtime/AndroidNativeWrapper.cs.meta +11 -0
  34. package/Mobile/Runtime/Bridge.cs +84 -0
  35. package/Mobile/Runtime/Bridge.cs.meta +11 -0
  36. package/Mobile/Runtime/BridgeAndroid.cs +73 -0
  37. package/Mobile/Runtime/BridgeAndroid.cs.meta +11 -0
  38. package/Mobile/Runtime/BridgeCallback.cs +35 -0
  39. package/Mobile/Runtime/BridgeCallback.cs.meta +11 -0
  40. package/Mobile/Runtime/BridgeIOS.cs +113 -0
  41. package/Mobile/Runtime/BridgeIOS.cs.meta +11 -0
  42. package/Mobile/Runtime/Command.cs +119 -0
  43. package/Mobile/Runtime/Command.cs.meta +11 -0
  44. package/Mobile/Runtime/Constants.cs +9 -0
  45. package/Mobile/Runtime/Constants.cs.meta +11 -0
  46. package/Mobile/Runtime/EngineBridgeInitializer.cs +33 -0
  47. package/Mobile/Runtime/EngineBridgeInitializer.cs.meta +11 -0
  48. package/Mobile/Runtime/IBridge.cs +15 -0
  49. package/Mobile/Runtime/IBridge.cs.meta +11 -0
  50. package/Mobile/Runtime/IOSNativeWrapper.cs +273 -0
  51. package/Mobile/Runtime/IOSNativeWrapper.cs.meta +11 -0
  52. package/Mobile/Runtime/Result.cs +37 -0
  53. package/Mobile/Runtime/Result.cs.meta +11 -0
  54. package/Mobile/Runtime/TapCoreMobile.cs +71 -0
  55. package/Mobile/Runtime/TapCoreMobile.cs.meta +11 -0
  56. package/Mobile/Runtime/TapEventMobile.cs +265 -0
  57. package/Mobile/Runtime/TapEventMobile.cs.meta +11 -0
  58. package/Mobile/Runtime/TapSDK.Core.Mobile.Runtime.asmdef +18 -0
  59. package/Mobile/Runtime/TapSDK.Core.Mobile.Runtime.asmdef.meta +7 -0
  60. package/Mobile/Runtime/TapUUID.cs +9 -0
  61. package/Mobile/Runtime/TapUUID.cs.meta +11 -0
  62. package/Mobile/Runtime.meta +8 -0
  63. package/Mobile.meta +8 -0
  64. package/Plugins/iOS.meta +8 -0
  65. package/Plugins.meta +8 -0
  66. package/Resources/Fonts/taptap-sdk-bold.ttf +0 -0
  67. package/Resources/Fonts/taptap-sdk-bold.ttf.meta +22 -0
  68. package/Resources/Fonts/taptap-sdk.ttf +0 -0
  69. package/Resources/Fonts/taptap-sdk.ttf.meta +21 -0
  70. package/Resources/Fonts.meta +8 -0
  71. package/Resources/Loading.prefab +260 -0
  72. package/Resources/Loading.prefab.meta +7 -0
  73. package/Resources/TapCommonTip.prefab +194 -0
  74. package/Resources/TapCommonTip.prefab.meta +7 -0
  75. package/Resources/TapCommonToastBlack.prefab +528 -0
  76. package/Resources/TapCommonToastBlack.prefab.meta +7 -0
  77. package/Resources/TapCommonToastWhite.prefab +411 -0
  78. package/Resources/TapCommonToastWhite.prefab.meta +7 -0
  79. package/Resources/TapSDKCommonTapIcon-v2.png +0 -0
  80. package/Resources/TapSDKCommonTapIcon-v2.png.meta +128 -0
  81. package/Resources/TapSDKCommonTapIcon.png +0 -0
  82. package/Resources/TapSDKCommonTapIcon.png.meta +128 -0
  83. package/Resources/TapSDKCommonToastBg.png +0 -0
  84. package/Resources/TapSDKCommonToastBg.png.meta +128 -0
  85. package/Resources/TapSDKConstantUIRoot.prefab +100 -0
  86. package/Resources/TapSDKConstantUIRoot.prefab.meta +7 -0
  87. package/Resources/TapSDKUIRoot.prefab +100 -0
  88. package/Resources/TapSDKUIRoot.prefab.meta +7 -0
  89. package/Resources/TapTapBtn_White.png +0 -0
  90. package/Resources/TapTapBtn_White.png.meta +128 -0
  91. package/Resources/TapTapBtn_White_2.png +0 -0
  92. package/Resources/TapTapBtn_White_2.png.meta +128 -0
  93. package/Resources/ToastBackground.png +0 -0
  94. package/Resources/ToastBackground.png.meta +128 -0
  95. package/Resources/detail_bg.png +0 -0
  96. package/Resources/detail_bg.png.meta +92 -0
  97. package/Resources/success.png +0 -0
  98. package/Resources/success.png.meta +128 -0
  99. package/Resources/taptap-bg.png +0 -0
  100. package/Resources/taptap-bg.png.meta +140 -0
  101. package/Resources/taptap-close.png +0 -0
  102. package/Resources/taptap-close.png.meta +146 -0
  103. package/Resources/taptap-router-v2.png +0 -0
  104. package/Resources/taptap-router-v2.png.meta +128 -0
  105. package/Resources/taptap-router.png +0 -0
  106. package/Resources/taptap-router.png.meta +146 -0
  107. package/Resources/taptap-sdk-refresh 1.png +0 -0
  108. package/Resources/taptap-sdk-refresh 1.png.meta +128 -0
  109. package/Resources/taptap-toast-error.png +0 -0
  110. package/Resources/taptap-toast-error.png.meta +128 -0
  111. package/Resources/taptap-toast-info.png +0 -0
  112. package/Resources/taptap-toast-info.png.meta +128 -0
  113. package/Resources/taptap-toast-success.png +0 -0
  114. package/Resources/taptap-toast-success.png.meta +128 -0
  115. package/Resources/taptap-toast-warning.png +0 -0
  116. package/Resources/taptap-toast-warning.png.meta +128 -0
  117. package/Resources.meta +8 -0
  118. package/Runtime/Internal/Http/TapHttpClient.cs +176 -0
  119. package/Runtime/Internal/Http/TapHttpClient.cs.meta +11 -0
  120. package/Runtime/Internal/Http/TapHttpUtils.cs +83 -0
  121. package/Runtime/Internal/Http/TapHttpUtils.cs.meta +11 -0
  122. package/Runtime/Internal/Http.meta +8 -0
  123. package/Runtime/Internal/Init/IInitTask.cs +18 -0
  124. package/Runtime/Internal/Init/IInitTask.cs.meta +11 -0
  125. package/Runtime/Internal/Init.meta +8 -0
  126. package/Runtime/Internal/Json/TapJsonConverter.cs +40 -0
  127. package/Runtime/Internal/Json/TapJsonConverter.cs.meta +11 -0
  128. package/Runtime/Internal/Json.meta +8 -0
  129. package/Runtime/Internal/Platform/ITapCorePlatform.cs +12 -0
  130. package/Runtime/Internal/Platform/ITapCorePlatform.cs.meta +11 -0
  131. package/Runtime/Internal/Platform/ITapEventPlatform.cs +37 -0
  132. package/Runtime/Internal/Platform/ITapEventPlatform.cs.meta +11 -0
  133. package/Runtime/Internal/Platform/PlatformTypeUtils.cs +46 -0
  134. package/Runtime/Internal/Platform/PlatformTypeUtils.cs.meta +11 -0
  135. package/Runtime/Internal/Platform.meta +8 -0
  136. package/Runtime/Internal/UI/Base/Const.cs +27 -0
  137. package/Runtime/Internal/UI/Base/Const.cs.meta +11 -0
  138. package/Runtime/Internal/UI/Base/GraphicRaycasterBugFixed.cs +240 -0
  139. package/Runtime/Internal/UI/Base/GraphicRaycasterBugFixed.cs.meta +3 -0
  140. package/Runtime/Internal/UI/Base/LoadingPanelController.cs +29 -0
  141. package/Runtime/Internal/UI/Base/LoadingPanelController.cs.meta +11 -0
  142. package/Runtime/Internal/UI/Base/MonoSingleton.cs +102 -0
  143. package/Runtime/Internal/UI/Base/MonoSingleton.cs.meta +11 -0
  144. package/Runtime/Internal/UI/Base/Singleton.cs +29 -0
  145. package/Runtime/Internal/UI/Base/Singleton.cs.meta +11 -0
  146. package/Runtime/Internal/UI/Base/TipPanelController.cs +45 -0
  147. package/Runtime/Internal/UI/Base/TipPanelController.cs.meta +3 -0
  148. package/Runtime/Internal/UI/Base/ToastBlackPanelController.cs +95 -0
  149. package/Runtime/Internal/UI/Base/ToastBlackPanelController.cs.meta +11 -0
  150. package/Runtime/Internal/UI/Base/ToastWhitePanelController.cs +79 -0
  151. package/Runtime/Internal/UI/Base/ToastWhitePanelController.cs.meta +3 -0
  152. package/Runtime/Internal/UI/Base/UIManager.cs +724 -0
  153. package/Runtime/Internal/UI/Base/UIManager.cs.meta +11 -0
  154. package/Runtime/Internal/UI/Base.meta +8 -0
  155. package/Runtime/Internal/UI/BasePanel/BasePanelController.cs +385 -0
  156. package/Runtime/Internal/UI/BasePanel/BasePanelController.cs.meta +11 -0
  157. package/Runtime/Internal/UI/BasePanel.meta +8 -0
  158. package/Runtime/Internal/UI/Params/BasePanelConfig.cs +18 -0
  159. package/Runtime/Internal/UI/Params/BasePanelConfig.cs.meta +11 -0
  160. package/Runtime/Internal/UI/Params/IOpenPanelParameter.cs +7 -0
  161. package/Runtime/Internal/UI/Params/IOpenPanelParameter.cs.meta +11 -0
  162. package/Runtime/Internal/UI/Params.meta +8 -0
  163. package/Runtime/Internal/UI/ScrollViewEx/ObjPool/SimpleObjPool.cs +76 -0
  164. package/Runtime/Internal/UI/ScrollViewEx/ObjPool/SimpleObjPool.cs.meta +12 -0
  165. package/Runtime/Internal/UI/ScrollViewEx/ObjPool.meta +9 -0
  166. package/Runtime/Internal/UI/ScrollViewEx/ScrollView/ScrollView.cs +828 -0
  167. package/Runtime/Internal/UI/ScrollViewEx/ScrollView/ScrollView.cs.meta +12 -0
  168. package/Runtime/Internal/UI/ScrollViewEx/ScrollView/ScrollViewEx.cs +245 -0
  169. package/Runtime/Internal/UI/ScrollViewEx/ScrollView/ScrollViewEx.cs.meta +12 -0
  170. package/Runtime/Internal/UI/ScrollViewEx/ScrollView.meta +9 -0
  171. package/Runtime/Internal/UI/ScrollViewEx.meta +8 -0
  172. package/Runtime/Internal/UI.meta +8 -0
  173. package/Runtime/Internal/Utils/BridgeUtils.cs +29 -0
  174. package/Runtime/Internal/Utils/BridgeUtils.cs.meta +11 -0
  175. package/Runtime/Internal/Utils/ImageUtils.cs +147 -0
  176. package/Runtime/Internal/Utils/ImageUtils.cs.meta +11 -0
  177. package/Runtime/Internal/Utils/TapLoom.cs +155 -0
  178. package/Runtime/Internal/Utils/TapLoom.cs.meta +11 -0
  179. package/Runtime/Internal/Utils/UrlUtils.cs +34 -0
  180. package/Runtime/Internal/Utils/UrlUtils.cs.meta +11 -0
  181. package/Runtime/Internal/Utils.meta +8 -0
  182. package/Runtime/Internal.meta +8 -0
  183. package/Runtime/Public/DataStorage.cs +141 -0
  184. package/Runtime/Public/DataStorage.cs.meta +11 -0
  185. package/Runtime/Public/ITapPropertiesProxy.cs +6 -0
  186. package/Runtime/Public/ITapPropertiesProxy.cs.meta +11 -0
  187. package/Runtime/Public/Json.cs +636 -0
  188. package/Runtime/Public/Json.cs.meta +11 -0
  189. package/Runtime/Public/Log/TapLogLevel.cs +7 -0
  190. package/Runtime/Public/Log/TapLogLevel.cs.meta +11 -0
  191. package/Runtime/Public/Log/TapLogger.cs +48 -0
  192. package/Runtime/Public/Log/TapLogger.cs.meta +11 -0
  193. package/Runtime/Public/Log.meta +8 -0
  194. package/Runtime/Public/Platform.cs +27 -0
  195. package/Runtime/Public/Platform.cs.meta +11 -0
  196. package/Runtime/Public/RegionType.cs +8 -0
  197. package/Runtime/Public/RegionType.cs.meta +11 -0
  198. package/Runtime/Public/SafeDictionary.cs +27 -0
  199. package/Runtime/Public/SafeDictionary.cs.meta +11 -0
  200. package/Runtime/Public/TapError.cs +62 -0
  201. package/Runtime/Public/TapError.cs.meta +11 -0
  202. package/Runtime/Public/TapErrorCode.cs +44 -0
  203. package/Runtime/Public/TapErrorCode.cs.meta +11 -0
  204. package/Runtime/Public/TapException.cs +24 -0
  205. package/Runtime/Public/TapException.cs.meta +11 -0
  206. package/Runtime/Public/TapLanguage.cs +21 -0
  207. package/Runtime/Public/TapLanguage.cs.meta +11 -0
  208. package/Runtime/Public/TapLocalizeManager.cs +128 -0
  209. package/Runtime/Public/TapLocalizeManager.cs.meta +11 -0
  210. package/Runtime/Public/TapTapEvent.cs +93 -0
  211. package/Runtime/Public/TapTapEvent.cs.meta +11 -0
  212. package/Runtime/Public/TapTapSDK.cs +96 -0
  213. package/Runtime/Public/TapTapSDK.cs.meta +11 -0
  214. package/Runtime/Public/TapTapSDKCoreOptions.cs +104 -0
  215. package/Runtime/Public/TapTapSDKCoreOptions.cs.meta +11 -0
  216. package/Runtime/Public.meta +8 -0
  217. package/Runtime/TapSDK.Core.Runtime.asmdef +3 -0
  218. package/Runtime/TapSDK.Core.Runtime.asmdef.meta +7 -0
  219. package/Runtime.meta +8 -0
  220. package/Standalone/Editor/TapCoreStandaloneProcessBuild.cs +20 -0
  221. package/Standalone/Editor/TapCoreStandaloneProcessBuild.cs.meta +11 -0
  222. package/Standalone/Editor/TapSDK.Core.Standalone.Editor.asmdef +17 -0
  223. package/Standalone/Editor/TapSDK.Core.Standalone.Editor.asmdef.meta +7 -0
  224. package/Standalone/Editor.meta +8 -0
  225. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/Info.plist +46 -0
  226. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/Info.plist.meta +7 -0
  227. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/MacOS/TapDBDeviceInfo +0 -0
  228. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/MacOS/TapDBDeviceInfo.meta +7 -0
  229. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/MacOS.meta +8 -0
  230. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/_CodeSignature/CodeResources +115 -0
  231. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/_CodeSignature/CodeResources.meta +7 -0
  232. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents/_CodeSignature.meta +8 -0
  233. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle/Contents.meta +8 -0
  234. package/Standalone/Plugins/macOS/TapDBDeviceInfo.bundle.meta +33 -0
  235. package/Standalone/Plugins/macOS.meta +8 -0
  236. package/Standalone/Plugins.meta +8 -0
  237. package/Standalone/Runtime/Internal/Constants.cs +37 -0
  238. package/Standalone/Runtime/Internal/Constants.cs.meta +11 -0
  239. package/Standalone/Runtime/Internal/DeviceInfo.cs +152 -0
  240. package/Standalone/Runtime/Internal/DeviceInfo.cs.meta +11 -0
  241. package/Standalone/Runtime/Internal/EventSender.cs +239 -0
  242. package/Standalone/Runtime/Internal/EventSender.cs.meta +11 -0
  243. package/Standalone/Runtime/Internal/Http/HttpClient.cs +211 -0
  244. package/Standalone/Runtime/Internal/Http/HttpClient.cs.meta +11 -0
  245. package/Standalone/Runtime/Internal/Http/NetUtils.cs +48 -0
  246. package/Standalone/Runtime/Internal/Http/NetUtils.cs.meta +11 -0
  247. package/Standalone/Runtime/Internal/Http/TimeUtil.cs +30 -0
  248. package/Standalone/Runtime/Internal/Http/TimeUtil.cs.meta +11 -0
  249. package/Standalone/Runtime/Internal/Http.meta +8 -0
  250. package/Standalone/Runtime/Internal/Identity.cs +43 -0
  251. package/Standalone/Runtime/Internal/Identity.cs.meta +11 -0
  252. package/Standalone/Runtime/Internal/PlayRecorder.cs +53 -0
  253. package/Standalone/Runtime/Internal/PlayRecorder.cs.meta +11 -0
  254. package/Standalone/Runtime/Internal/Prefs.cs +85 -0
  255. package/Standalone/Runtime/Internal/Prefs.cs.meta +11 -0
  256. package/Standalone/Runtime/Internal/Tracker.cs +318 -0
  257. package/Standalone/Runtime/Internal/Tracker.cs.meta +11 -0
  258. package/Standalone/Runtime/Internal/User.cs +51 -0
  259. package/Standalone/Runtime/Internal/User.cs.meta +11 -0
  260. package/Standalone/Runtime/Internal.meta +8 -0
  261. package/Standalone/Runtime/Public/EventManager.cs +41 -0
  262. package/Standalone/Runtime/Public/EventManager.cs.meta +11 -0
  263. package/Standalone/Runtime/Public/TapCoreStandalone.cs +197 -0
  264. package/Standalone/Runtime/Public/TapCoreStandalone.cs.meta +11 -0
  265. package/Standalone/Runtime/Public/TapEventStandalone.cs +281 -0
  266. package/Standalone/Runtime/Public/TapEventStandalone.cs.meta +11 -0
  267. package/Standalone/Runtime/Public.meta +8 -0
  268. package/Standalone/Runtime/TapSDK.Core.Standalone.Runtime.asmdef +21 -0
  269. package/Standalone/Runtime/TapSDK.Core.Standalone.Runtime.asmdef.meta +7 -0
  270. package/Standalone/Runtime.meta +8 -0
  271. package/Standalone.meta +8 -0
  272. package/package.json +8 -0
  273. package/package.json.meta +7 -0
@@ -0,0 +1,724 @@
1
+ using System;
2
+ using System.Collections.Generic;
3
+ using System.Linq;
4
+ using System.Threading.Tasks;
5
+ using UnityEngine;
6
+ using UnityEngine.UI;
7
+
8
+ namespace TapSDK.UI
9
+ {
10
+ public class UIManager : MonoSingleton<UIManager>
11
+ {
12
+ public enum GeneralToastLevel {
13
+ None = 0,
14
+ Info = 1,
15
+ Warning = 2,
16
+ Error = 3,
17
+ Success =4,
18
+ }
19
+
20
+ private class ToastConfig {
21
+ public bool white;
22
+ public string text;
23
+ public float popupTime;
24
+ public Texture icon;
25
+ }
26
+
27
+ private static Texture whiteToastSuccessIcon;
28
+ private static Texture whiteToastErrorIcon;
29
+ private static Texture whiteToastInfoIcon;
30
+ private static Texture whiteToastWarningIcon;
31
+ private static Texture taptapToastIcon;
32
+
33
+ public static Texture WhiteToastSuccessIcon {
34
+ get {
35
+ if (whiteToastSuccessIcon == null)
36
+ whiteToastSuccessIcon = UnityEngine.Resources.Load<Texture>("taptap-toast-success");
37
+ return whiteToastSuccessIcon;
38
+ }
39
+ }
40
+
41
+ public static Texture WhiteToastErrorIcon {
42
+ get {
43
+ if (whiteToastErrorIcon == null)
44
+ whiteToastErrorIcon = UnityEngine.Resources.Load<Texture>("taptap-toast-error");
45
+ return whiteToastErrorIcon;
46
+ }
47
+ }
48
+
49
+ public static Texture WhiteToastWarningIcon {
50
+ get {
51
+ if (whiteToastWarningIcon == null)
52
+ whiteToastWarningIcon = UnityEngine.Resources.Load<Texture>("taptap-toast-warning");
53
+ return whiteToastWarningIcon;
54
+ }
55
+ }
56
+
57
+ public static Texture WhiteToastInfoIcon {
58
+ get {
59
+ if (whiteToastInfoIcon == null)
60
+ whiteToastInfoIcon = UnityEngine.Resources.Load<Texture>("taptap-toast-info");
61
+ return whiteToastInfoIcon;
62
+ }
63
+ }
64
+
65
+ public static Texture TapTapToastIcon {
66
+ get {
67
+ if (taptapToastIcon == null)
68
+ taptapToastIcon = Resources.Load<Texture>("TapSDKCommonTapIcon-v2");
69
+ return taptapToastIcon;
70
+ }
71
+ }
72
+
73
+ private List<ToastConfig> _toastCacheData = new List<ToastConfig>(12);
74
+ public const int TOPPEST_SORTING_ORDER = 32767;
75
+
76
+ private const int LOADING_PANEL_SORTING_ORDER = TOPPEST_SORTING_ORDER;
77
+
78
+ private const int TOAST_PANEL_SORTING_ORDER = TOPPEST_SORTING_ORDER - 10;
79
+ private const int TIP_PANEL_SORTING_ORDER = TOPPEST_SORTING_ORDER - 20;
80
+
81
+ private const int REFERENCE_WIDTH = 1920;
82
+ private const int REFERENCE_HEIGHT = 1080;
83
+
84
+ private readonly Dictionary<Type, BasePanelController> _registerPanels = new Dictionary<Type, BasePanelController>();
85
+
86
+ // uicamera
87
+ private Camera _uiCamera;
88
+
89
+ private GameObject _uiRoot;
90
+ private GameObject _uiConstantRoot;
91
+ private Canvas _uiRootCanvas;
92
+
93
+ public Camera UiCamera => _uiCamera;
94
+
95
+ public override void Init()
96
+ {
97
+ if (_uiRoot == null && Application.isPlaying)
98
+ {
99
+ CreateUIRoot();
100
+ }
101
+ }
102
+
103
+ private void CreateUIRoot()
104
+ {
105
+ _uiRoot = Instantiate(Resources.Load<GameObject>("TapSDKUIRoot"));
106
+ DontDestroyOnLoad(_uiRoot);
107
+ var canvas = _uiRoot.GetComponent<Canvas>();
108
+ _uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? Camera.main : canvas.worldCamera;
109
+ _uiRoot.transform.SetParent(UIManager.Instance.transform);
110
+ _uiRootCanvas = _uiRoot.transform.GetComponent<Canvas>();
111
+
112
+ CanvasScaler scaler = _uiRoot.GetComponent<CanvasScaler>();
113
+ scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
114
+ scaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
115
+ scaler.referenceResolution = new Vector2(REFERENCE_WIDTH, REFERENCE_HEIGHT);
116
+ float referenceRatio = REFERENCE_WIDTH * 1.0f / REFERENCE_HEIGHT;
117
+ float screenRatio = Screen.width * 1.0f / Screen.height;
118
+ scaler.matchWidthOrHeight = screenRatio > referenceRatio ? 1 : 0;
119
+
120
+ _uiConstantRoot = Instantiate(Resources.Load<GameObject>("TapSDKConstantUIRoot"));
121
+ DontDestroyOnLoad(_uiConstantRoot);
122
+ canvas = _uiConstantRoot.GetComponent<Canvas>();
123
+ _uiCamera = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? Camera.main : canvas.worldCamera;
124
+ _uiConstantRoot.transform.SetParent(UIManager.Instance.transform);
125
+ _uiRootCanvas = _uiConstantRoot.transform.GetComponent<Canvas>();
126
+ }
127
+
128
+ public override void Uninit()
129
+ {
130
+ _uiCamera = null;
131
+ _uiRoot = null;
132
+ _uiConstantRoot = null;
133
+ _uiRootCanvas = null;
134
+ base.Uninit();
135
+ }
136
+
137
+ /// <summary>
138
+ /// Get Or Create UI asynchronously
139
+ /// </summary>
140
+ /// <param name="path">the prefab path</param>
141
+ /// <param name="param">opening param</param>
142
+ /// <param name="onAsyncGet">if u want to get ui do something,here is for u, which is invoked after BasePanelController.OnLoadSuccess</param>
143
+ /// <typeparam name="TPanelController"></typeparam>
144
+ /// <returns>get panel instance if sync mode load</returns>
145
+ public async Task<TPanelController> OpenUIAsync<TPanelController>(string path, AbstractOpenPanelParameter param = null, Action<BasePanelController> onAsyncGet = null) where TPanelController : BasePanelController
146
+ {
147
+ var basePanelController = GetUI<TPanelController>();
148
+
149
+ // 如果已有界面(之前缓存过的),则不执行任何操作
150
+ if (basePanelController != null)
151
+ {
152
+ if (!basePanelController.canvas.enabled)
153
+ {
154
+ basePanelController.canvas.enabled = true;
155
+ }
156
+
157
+ onAsyncGet?.Invoke(basePanelController);
158
+
159
+ return basePanelController;
160
+ }
161
+
162
+ ResourceRequest request = Resources.LoadAsync<GameObject>(path);
163
+ while (request.isDone == false)
164
+ {
165
+ await Task.Yield();
166
+ }
167
+
168
+ GameObject go = request.asset as GameObject;
169
+ var basePanel = Instantiate(go).GetComponent<TPanelController>();
170
+ if (basePanel != null)
171
+ {
172
+ var prefabRectTransform = basePanel.transform as RectTransform;
173
+ var anchorMin = prefabRectTransform.anchorMin;
174
+ var anchorMax = prefabRectTransform.anchorMax;
175
+ var anchoredPosition = prefabRectTransform.anchoredPosition;
176
+ var sizeDelta = prefabRectTransform.sizeDelta;
177
+
178
+ InternalOnPanelLoaded(typeof(TPanelController), basePanel, param);
179
+ if (IsNeedCorrectRectTransform(basePanel))
180
+ {
181
+ var panelRectTransform = basePanel.transform as RectTransform;
182
+ panelRectTransform.anchorMin = anchorMin;
183
+ panelRectTransform.anchorMax = anchorMax;
184
+ panelRectTransform.anchoredPosition = anchoredPosition;
185
+ panelRectTransform.sizeDelta = sizeDelta;
186
+ }
187
+ onAsyncGet?.Invoke(basePanel);
188
+
189
+ EnsureSpecialPanel();
190
+ return basePanel;
191
+ }
192
+ else
193
+ {
194
+ return null;
195
+ }
196
+ }
197
+
198
+ /// <summary>
199
+ /// Get Or Create UI asynchronously
200
+ /// </summary>
201
+ /// <param name="panelType">the panel Type</param>
202
+ /// <param name="path">the prefab path</param>
203
+ /// <param name="param">opening param</param>
204
+ /// <param name="onAsyncGet">if u want to get ui do something,here is for u, which is invoked after BasePanelController.OnLoadSuccess</param>
205
+ /// <returns>get panel instance if sync mode load</returns>
206
+ public async Task<BasePanelController> OpenUIAsync(Type panelType, string path, AbstractOpenPanelParameter param = null, Action<BasePanelController> onAsyncGet = null)
207
+ {
208
+ if (!typeof(BasePanelController).IsAssignableFrom(panelType))
209
+ {
210
+ return null;
211
+ }
212
+ var basePanelController = GetUI(panelType);
213
+
214
+ // 如果已有界面(之前缓存过的),则不执行任何操作
215
+ if (basePanelController != null)
216
+ {
217
+ if (!basePanelController.canvas.enabled)
218
+ {
219
+ basePanelController.canvas.enabled = true;
220
+ }
221
+
222
+ onAsyncGet?.Invoke(basePanelController);
223
+
224
+ return basePanelController;
225
+ }
226
+
227
+ ResourceRequest request = Resources.LoadAsync<GameObject>(path);
228
+ while (request.isDone == false)
229
+ {
230
+ await Task.Yield();
231
+ }
232
+
233
+ GameObject go = request.asset as GameObject;
234
+ var basePanel = Instantiate(go).GetComponent<BasePanelController>();
235
+ if (basePanel != null)
236
+ {
237
+ var prefabRectTransform = basePanel.transform as RectTransform;
238
+ var anchorMin = prefabRectTransform.anchorMin;
239
+ var anchorMax = prefabRectTransform.anchorMax;
240
+ var anchoredPosition = prefabRectTransform.anchoredPosition;
241
+ var sizeDelta = prefabRectTransform.sizeDelta;
242
+
243
+ InternalOnPanelLoaded(panelType, basePanel, param);
244
+ if (IsNeedCorrectRectTransform(basePanel))
245
+ {
246
+ var panelRectTransform = basePanel.transform as RectTransform;
247
+ panelRectTransform.anchorMin = anchorMin;
248
+ panelRectTransform.anchorMax = anchorMax;
249
+ panelRectTransform.anchoredPosition = anchoredPosition;
250
+ panelRectTransform.sizeDelta = sizeDelta;
251
+ }
252
+ onAsyncGet?.Invoke(basePanel);
253
+
254
+ EnsureSpecialPanel();
255
+ return basePanel;
256
+ }
257
+ else
258
+ {
259
+ return null;
260
+ }
261
+ }
262
+
263
+ /// <summary>
264
+ /// Get Or Create UI
265
+ /// </summary>
266
+ /// <param name="path">the prefab path</param>
267
+ /// <param name="param">opening param</param>
268
+ /// <typeparam name="TPanelController"></typeparam>
269
+ /// <returns>get panel instance if sync mode load</returns>
270
+ public TPanelController OpenUI<TPanelController>(string path, AbstractOpenPanelParameter param = null) where TPanelController : BasePanelController
271
+ {
272
+ TPanelController basePanelController = GetUI<TPanelController>();
273
+
274
+ // 如果已有界面(之前缓存过的),则不执行任何操作
275
+ if (basePanelController != null)
276
+ {
277
+ if (!basePanelController.canvas.enabled)
278
+ {
279
+ basePanelController.canvas.enabled = true;
280
+ }
281
+
282
+ return basePanelController;
283
+ }
284
+
285
+ var go = Resources.Load(path) as GameObject;
286
+ if (go != null)
287
+ {
288
+ var prefabRectTransform = go.transform as RectTransform;
289
+ var anchorMin = prefabRectTransform.anchorMin;
290
+ var anchorMax = prefabRectTransform.anchorMax;
291
+ var anchoredPosition = prefabRectTransform.anchoredPosition;
292
+ var sizeDelta = prefabRectTransform.sizeDelta;
293
+
294
+ GameObject panelGo = GameObject.Instantiate(go);
295
+
296
+ var basePanel = panelGo.GetComponent<TPanelController>();
297
+ if (basePanel == null) {
298
+ basePanel = panelGo.AddComponent<TPanelController>();
299
+ }
300
+ _registerPanels.Add(typeof(TPanelController), basePanel);
301
+
302
+ basePanel.transform.SetAsLastSibling();
303
+ if (IsNeedCorrectRectTransform(basePanel))
304
+ {
305
+ var panelRectTransform = basePanel.transform as RectTransform;
306
+ panelRectTransform.anchorMin = anchorMin;
307
+ panelRectTransform.anchorMax = anchorMax;
308
+ panelRectTransform.anchoredPosition = anchoredPosition;
309
+ panelRectTransform.sizeDelta = sizeDelta;
310
+ }
311
+
312
+ basePanel.OnLoaded(param);
313
+
314
+ EnsureSpecialPanel();
315
+ return basePanel;
316
+ }
317
+ return null;
318
+ }
319
+
320
+ /// <summary>
321
+ /// Get Or Create UI
322
+ /// </summary>
323
+ /// <param name="panelType">panel type MUST based on BasePanelController</param>
324
+ /// <param name="path">the prefab path</param>
325
+ /// <param name="param">opening param</param>
326
+ /// <returns>get panel instance if sync mode load</returns>
327
+ public BasePanelController OpenUI(Type panelType, string path, AbstractOpenPanelParameter param = null)
328
+ {
329
+ if (!typeof(BasePanelController).IsAssignableFrom(panelType))
330
+ {
331
+ return null;
332
+ }
333
+ var basePanelController = GetUI(panelType);
334
+
335
+ // 如果已有界面(之前缓存过的),则不执行任何操作
336
+ if (basePanelController != null)
337
+ {
338
+ if (basePanelController != null && !basePanelController.canvas.enabled)
339
+ {
340
+ basePanelController.canvas.enabled = true;
341
+ }
342
+
343
+ return basePanelController;
344
+ }
345
+
346
+ var panelGo = Resources.Load(path) as GameObject;
347
+ if (panelGo != null)
348
+ {
349
+ var prefabRectTransform = panelGo.transform as RectTransform;
350
+ var anchorMin = prefabRectTransform.anchorMin;
351
+ var anchorMax = prefabRectTransform.anchorMax;
352
+ var anchoredPosition = prefabRectTransform.anchoredPosition;
353
+ var sizeDelta = prefabRectTransform.sizeDelta;
354
+
355
+ var basePanel = GameObject.Instantiate(panelGo).GetComponent<BasePanelController>();
356
+
357
+ _registerPanels.Add(panelType, basePanel);
358
+
359
+ // basePanel.SetOpenOrder(uiOpenOrder);
360
+ basePanel.transform.SetAsLastSibling();
361
+
362
+ if (IsNeedCorrectRectTransform(basePanel))
363
+ {
364
+ var panelRectTransform = basePanel.transform as RectTransform;
365
+ panelRectTransform.anchorMin = anchorMin;
366
+ panelRectTransform.anchorMax = anchorMax;
367
+ panelRectTransform.anchoredPosition = anchoredPosition;
368
+ panelRectTransform.sizeDelta = sizeDelta;
369
+ }
370
+ basePanel.OnLoaded(param);
371
+
372
+ EnsureSpecialPanel();
373
+ return basePanel;
374
+ }
375
+ return null;
376
+ }
377
+
378
+ public BasePanelController GetUI(Type panelType)
379
+ {
380
+ if (!typeof(BasePanelController).IsAssignableFrom(panelType))
381
+ {
382
+ return null;
383
+ }
384
+
385
+ if (_registerPanels.TryGetValue(panelType, out BasePanelController basePanelController))
386
+ {
387
+ return basePanelController;
388
+ }
389
+
390
+ return null;
391
+ }
392
+
393
+ public TPanelController GetUI<TPanelController>() where TPanelController : BasePanelController
394
+ {
395
+ Type panelType = typeof(TPanelController);
396
+
397
+ if (_registerPanels.TryGetValue(panelType, out BasePanelController panel))
398
+ {
399
+ return (TPanelController)panel;
400
+ }
401
+
402
+ return null;
403
+ }
404
+
405
+ public bool CloseUI(Type panelType)
406
+ {
407
+ if (!typeof(BasePanelController).IsAssignableFrom(panelType))
408
+ {
409
+ return false;
410
+ }
411
+ BasePanelController baseController = GetUI(panelType);
412
+ if (baseController != null)
413
+ {
414
+ if (panelType == typeof(BasePanelController)) // 标尺界面是测试界面 不用关闭
415
+ return false;
416
+ else
417
+ baseController.Close();
418
+ return true;
419
+ }
420
+ return false;
421
+ }
422
+
423
+ public bool CloseUI<TPanelController>() where TPanelController : BasePanelController
424
+ {
425
+ TPanelController panel = GetUI<TPanelController>();
426
+ if (panel != null)
427
+ {
428
+ panel.Close();
429
+ return true;
430
+ }
431
+ return false;
432
+ }
433
+
434
+ /// <summary>
435
+ /// add ui would invoked after create ui automatically, don't need mannually call it in most case
436
+ /// </summary>
437
+ public void AddUI(BasePanelController panel)
438
+ {
439
+ if (panel == null)
440
+ {
441
+ return;
442
+ }
443
+ var rt = panel.transform as RectTransform;
444
+ Vector2 cacheAP = Vector2.zero;
445
+ Vector2 cacheOffsetMax = Vector2.zero;
446
+ Vector2 cacheOffsetMin = Vector2.zero;
447
+ Vector2 cacheSizeDelta = Vector2.zero;
448
+ if (rt != null)
449
+ {
450
+ cacheAP = rt.anchoredPosition;
451
+ cacheOffsetMax = rt.offsetMax;
452
+ cacheOffsetMin = rt.offsetMin;
453
+ cacheSizeDelta = rt.sizeDelta;
454
+ }
455
+ panel.transform.SetParent(panel.AttachedParent);
456
+ if (rt != null)
457
+ {
458
+ rt.anchoredPosition = cacheAP;
459
+ rt.offsetMax = cacheOffsetMax;
460
+ rt.offsetMin = cacheOffsetMin;
461
+ rt.sizeDelta = cacheSizeDelta;
462
+ }
463
+ panel.transform.localScale = Vector3.one;
464
+ panel.transform.localRotation = Quaternion.identity;
465
+ panel.gameObject.name = panel.gameObject.name.Replace("(Clone)", "");
466
+ }
467
+
468
+ /// <summary>
469
+ /// remove ui would invoked automatically, don't need mannually call it in most case
470
+ /// </summary>
471
+ public void RemoveUI(BasePanelController panel)
472
+ {
473
+ if (panel == null)
474
+ {
475
+ return;
476
+ }
477
+ Type panelType = panel.GetType();
478
+ if (_registerPanels.ContainsKey(panelType))
479
+ {
480
+ _registerPanels.Remove(panelType);
481
+ }
482
+
483
+ if (panelType == typeof(ToastBlackPanelController) || panelType == typeof(ToastWhitePanelController)) {
484
+ CheckToastCache();
485
+ }
486
+
487
+ panel.Dispose();
488
+ }
489
+
490
+ private void CheckToastCache() {
491
+ if (_toastCacheData.Count > 0) {
492
+ var config = _toastCacheData[0];
493
+ InternalOpenToast(config.white, config.text, config.popupTime, config.icon);
494
+ _toastCacheData.RemoveAt(0);
495
+ }
496
+ }
497
+
498
+ /// <summary>
499
+ /// take some ui to the most top layer
500
+ /// </summary>
501
+ /// <param name="panelType"></param>
502
+ public void ToppedUI(Type panelType)
503
+ {
504
+ if (!typeof(BasePanelController).IsAssignableFrom(panelType))
505
+ {
506
+ return;
507
+ }
508
+ ToppedUI(GetUI(panelType));
509
+ }
510
+
511
+ /// <summary>
512
+ /// take some ui to the most top layer
513
+ /// </summary>
514
+ /// <param name="panel"></param>
515
+ /// <param name="toppedSepcialUI">特殊 UI(Loading,Toast之类) 是否需要重新制定</param>
516
+ public void ToppedUI(BasePanelController panel, bool toppedSepcialUI = true)
517
+ {
518
+ if (panel == null)
519
+ {
520
+ return;
521
+ }
522
+
523
+ // panel.SetOpenOrder(uiOpenOrder);
524
+ panel.transform.SetAsLastSibling();
525
+ if (toppedSepcialUI) EnsureSpecialPanel();
526
+ }
527
+
528
+ /// <summary>
529
+ /// open toast panel for tip info
530
+ /// </summary>
531
+ public void OpenToast(bool white, string text, float popupTime = 3.0f, Texture icon = null) {
532
+ // print this function parameters
533
+ if (!string.IsNullOrEmpty(text) && popupTime > 0) {
534
+ bool isShowing = GetUI<ToastWhitePanelController>() != null || GetUI<ToastBlackPanelController>() != null;
535
+ if (ToastTryMerge(white, text, popupTime, icon)) {
536
+ return;
537
+ }
538
+ if (isShowing) {
539
+ var config = new ToastConfig() {
540
+ white = white,
541
+ text = text,
542
+ popupTime = popupTime,
543
+ icon = icon,
544
+ };
545
+ _toastCacheData.Add(config);
546
+ }
547
+ else {
548
+ InternalOpenToast(white, text, popupTime, icon);
549
+ }
550
+ }
551
+ }
552
+
553
+ private bool ToastTryMerge(bool white, string text, float popupTime, Texture icon) {
554
+ var currentToastPanel = GetUI<ToastWhitePanelController>();
555
+ if (currentToastPanel?.toastParam != null) {
556
+ var param = currentToastPanel?.toastParam;
557
+ // 目前只有白色 Toast 进行 Merge
558
+ bool sameToast = param.icon == icon && param.text == text && white;
559
+ if (sameToast) {
560
+ currentToastPanel.Refresh(popupTime);
561
+ return true;
562
+ }
563
+ }
564
+
565
+ return false;
566
+ }
567
+
568
+ /// <summary>
569
+ /// 打开通用 Toast(白色底)
570
+ /// </summary>
571
+ /// <param name="text"></param>
572
+ /// <param name="toastLevel">设置 Toast 提示级别,会展示提示图片,如果不想要提示图片,请使用 GeneralToastLevel.None</param>
573
+ /// <param name="popupTime"></param>
574
+ public void OpenToast(string text, GeneralToastLevel toastLevel, float popupTime = 3.0f) {
575
+ OpenToast(true, text, popupTime, GetToastIcon(toastLevel));
576
+ }
577
+
578
+ private Texture GetToastIcon(GeneralToastLevel toastLevel) {
579
+ if (toastLevel == GeneralToastLevel.None)
580
+ return null;
581
+ switch (toastLevel) {
582
+ case GeneralToastLevel.Info:
583
+ return UIManager.WhiteToastInfoIcon;
584
+ case GeneralToastLevel.Warning:
585
+ return UIManager.WhiteToastWarningIcon;
586
+ case GeneralToastLevel.Error:
587
+ return UIManager.WhiteToastErrorIcon;
588
+ case GeneralToastLevel.Success:
589
+ return UIManager.WhiteToastSuccessIcon;
590
+ }
591
+
592
+ return null;
593
+ }
594
+
595
+ private void InternalOpenToast(bool white, string text, float popupTime, Texture icon) {
596
+ if (string.IsNullOrEmpty(text) || popupTime <= 0) return;
597
+ if (white) {
598
+ var toast = OpenUI<ToastWhitePanelController>("TapCommonToastWhite", new ToastPanelOpenParam(text, popupTime, icon));
599
+ if (toast != null) {
600
+ toast.transform.SetAsLastSibling();
601
+ }
602
+ }
603
+ else {
604
+ var toast = OpenUI<ToastBlackPanelController>("TapCommonToastBlack", new ToastPanelOpenParam(text, popupTime, icon));
605
+ if (toast != null) {
606
+ toast.transform.SetAsLastSibling();
607
+ }
608
+ }
609
+ }
610
+
611
+ /// <summary>
612
+ /// open toast panel for tip info
613
+ /// </summary>
614
+ public void OpenTip(string text, Color textColor, TextAnchor textAnchor = TextAnchor.MiddleCenter)
615
+ {
616
+ if (!string.IsNullOrEmpty(text))
617
+ {
618
+ Debug.LogFormat($"[UIManager] Call OpenTip text:{text} ");
619
+ var tip = OpenUI<TipPanelController>("TapCommonTip", new TipPanelOpenParam(text, textColor, textAnchor));
620
+ if (tip != null)
621
+ {
622
+ tip.transform.SetAsLastSibling();
623
+ }
624
+ }
625
+ }
626
+
627
+ /// <summary>
628
+ /// open loading panel that would at the toppest layer and block interaction
629
+ /// </summary>
630
+ public void OpenLoading()
631
+ {
632
+ var loadingPanel = OpenUI<LoadingPanelController>("Loading");
633
+ if (loadingPanel != null)
634
+ {
635
+ // https://www.reddit.com/r/Unity3D/comments/2b1g1l/order_in_layer_maximum_value/
636
+ // loadingPanel.SetOpenOrder(LOADING_PANEL_SORTING_ORDER);
637
+ loadingPanel.transform.SetAsLastSibling();
638
+ }
639
+ }
640
+
641
+ /// <summary>
642
+ /// open loading panel that would at the toppest layer and block interaction
643
+ /// </summary>
644
+ public async Task OpenLoadingAsync()
645
+ {
646
+ var loadingPanel = await OpenUIAsync<LoadingPanelController>("Loading");
647
+ if (loadingPanel != null)
648
+ {
649
+ // https://www.reddit.com/r/Unity3D/comments/2b1g1l/order_in_layer_maximum_value/
650
+ // loadingPanel.SetOpenOrder(LOADING_PANEL_SORTING_ORDER);
651
+ loadingPanel.transform.SetAsLastSibling();
652
+ }
653
+ }
654
+
655
+ public void CloseLoading()
656
+ {
657
+ var loadingPanel = GetUI<LoadingPanelController>();
658
+ if (loadingPanel != null)
659
+ {
660
+ loadingPanel.Close();
661
+ }
662
+ }
663
+
664
+ public void CloseTip()
665
+ {
666
+ var panel = GetUI<TipPanelController>();
667
+ if (panel != null)
668
+ {
669
+ panel.Close();
670
+ }
671
+ }
672
+
673
+ private bool IsNeedCorrectRectTransform(BasePanelController controller)
674
+ {
675
+ if (controller == null) return false;
676
+ return (controller.panelConfig.animationType & EAnimationMode.RightSlideIn) == EAnimationMode.None;
677
+ }
678
+
679
+ private void InternalOnPanelLoaded(Type tPanelController, BasePanelController basePanel, AbstractOpenPanelParameter param = null)
680
+ {
681
+ _registerPanels.Add(tPanelController, basePanel);
682
+
683
+ basePanel.OnLoaded(param);
684
+
685
+ // basePanel.SetOpenOrder(uiOpenOrder);
686
+
687
+ basePanel.transform.SetAsLastSibling();
688
+ }
689
+
690
+ private void EnsureSpecialPanel()
691
+ {
692
+ var temp = _registerPanels.Where(panel =>
693
+ panel.Value != null && panel.Value.gameObject.activeInHierarchy && panel.Value.toppedOrder != 0);
694
+ var toppedPanels = new List<KeyValuePair<Type,BasePanelController>>(temp);
695
+ if (toppedPanels.Count == 0) return;
696
+ toppedPanels.Sort((x,y)=>x.Value.toppedOrder.CompareTo(y.Value.toppedOrder));
697
+ foreach (var toppedPanel in toppedPanels)
698
+ {
699
+ toppedPanel.Value.transform.SetAsLastSibling();
700
+ }
701
+ }
702
+
703
+ public Transform GetUIRootTransform(BasePanelController panel)
704
+ {
705
+ if (panel?.openParam != null && panel.openParam.NeedConstantResolution)
706
+ return _uiConstantRoot.transform;
707
+ else
708
+ return _uiRoot.transform;
709
+ }
710
+
711
+
712
+ #region external api
713
+ public void SetSortOrder(int order)
714
+ {
715
+ _uiRootCanvas.sortingOrder = order;
716
+ }
717
+
718
+ public Camera GetUICamera()
719
+ {
720
+ return _uiCamera;
721
+ }
722
+ #endregion
723
+ }
724
+ }