fix(interaction): 修复编译错误和交互系统集成问题
- SystemDriver: EffectManager改为值持有,去掉TUniquePtr和条件编译 - SystemDriver: 补充EngineUtils.h include修复TActorIterator编译错误 - GameMode: BeginPlay自动Spawn ASystemDriver - InteractableActor: 改为abstract基类,子类自行创建交互组件 - DoorActor: 创建DoorInteractableComp替代基类组件 - EffectManager: 实现ExecuteToggleDoor调用实际门开关逻辑 - InteractableComponent/DoorComponent: 修复GetGameInstance路径和调用方式 - EffectManager: Broadcast改为Execute(单播委托)
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
|
||||
#include "Components/SphereComponent.h"
|
||||
#include "Engine/World.h"
|
||||
#include "GameFramework/GameInstance.h"
|
||||
#include "Engine/GameInstance.h"
|
||||
#include "GameFramework/Character.h"
|
||||
|
||||
// ============================================================================
|
||||
@@ -59,7 +59,8 @@ void UInteractableComponent::BeginPlay()
|
||||
}
|
||||
|
||||
// --- 恢复跨场景持久状态 ---
|
||||
if (UPersistenceSubsystem* Persistence = GetGameInstance()->GetSubsystem<UPersistenceSubsystem>())
|
||||
UGameInstance* GI = Owner->GetGameInstance();
|
||||
if (UPersistenceSubsystem* Persistence = GI ? GI->GetSubsystem<UPersistenceSubsystem>() : nullptr)
|
||||
{
|
||||
RestorePersistentState(Persistence);
|
||||
}
|
||||
@@ -94,9 +95,9 @@ void UInteractableComponent::Consume_Implementation()
|
||||
}
|
||||
|
||||
// 写入持久层
|
||||
if (UWorld* World = GetWorld())
|
||||
if (UGameInstance* GI = GetOwner() ? GetOwner()->GetGameInstance() : nullptr)
|
||||
{
|
||||
if (UPersistenceSubsystem* Persistence = World->GetGameInstance()->GetSubsystem<UPersistenceSubsystem>())
|
||||
if (UPersistenceSubsystem* Persistence = GI->GetSubsystem<UPersistenceSubsystem>())
|
||||
{
|
||||
Persistence->MarkItemCollected(Data.ItemId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user