From 802a7480334d8acd7f9ec9664c1818889a9c04df Mon Sep 17 00:00:00 2001 From: VuNgocHaiC7 Date: Tue, 5 May 2026 11:37:26 +0700 Subject: [PATCH] update code for logout --- .../Scripts/Players/PlayerModelPreview.cs | 58 ++++++++++++------- .../Scripts/UI/Login/LoginScreenUI.cs | 5 ++ Assets/Scripts/SelecScreenCharacter.cs | 5 ++ 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs index 5bfee4a82b..62eb2ea44e 100644 --- a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs +++ b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs @@ -108,12 +108,32 @@ namespace BrewMonster.Scripts } } + public void HideAllPlayerModels() + { + _hasRequestedPlayerModelId = false; + for (int i = 0; i < playerModels.Count; i++) + { + if (playerModels[i] != null) + { + playerModels[i].SetActive(false); + } + } + } + public void ClearModels() { + //for (int i = 0; i < playerModels.Count; i++) + //{ + // if (playerModels[i] != null) + // { + // Destroy(playerModels[i]); + // } + //} + playerModels.Clear(); playerModelIds.Clear(); - if (modelRoot != null) + if(modelRoot != null) { foreach (Transform child in modelRoot) { @@ -124,41 +144,39 @@ namespace BrewMonster.Scripts private void ClearModelsImmediate() { - playerModels.Clear(); - playerModelIds.Clear(); - - if(modelRoot != null) + for (int i = 0; i < playerModels.Count; i++) { - var children = new Transform[modelRoot.childCount]; - for (int i = 0; i < modelRoot.childCount; i++) + if (modelRoot != null) { - children[i] = modelRoot.GetChild(i); - } - - foreach (Transform child in children) - { - if(child != null) + if(playerModels[i] != null) { if(Application.isPlaying) - Destroy(child.gameObject); + Destroy(playerModels[i]); else - DestroyImmediate(child.gameObject); + DestroyImmediate(playerModels[i]); } } } + + playerModels.Clear(); + playerModelIds.Clear(); } private async UniTask LoadPlayerModel(RoleInfo role) { BMLogger.Log($"LoadPlayerModel: {role.roleid}"); var elemendataman = BrewMonster.ElementDataManProvider.GetElementDataMan(); - GameObject prefab = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender); - if (prefab == null) - { + GameObject model = await NPCManager.Instance.GetModelPlayer(role.occupation, role.gender); + if(model == null) return null; - } + + model.SetActive(false); BMLogger.Log($"LoadPlayerModel: {role.roleid} - prefab loaded"); - GameObject model = Instantiate(prefab); + if (modelRoot != null) + { + model.transform.SetParent(modelRoot, false); + } + var playerDefaultEquipments = model.GetComponentInChildren(); if (playerDefaultEquipments == null) { diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs index 48448acc5c..afa7df7bd8 100644 --- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs +++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs @@ -56,6 +56,11 @@ namespace BrewMonster.UI { Tech3CSDKWrapper.Instance.SetLoginCallback(OnLoginCallback); Tech3CSDKWrapper.Instance.SetLogoutCallback(OnLogoutCallback); + + if(PlayerModelPreview.Instance != null) + { + PlayerModelPreview.Instance.HideAllPlayerModels(); + } } private void OnDisable() diff --git a/Assets/Scripts/SelecScreenCharacter.cs b/Assets/Scripts/SelecScreenCharacter.cs index 874ad3268c..682ff14f5c 100644 --- a/Assets/Scripts/SelecScreenCharacter.cs +++ b/Assets/Scripts/SelecScreenCharacter.cs @@ -243,6 +243,11 @@ namespace BrewMonster.UI { _onExit?.Invoke(); gameObject.SetActive(false); + + if(PlayerModelPreview.Instance != null) + { + PlayerModelPreview.Instance.HideAllPlayerModels(); + } } } }