From b6a59b31278f3d2b2190f3b1ae1d51caa80db58e Mon Sep 17 00:00:00 2001 From: VuNgocHaiC7 Date: Tue, 5 May 2026 14:53:40 +0700 Subject: [PATCH] fix code update equip thing character --- .../Scripts/Players/PlayerModelPreview.cs | 29 ++++++++++++++----- .../UI/Inventory/InventoryCharacterPreview.cs | 14 +++++++++ 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs index 62eb2ea44e..32999dd6d4 100644 --- a/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs +++ b/Assets/PerfectWorld/Scripts/Players/PlayerModelPreview.cs @@ -39,10 +39,15 @@ namespace BrewMonster.Scripts _loadVersion++; int version = _loadVersion; - ClearModels(); - if (roleInfos == null || roleInfos.Count == 0 || NPCManager.Instance == null) + { + ClearModels(); return; + } + + List oldModels = new List(playerModels); + playerModels.Clear(); + playerModelIds.Clear(); for (int i = 0; i < roleInfos.Count; i++) { @@ -68,6 +73,14 @@ namespace BrewMonster.Scripts ApplyRequestedModelVisibility(); } + + for(int i=0; i < oldModels.Count; i++) + { + if (oldModels[i] != null) + { + Destroy(oldModels[i]); + } + } } /// @@ -130,16 +143,16 @@ namespace BrewMonster.Scripts // } //} - playerModels.Clear(); - playerModelIds.Clear(); - - if(modelRoot != null) + for (int i = 0; i < playerModels.Count; i++) { - foreach (Transform child in modelRoot) + if (playerModels[i] != null) { - Destroy(child.gameObject); + Destroy(playerModels[i]); } } + + playerModels.Clear(); + playerModelIds.Clear(); } private void ClearModelsImmediate() diff --git a/Assets/PerfectWorld/Scripts/UI/Inventory/InventoryCharacterPreview.cs b/Assets/PerfectWorld/Scripts/UI/Inventory/InventoryCharacterPreview.cs index 8b127d6206..a90461ec17 100644 --- a/Assets/PerfectWorld/Scripts/UI/Inventory/InventoryCharacterPreview.cs +++ b/Assets/PerfectWorld/Scripts/UI/Inventory/InventoryCharacterPreview.cs @@ -246,6 +246,11 @@ namespace BrewMonster.Scripts.UI.Inventory return; } + if (_previewInstance != null && _previewInstance != sourceRoot.gameObject) + { + DestroyPreviewInstance(); + } + if (!sourceRoot.gameObject.activeSelf) { sourceRoot.gameObject.SetActive(true); @@ -269,6 +274,15 @@ namespace BrewMonster.Scripts.UI.Inventory EnsureCameraBindings(); } + private void DestroyPreviewInstance() + { + if (_previewInstance != null) + { + Destroy(_previewInstance); + _previewInstance = null; + } + } + private Transform ResolveSourceModelRoot() {