指针相关的UE4崩溃.我的指针哪里错了?
Pointer related UE4 crash. Where are my pointers wrong?
我正在创建一个第三人称激光标签射击游戏来娱乐,但我在创建我的武器层次结构时遇到了困难。我的主要问题是我的编辑器因代码中指针的一些错误的访问错误而崩溃,我对指针的理解不够,无法自己解决这个问题。
我正在尝试将武器添加到我的默认棋子 ALTPlayer 中。我通过使用 TSubclassOf 来确保我只能将 ALTWeapon 的孩子附加到我的角色中
如果它有助于我的解释,当前的层次结构是:
APawn->ALTWeapon->ALaserGun
。我计划添加更多以 ALTWeapon 为父级的类。我希望这将使我的代码井井有条,更容易为每种武器编写不同的功能。
考虑到这一点,我将从我的 ALTPlayer.h 文件开始。在这里,我将 WeaponClass 声明为我的子类变量
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "LTPlayer.generated.h"
class ALTWeapon;
UCLASS()
class LASERTAG_API ALTPlayer : public ACharacter
{
GENERATED_BODY()
public:
// Sets default values
ALTPlayer();
// Player weapon
UPROPERTY(EditAnywhere)
TSubclassOf<ALTWeapon> WeaponClass;
};
现在我将移动到我的 ALTPlayer.cpp 文件中。在这里,我尝试创建一个存储在 WeaponClass 中的 ALaserGun 对象。(我也不确定这是否正是我应该这样做的方式(
#include "LTPlayer.h"
#include "LaserGun.h"
// Sets default values
ALTPlayer::ALTPlayer()
{
// Creating Weapon
this->WeaponClass->GetDefaultObject<ALaserGun>();
}
此时,我希望在我的蓝图 ALTPlayer 子项中看到一个 ALaserGun 组件。虽然,由于我有指针问题导致我的编辑器崩溃,我不知道这是否是这段代码产生的结果。
如果有人对如何修复我的指针有任何见解,以免我遇到访问违规,那就太棒了!
当您尝试访问其默认对象但尚未将其分配给任何对象时,您正在尝试取消引用 WeaponClass。
您可以在构造函数初始值设定项列表中初始化它,如下所示:
ALTPlayer::ALTPlayer()
: WeaponClass(ALTWeapon::StaticClass())
{
}
如果这是一个可以在蓝图默认值中设置的类,您还可以通过在 PreInitializeComponents中设置它来确保它有一个值:
声明:
//~ Begin AActor Interface
virtual void PreInitializeComponents() override;
//~ End AActor Interface
定义:
void ALTPlayer::PreInitializeComponents()
{
Super::PreInitializeComponents();
// Fallback to default Weapon class if none was specified.
if (WeaponClass == nullptr)
{
UE_LOG(LogGameMode, Warning, TEXT("No WeaponClass was specified in %s (%s)"), *GetName(), *GetClass()->GetName());
WeaponClass = ALTWeapon::StaticClass();
}
}
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- 首要问题的答案让值班员搞错了
- 看起来is_nothrow_constructible_v()在MSVC中被破坏了,我错了吗
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 如何正确使用 >=?(a+f()+c)>=0 错了吗?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 指针相关的UE4崩溃.我的指针哪里错了?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- 书错了?2002 年指向对象的指针数组
- 将指针值分配给另一个指针值.我做错了吗
- 在C++中声明指向结构的指针会自动为其成员分配内存.我错了吗
- c++在构造函数中使用指向其他方法的指针分配方法:我做错了什么?
- 链表分割错误。我猜我在这里的指针做错了什么
- 未定义的引用静态函数指针成员在c++,我做错了什么