세팅하기

  이렇게 c++기반 게임인스턴스 하나 만들어요

  맨마지막거가 게임인스턴스입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

서드퍼슨맵을 복사해서 로비맵을 생성.

둘이 서로 알아먹기만 할수있게 표시하면됨 

 

 

 

 

 

맵 &모드에서 게임시작하면 맨처음나오는 맵과 서버가 맨처음 나오는맵을 설정

 

  

생성자초기화와 언리얼에서 제공하는                   게임 인스턴스 초기화의 차이.

 

#pragma once

#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "PuzzlePlatformsGameInstance.generated.h"

/**
 * 
 */
UCLASS()
class TEST_API UPuzzlePlatformsGameInstance : public UGameInstance
{
	GENERATED_BODY()
		//c++ 생성자 단에서 초기화 
		UPuzzlePlatformsGameInstance(const FObjectInitializer& ObjectInitializer);

	//언리얼 게임인스턴스 단에서 초기화 
	virtual  void Init();

	UFUNCTION(Exec)
		void Host(); //호스트

	UFUNCTION(Exec) //조인 + 접속아이피
		void Join(const FString& Address);

	
};

 

 

 

// Fill out your copyright notice in the Description page of Project Settings.

#include "PuzzlePlatformsGameInstance.h"

#include "Engine/Engine.h"

UPuzzlePlatformsGameInstance::UPuzzlePlatformsGameInstance(const FObjectInitializer & ObjectInitializer)
{
	UE_LOG(LogTemp, Warning, TEXT("GameInstance Constructor"));//생성자 초가화
}

void UPuzzlePlatformsGameInstance::Init()
{
	UE_LOG(LogTemp, Warning, TEXT("GameInstance Init")); //인스턴스 초기화
}

void UPuzzlePlatformsGameInstance::Host()
{
	UEngine* Engine = GetEngine(); //게임엔진의 현재 인스턴스를 가져움

	if (!ensure(Engine != nullptr)) return;

	Engine->AddOnScreenDebugMessage(0, 2, FColor::Green, TEXT("Hosting")); //로그띄워줌

	UWorld* World = GetWorld(); // 레벨의 현재 레벨을 가져옴

	if (!ensure(World != nullptr)) return;
	//서버전용 .  서버를 입력한 경로의 맵으로 이동시킴, 클라이언트랑 같이감 서버가 접속중인 클라이언트들의
	//플레이어 컨트롤러에서 ClientTravel을 호출함.
	World->ServerTravel("/Game/ThirdPersonCPP/Maps/ThirdPersonExampleMap?listen");
}

void UPuzzlePlatformsGameInstance::Join(const FString& Address)
{
	UEngine* Engine = GetEngine();

	//현재 클라의 플레이어컨트롤러의 첫번째 플레이어 컨트롤러 가져옴
	APlayerController* PlayerController = GetFirstLocalPlayerController();

	if (!ensure(Engine != nullptr)) return;
	//로그
	Engine->AddOnScreenDebugMessage(0, 5, FColor::Green, FString::Printf(TEXT("Joining %s"), *Address));

	//아이피가 유효할때 호출되면 입력된 아이피주소의 서버로 이동함.  
	//인텔리센스 빨간줄 무시하셈.
	PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute);

	
}

 

결과.

 

 

 

+ Recent posts