最简单的 UE 4 C++ 教程 —— 隐藏并禁用游戏中的 Actor
Posted panda1234lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简单的 UE 4 C++ 教程 —— 隐藏并禁用游戏中的 Actor相关的知识,希望对你有一定的参考价值。
【原教程是基于 UE 4.18,我是基于 UE 4.25】
接上一节,要在游戏中完全隐藏角色,你必须做三件事。
- 你必须禁用它的碰撞,
- 禁用它的滴答声,
- 并将其隐藏在游戏中。
您可以将代码添加到任何 actor 子类实例上。对于本例,我创建了一个单独的 actor 来演示它的用途。
创建一个名为 HideActor 的 actor。在头文件中我创建了两个:通过 bool HideInGame 来跟踪,如果我们想禁用 actor 的话,并在 void DisableActor 运行所有我们需要禁用的元素。我们将这两个变量放在 Disable 类别中,以使它们与 actor 的其他属性区分开
HideActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "HideActor.generated.h"
UCLASS()
class UNREALCPP_API AHideActor : public AActor
{
GENERATED_BODY()
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
UPROPERTY(EditAnywhere, Category = "Disable")
bool HideInGame;
UFUNCTION(BlueprintCallable, Category = "Disable")
void DisableActor(bool toHide);
};
在 BeginPlay() 中,我们检查 HideInGame 是否为真。如果为真,则运行 DisableActor() 。DisableActor() 隐藏actor,禁用它的冲突,并禁用它运行每一帧。
HideActor.cpp
#include "HideActor.h"
// Called when the game starts or when spawned
void AHideActor::BeginPlay()
{
Super::BeginPlay();
if (HideInGame)
{
DisableActor(HideInGame);
}
}
// Called every frame
void AHideActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void AHideActor::DisableActor(bool toHide)
{
// Hides visible components
SetActorHiddenInGame(toHide);
// Disables collision components
SetActorEnableCollision(false);
// Stops the Actor from ticking
SetActorTickEnabled(false);
}
效果演示
以上是关于最简单的 UE 4 C++ 教程 —— 隐藏并禁用游戏中的 Actor的主要内容,如果未能解决你的问题,请参考以下文章
最简单的 UE 4 C++ 教程 —— 漂浮的 Actor二十七
最简单的 UE 4 C++ 教程 —— 给 Actor 添加径向推力十八
最简单的 UE 4 C++ 教程 —— 为 Charactor 添加重叠事件十九