1.创建 空白 项目。
alt+p 是 执行play
按下end键 可以自动降落下来。
按下Alt键不放 可以复制
选择 菜单栏里的编辑(edit) ,选择项目设置(project setting)。有default Maps与default Modes
我们来创建一个自己的Mode(C++),选择菜单栏文件(File),新建c++类(Add to Project),选择GameMode类(如果只看到GameModeBase类,点开右上角的显示所有类,然后搜索GameMode类,发现它在GameModeBase类下)我建的为MypGameMode
将UE4下面的Games文件下的第一个设置为启动项,然后右键点击生成。
按下F5,用VS启动UE编辑器。
我们在MypGameMode.h中声明一个虚函数 :
class MYP_API AMypGameMode : public AGameMode
{
GENERATED_BODY()
virtual void BeginPlay() OVERRIDE;
};
不知道为什么一直编译有错,也无法生成,去掉OVERRIDE就好了。(最后发现是要小写才行)
紧接着我们要对它进行实现,在MypGameMode.cpp文件中:
void AMypGameMode::BeginPlay()
{
if (GEngine)
GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Red, TEXT("I'm using GameMode"));
//时间,颜色,文本
}
然后对它进行编译,然后用MypGameMode启动。发现打印了这句话。 到此HelloWorld成功。
创建一个Character类(继承它),然后进行实现(这次自动生成了BeginPlay等一系列方法),也打印一句话:
// Sets default values
AMypCharacter::AMypCharacter()
{
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMypCharacter::BeginPlay()
{
Super::BeginPlay();
if (GEngine)
GEngine->AddOnScreenDebugMessage(-1, 8.f, FColor::Red, TEXT("I'm user Character"));
}
// Called every frame
void AMypCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
// Called to bind functionality to input
void AMypCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
}
但是编译运行后发现并没有打印这句话,是因为我们没有在这个mode下要引用这个character。
我们在mode.cpp里面加入:
AMypGameMode::AMypGameMode(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
{
DefaultPawnClass = AMypCharacter::StaticClass();
}
用这个方式,就要在mode.h里面声明为UCLASS:
UCLASS()
class MYP_API AMypGameMode : public AGameMode
{
GENERATED_UCLASS_BODY()
//AMypGameMode();
virtual void BeginPlay() override;
};
这是方式一。
或者将mode.cpp里面加入
AMypGameMode::AMypGameMode()
{
DefaultPawnClass = AMypCharacter::StaticClass();
}
然后在mode.h里面声明为:
UCLASS()
class MYP_API AMypGameMode : public AGameMode
{
GENERATED_BODY()
AMypGameMode();
virtual void BeginPlay() override;
};
这是方式二。
mode里面就加入了这个character,但是目前是无法移动的。
现在我们来对它进行移动以及视角旋转。
按照下面教程:https://docs.unrealengine.com/latest/CHN/Programming/Tutorials/FirstPersonShooter/2/3/index.html