最简单的 UE 4 C++ 教程 —— 隐藏并禁用游戏中的 Actor【八】
        【摘要】 
                    【原教程是基于 UE 4.18,我是基于 UE 4.25】 
英文原地址 
接上一节,要在游戏中完全隐藏角色,你必须做三件事。 
你必须禁用它的碰撞,禁用它的滴答声,并将其隐藏在游戏中。
 
您可以将代码添加到任何 actor 子类实例上。对于本例,我创建了一个单独的 actor 来演示它的用途。 
 
创建一个名为 Hide...
    
    
    
    【原教程是基于 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);
     
    
 
   - 
    
     
    
    
     
      }
     
    
 
  
 
效果演示
 为了方便演示,为 actor 添加了 cube 组件 
 当 Hide In Game 为 false 时运行游戏 
 当 Hide In Game 为 true 时运行游戏 
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/119103980
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)