diff --git a/unity/native_src/Src/CppObjectMapper.cpp b/unity/native_src/Src/CppObjectMapper.cpp index d974405e59..c1c06a854f 100644 --- a/unity/native_src/Src/CppObjectMapper.cpp +++ b/unity/native_src/Src/CppObjectMapper.cpp @@ -340,7 +340,8 @@ void FCppObjectMapper::BindCppObject( FObjectCacheNode* CacheNodePtr; if (Iter != CDataCache.end()) { - CacheNodePtr = Iter->second.Add(ClassDefinition->TypeId); + auto Temp = Iter->second.Find(ClassDefinition->TypeId); + CacheNodePtr = Temp ? Temp : Iter->second.Add(ClassDefinition->TypeId); } else { diff --git a/unreal/Puerts/Source/JsEnv/Private/CppObjectMapper.cpp b/unreal/Puerts/Source/JsEnv/Private/CppObjectMapper.cpp index 71380161fc..787ac45776 100644 --- a/unreal/Puerts/Source/JsEnv/Private/CppObjectMapper.cpp +++ b/unreal/Puerts/Source/JsEnv/Private/CppObjectMapper.cpp @@ -304,7 +304,8 @@ void FCppObjectMapper::BindCppObject( FObjectCacheNode* CacheNodePtr; if (Iter != CDataCache.end()) { - CacheNodePtr = &Iter->second; + auto Temp = Iter->second.Find(ClassDefinition->TypeId); + CacheNodePtr = Temp ? Temp : Iter->second.Add(ClassDefinition->TypeId); } else { diff --git a/unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.cpp b/unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.cpp index 1ea1ae8ce6..56a8669350 100644 --- a/unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.cpp +++ b/unreal/Puerts/Source/JsEnv/Private/JsEnvImpl.cpp @@ -2913,7 +2913,12 @@ void FJsEnvImpl::BindStruct( } #endif auto CacheNodePtr = StructCache.Find(Ptr); - if (!CacheNodePtr) + if (CacheNodePtr) + { + auto Temp = CacheNodePtr->Find(ScriptStructWrapper->Struct.Get()); + CacheNodePtr = Temp ? Temp : CacheNodePtr->Add(ScriptStructWrapper->Struct.Get()); + } + else { CacheNodePtr = &StructCache.Emplace(Ptr, FObjectCacheNode(ScriptStructWrapper->Struct.Get())); }