UE4基础:一次猝不及防的崩溃事件的自救过程(5月29日 更正)

之前知道UE4"爱翻脸"说崩溃就崩溃,连招呼都不打,不过这是本次入坑的第一崩,所以写一下自救过程。

现场还原

自己随便做的一个学习用的Demo,想用C++自定义一个GameInstance,结果UE4生成C++文件的时候就崩了。打开这个项目就显示下面这个窗口。

在这里插入图片描述
看到错误提示窗口报了一条代码文件的信息:

UE4Editor_GameCpp!AMyActor::AMyActor() [D:\Unreal Projects\GameCpp\Source\GameCpp\MyActor.cpp:15]

自救办法

到Source文件夹里用记事本打开看一下

// Fill out your copyright notice in the Description page of Project Settings.


#include "MyActor.h"


// Sets default values
AMyActor::AMyActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = false;
	this->RootComponent = StaticMesh;
	StaticMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh"));
	
	GetGameInstance();
}
/*
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	GEngine->AddOnScreenDebugMessage(1,1.0,FColor::Green,"Hello, I am an Actor!");
	//SetRootComponent()
}

// Called every frame
void AMyActor::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

void AMyActor::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
	Super::EndPlay(EndPlayReason);
}
*/

第15行就写了一个

GetGameInstance();

当时想看看能不能获取到,忘了删除。GetGameInstance();放在这里为啥不行还有待考证,我心说就算崩溃也是运行时崩溃啊,怎么编译的时候就崩了。

暂时先把15行注释掉。

然后把没用的文件都删了(Saved其实也可以删了)

在这里插入图片描述

双击.uproject文件重新建立模块索引

在这里插入图片描述

在这里插入图片描述

然后提示了是否用之前自动保存的文件,还原崩溃时未保存的文件(如果把Saved文件夹删掉就没有这步了),我直接选的略过还原

在这里插入图片描述
项目又打开了,非常开心
在这里插入图片描述
目前还没有 sln文件,需要刷新一下Rider Project,如果你用VS的话那就是 VS Project了
在这里插入图片描述

然后就可以用 Rider打开C++项目了。

在这里插入图片描述崩溃前创建的DemoGameInstance也可以在GameInstance 的设置中看到了。

小结

  • 创建新的 C++文件前,先把之前该编译的都编译完毕。
  • 通过UE4可以重建C++工程和索引这点让人踏实多了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章