在Pawn和Character里都带有父类的SetupPlayerInputComponent方法进行控制器的操纵。
更优化的写法是将这些内容写在PlayerController中去。
不同的是,要重写SetupInputComponent方法。且需要用到固定的指针InputComponent,并将其CreateDefaultSubobject。
用自定义的指针,且不把InputComponent指针初始化,都会导致程序崩溃。
创建一个PlayerController。
代码如下:
1 // Fill out your copyright notice in the Description page of Project Settings.
2
3 #pragma once
4
5 #include "CoreMinimal.h"
6 #include "GameFramework/PlayerController.h"
7 #include "MyPlayerController.generated.h"
8
9 /**
10 *
11 */
12 UCLASS()
13 class TESTS_API AMyPlayerController : public APlayerController
14 {
15 GENERATED_BODY()
16 public:
17 AMyPlayerController();
18 int number;
19 virtual void SetupInputComponent() override;
20 void Test();
21
22 };
23
24
25
26
27 // Fill out your copyright notice in the Description page of Project Settings.
28
29
30 #include "MyPlayerController.h"
31
32 AMyPlayerController::AMyPlayerController() {
33 number = 0;
34 InputComponent = CreateDefaultSubobject<UInputComponent>(TEXT("inputs"));
35 }
36
37
38
39 void AMyPlayerController::SetupInputComponent()
40 {
41 InputComponent->BindAction("move", IE_Pressed, this, &AMyPlayerController::Test);
42 }
43
44 void AMyPlayerController::Test()
45 {
46
47 number++;
48 UE_LOG(LogTemp, Warning, TEXT("Number is %d"), number);
49 }
效果如下: