목차

     

     


     

     

    플레이어 Role 머리 위에 띄우기

     


     

    Travel in Multiplayer

     

    게임에 입장한 플레이어가 Server쪽인지 Client쪽인지 구분해야 한다.

    코드를 구현할 때 RPC를 고려하여야 한다.


     

    OverheadWidget

     

    OverheadWidget.h

    더보기
    #pragma once
    #include "CoreMinimal.h"
    #include "Blueprint/UserWidget.h"
    #include "OverheadWidget.generated.h"
    
    UCLASS()
    class MULTIPLAYER_API UOverheadWidget : public UUserWidget
    {
    	GENERATED_BODY()
    public:
    	UPROPERTY(meta = (BindWidget))
    	class UTextBlock* DisplayText;
    
    	void SetDisplayText(FString TextToDisplay);
    
    	UFUNCTION(BlueprintCallable)
    	void ShowPlayerNetRole(APawn* InPawn);
    
    protected:
    	virtual void OnLevelRemovedFromWorld(ULevel* InLevel, UWorld* InWorld) override;
    };

     

    OverheadWidget.cpp

    더보기
    #include "OverheadWidget.h"
    #include "Components/TextBlock.h"
    
    void UOverheadWidget::SetDisplayText(FString TextToDisplay)
    {
    	if (IsValid(DisplayText))
    	{
    		DisplayText->SetText(FText::FromString(TextToDisplay));//TextToDisplay 변수로 들어오는 text로 설정.
    	}
    }
    
    void UOverheadWidget::ShowPlayerNetRole(APawn* InPawn)
    {
    	ENetRole RemoteRole = InPawn->GetRemoteRole();// Pawn의 Role이 뭔지 담는 변수
    	FString Role;
    	switch (RemoteRole)
    	{
    	case ENetRole::ROLE_Authority:
    		Role = FString("Authority");
    		break;
    	case ENetRole::ROLE_AutonomousProxy:
    		Role = FString("Autonomous Proxy");
    		break;
    	case ENetRole::ROLE_SimulatedProxy:
    		Role = FString("Simulated Proxy");
    		break;
    	case ENetRole::ROLE_None:
    		Role = FString("None");
    		break;
    	}
    	FString RemoteRoleString = FString::Printf(TEXT("Remote Role: %s"), *Role);
    	SetDisplayText(RemoteRoleString);// Pawn의 Role이 무엇인지 화면에 띄워준다.
    }
    
    void UOverheadWidget::OnLevelRemovedFromWorld(ULevel* InLevel, UWorld* InWorld)
    {
    	RemoveFromParent();
    	Super::OnLevelRemovedFromWorld(InLevel, InWorld);
    }

     

     

    BP_BaseCharacter

     


     

    실행화면