diff --git a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Reference/AssetsReference.cs b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Reference/AssetsReference.cs index 4563a267..68655d6c 100644 --- a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Reference/AssetsReference.cs +++ b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/Reference/AssetsReference.cs @@ -66,13 +66,24 @@ namespace TEngine private void Awake() { // If it is a clone, clear the reference records before cloning - if (!_originalRefs.ContainsKey(gameObject) || _originalRefs[gameObject] != this) + if (!IsOriginalInstance()) { - sourceGameObject = null; - refAssetInfoList?.Clear(); + ClearCloneReferences(); } } + private bool IsOriginalInstance() + { + return _originalRefs.TryGetValue(gameObject, out var originalComponent) && + originalComponent == this; + } + + private void ClearCloneReferences() + { + sourceGameObject = null; + refAssetInfoList?.Clear(); + } + private void OnDestroy() { CheckInit();