Переменная int32 под названием «Stage» вызывает проблемы и приводит к сбою игры при каждом перезапуске.
Код: Выделить всё
int32 Stage;Код: Выделить всё
void UBTTask_FoxyCountdown::TimerCompleted(UBehaviorTreeComponent& OwnerComp) const
{
Foxy->IncreaseStage();
if (Foxy->GetStage() >= 5)
{
FinishLatentTask(OwnerComp, EBTNodeResult::Succeeded);
}
FinishLatentTask(OwnerComp, EBTNodeResult::InProgress);
}
Код: Выделить всё
if (Foxy && Mesh2)
{
if (Foxy->GetStage() >= 2)
Код: Выделить всё
Код: Выделить всё
void AFoxy::IncreaseStage()
{
Stage++;
UE_LOG(LogTemp, Log, TEXT("Increased Foxy's stage to: %d"), Stage);
if (Stage < 5)
{
TeleportTo(Positions[Stage], Rotations[Stage]);
}
}
void AFoxy::ResetStage()
{
Stage = 0;
SetActorLocation(FVector{0, 0, -100});
}
int32 AFoxy::GetStage() const
{
return Stage;
}
Код: Выделить всё
UNightInstance* Instance = Cast(GetGameInstance());
if (Instance)
{
Instance->IncreaseNight();
UE_LOG(LogTemp, Log, TEXT("NightNumber increased to: %d"), Instance->NightNumber);
if (Instance->NightNumber >= 6)
{
Instance->ResetNightNumber();
UE_LOG(LogTemp, Log, TEXT("NightNumber reset to: %d"), Instance->NightNumber);
}
UGameplayStatics::OpenLevel(GetWorld(), DecidingLevel);
Я все перепробовал, и это крайне деморализует. Вот несколько ответов на вопросы, которые я пробовал.
Пожалуйста, помогите, я так долго застрял.
Я пробовал:
1: Я инициализировал этап на 0 в начале игры.
2: Я проверяю, все ли верно 3: У меня есть задержка после уровня, чтобы все могло загрузиться.
3: Перешел на другой уровень, подождал немного и перешел на него.
После перезапуска уровня сбоев нет.
Журнал сбоев:
Код: Выделить всё
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000069 UnrealEditor_Fnaftsor_1905!AFoxy::IncreaseStage() [C:\Users\Askari\Documents\Unreal Projects\Fnaf-TOSR\Source\Fnaftsor\Animatronic\Foxy.cpp:26] UnrealEditor_Fnaftsor_1905!TBaseFunctorDelegateInstance::Execute() [C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:862]
Я также время от времени получаю одно и то же сообщение об ошибке, но вместо Stage++ — TeleportTo
Я думаю, это связано со стадией, потому что, когда я удаляю код, связанный с ее уменьшением или увеличением (или просто получением), сбои прекращаются.
Подробнее здесь: https://stackoverflow.com/questions/786 ... being-usec