I am working on a Shooter game with weapon classes located in a data table, but when starting the game and initializing the weapon I am supposed to start with, the entire engine crashes.
Code in TpsGameInstance.cpp:
#include "TpsGameInstance.h"
bool UTpsGameInstance::GetWeaponByName(FName WeaponName, FWeaponProperties& OutputWeapon)
{
bool bFound = false;
FWeaponProperties* NewWeapon = WeaponTable->FindRow<FWeaponProperties>(WeaponName, "", false);
if (NewWeapon)
{
bFound = true;
OutputWeapon = *NewWeapon;
}
return bFound;
}
InitWeapon() in TpsGameCharacter.cpp:
void ATpsGameCharacter::InitWeapon(FName WeaponID)
{
UTpsGameInstance* DisInstance = Cast<UTpsGameInstance>(GetGameInstance());
FWeaponProperties NewProperties;
if (DisInstance)
{
if (DisInstance->GetWeaponByName(WeaponID, NewProperties))
{
if (NewProperties.WeaponClass)
{
FVector SpawnOffset = FVector(0);
FRotator SpawnRotation = FRotator(0);
FActorSpawnParameters SpawnParam;
SpawnParam.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
SpawnParam.Owner = GetOwner();
SpawnParam.Instigator = GetInstigator();
AWeaponBase* MyGun = Cast<AWeaponBase>(GetWorld()->SpawnActor(NewProperties.WeaponClass, &SpawnOffset, &SpawnRotation, SpawnParam));
if (MyGun)
{
FAttachmentTransformRules AttachRules(EAttachmentRule::SnapToTarget, false);
MyGun->AttachToComponent(GetMesh(), AttachRules, FName("Weapon"));
CurrentWeapon = MyGun;
}
}
else
{
UE_LOG(LogTemp, Warning, TEXT("ATpsGameCharacter::InitWeapon - Initialization Failed ( WeaponClass = NULL )"));
}
}
else
{
UE_LOG(LogTemp, Warning, TEXT("ATpsGameCharacter::InitWeapon - Initialization Failed ( Invalid WeaponID || WeaponID = NULL )"));
}
}
}
LoginId:4b97db0d449de250499475bffaa5d4fe
EpicAccountId:b82b4c8c6b13447db327d92153eaaa7a
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000030
UE4Editor_TpsGame!UDataTable::FindRow<FWeaponProperties>() [C:\Program Files\Epic Games\UE_4.27\Engine\Source\Runtime\Engine\Classes\Engine\DataTable.h:204]
UE4Editor_TpsGame!UTpsGameInstance::GetWeaponByName() [C:\Users\User\Documents\Unreal Projects\TpsGame\Source\TpsGame\TpsGameInstance.cpp:10]
UE4Editor_TpsGame!ATpsGameCharacter::InitWeapon() [C:\Users\User\Documents\Unreal Projects\TpsGame\Source\TpsGame\Character\TpsGameCharacter.cpp:230]
UE4Editor_TpsGame!ATpsGameCharacter::BeginPlay() [C:\Users\User\Documents\Unreal Projects\TpsGame\Source\TpsGame\Character\TpsGameCharacter.cpp:107]
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_Engine
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor_UnrealEd
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
UE4Editor
kernel32
ntdll