1 定义了一个pickup基类。在这个基类中,有七个方法,
其中BeginPlay() 和Tick()是继承与AActor中的。
Tick有个默认float类型的参数。—tick表示的每多少秒运行一次吗?然后,传入的参数表示运行的时间间隔。
PickUp有两个成员变量,
一个指向staticMesh的指针,用来指定pickup所用户的静态物体组件。、
一个是bool类型,用来表示pickup的激活状态。
Pickup还有一个构造函数APickUp:用来初始化Actor的参数。
因为pickup有两个成员变量,所以要在构造函数中将他们初始化。
除了初始化变量之外,为了明确表示不需要tick函数在每帧都运行,所以要显示指定 PrimaryActorTick.bCanEverTick=false;
然后将这两个成员变量初始化:
将PickupMesh这个指针,指向UStataicMeshComponent创建的类型。
注意事项:在UE4中,为Actor创建组件,可以使用UObject::CreateDefaultSubobject()模板函数,这个函数只能在构造函数中调用。TEXT(“MyComponent”)的名字不能重复!!
初始化PickUpMesh之后将PickupMesh赋值给RootComponent,
之后就是PickUp这个类中的一些其他逻辑函数,这里需要注意的就是UFUNCTION宏中的说明符。
BlueprintPure:该函数不会以任何方式影响拥有对象,并且可以在蓝图或级别蓝图图表中执行。表明该函数在蓝图中只是用来返回PickUp中bIsActive这个变量的。
BlueprintCallable:该函数可以在蓝图或关卡蓝图图表中执行。
BlueprintNativeEvent:该功能的目的是通过一个蓝图来覆盖,但也有本地代码实现。提供了一个名为[函数名]_Implementation的本体而非[函数名];在必要时自动生成的代码将包括一个thunk调用的实现方法。
就比如上面所写的WasCollected和WasColledted_Implementation()
以上函数的实现:
2通过继承于PickUp这个基类,来实现ABatteryPickUp这个关于电池的类。
这个类中只有一个成员变量----float类型的Ba