From dd5cfa3ab3e46c627efea95a4875d478bdfac527 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 06 六月 2025 11:40:06 +0800
Subject: [PATCH] 18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建 修复scaleinout无效的问题 登录流程优化 closedUIDict没被清空的问题
---
Main/System/UIBase/UIBase.cs | 63 ++++++++++-----------
Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs | 2
Main/Manager/StageManager.cs | 4 +
Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs | 2
Main/Manager/UIManager.cs | 51 +++++++++++-----
Main/ResModule/ResManager.cs | 5 +
6 files changed, 73 insertions(+), 54 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
index 63f1d0a..b425993 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H01_System/DTC0102_tagCDBPlayer.cs
@@ -57,6 +57,8 @@
MainRedDot.Instance.Register();
+ StageManager.Instance.ToGameScene();
+
//SettingMgr.Instance.SetIsRecordData(PlayerDatas.Instance.baseData.PlayerID.ToString());
}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
index 52ba9c9..aad146a 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0403_tagPlayerLoginLoadOK.cs
@@ -30,8 +30,6 @@
{
//鏈嶅姟绔瘡娆″垏鍦烘櫙閮戒細閫氱煡杩欎釜灏佸寘, 澧炲姞棣栨鍦板浘鐧诲綍鎴愬姛浜嬩欢(濡傛灉鏈嶅姟绔瓨鍦ㄥ鍦烘櫙鍒囨崲鐨勬儏鍐�)
playerLoginOkEvent?.Invoke();
- StageManager.Instance.ToGameScene();
- Main.OnEnterGameScene();
}
finishedLogin = true;
//if (mapInitOkEvent != null)
diff --git a/Main/Manager/StageManager.cs b/Main/Manager/StageManager.cs
index c1890ff..fa82c63 100644
--- a/Main/Manager/StageManager.cs
+++ b/Main/Manager/StageManager.cs
@@ -77,11 +77,13 @@
AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Game");
- await OnLoading(asyncOperation, GetManagerRequestDataProgress);
+ await OnLoading(asyncOperation, () => (DTC0403_tagPlayerLoginLoadOK.finishedLogin ? .5f : 0f) + GetManagerRequestDataProgress() * .5f);
// 鍔犺浇鍒濆鍖栨暟鎹畬鎴�
currentStage = StageName.Game;
+ Main.OnEnterGameScene();
+
AfterLoadingGameScene?.Invoke();
UIManager.Instance.OpenWindow<MainWin>();
diff --git a/Main/Manager/UIManager.cs b/Main/Manager/UIManager.cs
index bf666e6..0a81944 100644
--- a/Main/Manager/UIManager.cs
+++ b/Main/Manager/UIManager.cs
@@ -25,9 +25,9 @@
private Transform staticTrans;
private Transform bottomTrans;
private Transform midTrans;
- private Transform topTrans;
private Transform systemTrans;
-
+ private Transform loadingTrans;
+
// UI瀛楀吀锛屽瓨鍌ㄦ墍鏈夊凡鍔犺浇鐨刄I锛岄敭涓篣I鍚嶇О锛屽�间负UI瀹炰緥
private Dictionary<string, List<UIBase>> uiDict = new Dictionary<string, List<UIBase>>();
@@ -112,15 +112,15 @@
staticTrans = uiRoot.Find("Static");
bottomTrans = uiRoot.Find("Bottom");
midTrans = uiRoot.Find("Middle");
- topTrans = uiRoot.Find("Top");
+ loadingTrans = uiRoot.Find("Loading");
systemTrans = uiRoot.Find("System");
layerTransformCache.Clear();
layerTransformCache.Add(UILayer.Static, staticTrans);
layerTransformCache.Add(UILayer.Bottom, bottomTrans);
layerTransformCache.Add(UILayer.Mid, midTrans);
- layerTransformCache.Add(UILayer.Top, topTrans);
layerTransformCache.Add(UILayer.System, systemTrans);
+ layerTransformCache.Add(UILayer.Loading, loadingTrans);
}
#endregion
@@ -142,16 +142,16 @@
result = BASE_SORTING_ORDER;
break;
case UILayer.Bottom:
- result = BASE_SORTING_ORDER * 10;
- break;
- case UILayer.Mid:
result = BASE_SORTING_ORDER * 100;
break;
- case UILayer.Top:
+ case UILayer.Mid:
result = BASE_SORTING_ORDER * 1000;
break;
case UILayer.System:
result = BASE_SORTING_ORDER * 10000;
+ break;
+ case UILayer.Loading:
+ result = BASE_SORTING_ORDER * 100000;
break;
default:
result = BASE_SORTING_ORDER * 10;
@@ -183,11 +183,11 @@
case UILayer.Mid:
result = midTrans;
break;
- case UILayer.Top:
- result = topTrans;
- break;
case UILayer.System:
result = systemTrans;
+ break;
+ case UILayer.Loading:
+ result = loadingTrans;
break;
default:
result = bottomTrans;
@@ -585,8 +585,14 @@
UIBase returnValue = null;
- if (closedUIDict.TryGetValue(uiName, out List<UIBase> closedUIList) && closedUIList.Count > 0)
+ Debug.Log("OpenWindow " + uiName);
+
+ List<UIBase> closedUIList = new List<UIBase>();
+
+ if (closedUIDict.TryGetValue(uiName, out closedUIList) && closedUIList.Count > 0)
{
+ Debug.Log("OpenWindow getFromClosedDict " + uiName);
+
returnValue = closedUIList[0] as UIBase;
closedUIList.RemoveAt(0);
@@ -597,6 +603,7 @@
}
else
{
+ Debug.Log("OpenWindow getNewLoad " + uiName);
returnValue = LoadUIResource(uiName);
if (returnValue == null)
{
@@ -721,7 +728,9 @@
// 鑾峰彇UI绫诲瀷鍚嶇О
string uiName = ui.uiName;
-
+
+ Debug.Log("CloseWindow " + uiName + " destroy : " + destroy.ToString());
+
// 鏀堕泦鎵�鏈夊瓙UI
List<UIBase> childrenUI = new List<UIBase>();
if (ui.supportParentChildRelation)
@@ -792,8 +801,10 @@
}
closedUIDict[uiName].Add(ui);
- // 闅愯棌UI
- ui.gameObject.SetActive(false);
+ Debug.Log("CloseWindow " + uiName + " destroy : " + destroy.ToString() + " push to closedUIDict");
+
+ // 闅愯棌UI (浜ょ粰handle close鍐呴儴鑷繁鍘诲仛)
+ // ui.gameObject.SetActive(false);
}
// 鏇存柊UI鎺掑簭椤哄簭
@@ -834,7 +845,7 @@
for (int i = 0; i < allUI.Count; i++)
{
UIBase uiBase = allUI[i];
- if (!uiBase.isMainUI && uiBase.uiLayer != UILayer.System)
+ if (!uiBase.isMainUI && uiBase.uiLayer < UILayer.System)
{
CloseWindow(uiBase);
}
@@ -857,6 +868,14 @@
CloseWindow(ui, true);
}
+ foreach (var uiList in closedUIDict.Values)
+ {
+ foreach (var ui in uiList)
+ {
+ GameObject.Destroy(ui.gameObject);
+ }
+ }
+
// 娓呯┖UI瀛楀吀鍜屾爤
uiDict.Clear();
uiStack.Clear();
diff --git a/Main/ResModule/ResManager.cs b/Main/ResModule/ResManager.cs
index 47653d7..4c5ce0b 100644
--- a/Main/ResModule/ResManager.cs
+++ b/Main/ResModule/ResManager.cs
@@ -1,4 +1,4 @@
-using UnityEngine;
+锘縰sing UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
@@ -142,10 +142,11 @@
T asset = null;
var path = ($"Assets/ResourcesOut/{directory}/{name}" + GetExtension(typeof(T))).Replace("//", "/").Trim().Replace("\\", "/");
- path = System.Text.RegularExpressions.Regex.Replace(path, @"[\p{C}]", "");
if (AssetSource.uiFromEditor)
{
#if UNITY_EDITOR
+ // TODO YYL 杩樻槸瑕佹壘鍒板瓧绗︿覆闂
+ path = System.Text.RegularExpressions.Regex.Replace(path, @"[\p{C}]", "");
asset = UnityEditor.AssetDatabase.LoadAssetAtPath<T>(path);
#endif
}
diff --git a/Main/System/UIBase/UIBase.cs b/Main/System/UIBase/UIBase.cs
index 79135b2..1566a7e 100644
--- a/Main/System/UIBase/UIBase.cs
+++ b/Main/System/UIBase/UIBase.cs
@@ -8,11 +8,12 @@
public enum UILayer
{
- Static, // 闈欐�乁I 閫傚悎鍋� 甯搁┗鐢ㄧ殑濡� 涓荤晫闈�
- Bottom, // 鏈�搴曞眰 閫傚悎鍋� 涓荤晫闈笂闈㈢殑 涓�绾х獥鍙� 涓�绾х晫闈�
- Mid, // 閫傚悎鍋� 浜岀骇绐楀彛 浜岀骇鐣岄潰
- Top, // 閫傚悎鍋氭彁绀哄脊绐�
- System // 缃戠粶寮圭獥/鍏朵粬閲嶈寮圭獥/绯荤粺鍏憡
+ Static, // 闈欐�乁I 閫傚悎鍋� 鎴樻枟 涓荤晫闈�
+ Bottom, // 涓荤晫闈�
+ Mid, // 鍔熻兘绐楀彛
+ System, // 缃戠粶寮圭獥/鍏朵粬閲嶈寮圭獥
+ Loading, // 鍔犺浇鐣岄潰
+
}
public enum UIAnimationType
@@ -46,7 +47,7 @@
// 鍔ㄧ敾鐩稿叧
[SerializeField] public UIAnimationType openAnimationType = UIAnimationType.ScaleInOut;
[SerializeField] public UIAnimationType closeAnimationType = UIAnimationType.None;
- [SerializeField][HideInInspector] public float animationDuration = 0.3f;
+ [SerializeField]/*[HideInInspector]*/ public float animeDuration = 0.2f;
[SerializeField][HideInInspector] public Ease animationEase = Ease.OutQuad; // 纭繚浣跨敤 DG.Tweening.Ease
// 杩愯鏃剁姸鎬�
@@ -82,6 +83,8 @@
protected Vector3 originalScale;
protected Vector3 originalPosition;
protected Sequence currentAnimation;
+
+ private CanvasScaler canvasScaler;
#endregion
@@ -180,6 +183,8 @@
{
gameObject.AddComponent<UnityEngine.UI.GraphicRaycaster>();
}
+
+ canvasScaler = GetComponent<CanvasScaler>();
// 鑾峰彇RectTransform缁勪欢
rectTransform = GetComponent<RectTransform>();
@@ -500,11 +505,7 @@
case UIAnimationType.ScaleInOut:
if (rectTransform != null)
{
- rectTransform.localScale = Vector3.zero;
- }
- if (canvasGroup != null)
- {
- canvasGroup.alpha = 0f;
+ canvasScaler.scaleFactor = 0.3f;
canvasGroup.interactable = false;
canvasGroup.blocksRaycasts = false;
}
@@ -582,18 +583,14 @@
case UIAnimationType.FadeInOut:
if (canvasGroup != null)
{
- currentAnimation.Append(canvasGroup.DOFade(1f, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(canvasGroup.DOFade(1f, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.ScaleInOut:
if (rectTransform != null)
{
- currentAnimation.Append(rectTransform.DOScale(originalScale, animationDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(1f, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(DOVirtual.Float(0.3f, originalScale.x, animeDuration, (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase));
}
break;
@@ -603,11 +600,11 @@
case UIAnimationType.SlideFromRight:
if (rectTransform != null)
{
- currentAnimation.Append(rectTransform.DOAnchorPos(originalPosition, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(rectTransform.DOAnchorPos(originalPosition, animeDuration).SetEase(animationEase));
}
if (canvasGroup != null)
{
- currentAnimation.Join(canvasGroup.DOFade(1f, animationDuration).SetEase(animationEase));
+ currentAnimation.Join(canvasGroup.DOFade(1f, animeDuration).SetEase(animationEase));
}
break;
}
@@ -624,6 +621,8 @@
canvasGroup.blocksRaycasts = true;
}
});
+
+ currentAnimation.Play();
}
catch (System.Exception e)
{
@@ -662,18 +661,14 @@
case UIAnimationType.FadeInOut:
if (canvasGroup != null)
{
- currentAnimation.Append(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
}
break;
case UIAnimationType.ScaleInOut:
if (rectTransform != null)
{
- currentAnimation.Append(rectTransform.DOScale(Vector3.zero, animationDuration).SetEase(animationEase));
- }
- if (canvasGroup != null)
- {
- currentAnimation.Join(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(DOVirtual.Float(originalScale.x, 0.3f, animeDuration, (value) => {canvasScaler.scaleFactor = value;}).SetEase(animationEase));
}
break;
@@ -682,11 +677,11 @@
{
Vector2 endPos = originalPosition;
endPos.y = Screen.height;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
if (canvasGroup != null)
{
- currentAnimation.Join(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
}
break;
@@ -695,11 +690,11 @@
{
Vector2 endPos = originalPosition;
endPos.y = -Screen.height;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
if (canvasGroup != null)
{
- currentAnimation.Join(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
}
break;
@@ -708,11 +703,11 @@
{
Vector2 endPos = originalPosition;
endPos.x = -Screen.width;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
if (canvasGroup != null)
{
- currentAnimation.Join(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
}
break;
@@ -721,11 +716,11 @@
{
Vector2 endPos = originalPosition;
endPos.x = Screen.width;
- currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animationDuration).SetEase(animationEase));
+ currentAnimation.Append(rectTransform.DOAnchorPos(endPos, animeDuration).SetEase(animationEase));
}
if (canvasGroup != null)
{
- currentAnimation.Join(canvasGroup.DOFade(0f, animationDuration).SetEase(animationEase));
+ currentAnimation.Join(canvasGroup.DOFade(0f, animeDuration).SetEase(animationEase));
}
break;
}
@@ -741,6 +736,8 @@
CompleteClose();
}
});
+
+ currentAnimation.Play();
}
catch (System.Exception e)
{
--
Gitblit v1.8.0