[21] C++ 虚幻引擎项目结束

Week21

Day1

大纲

准备开始游戏
踢除玩家
根据职业更改外观样式

内容

踢除下线

在玩家客户端调用让当前客户端下线 , 会退到默认地图

void AHallPlayerState::Client_AskLogout_Implementation()
{
	//下线
	UKismetSystemLibrary::ExecuteConsoleCommand(this, TEXT("DISCONNECT"));
}

判断当前是否服务端

CopyProperties的应用

根据职业更改外观样式

void ALGPlayerCharacter::BeginPlay()
{
	UpdateCareerMeshCount = 5;
	UpdateCareerMesh(); //更新模型
}
//在一段时间内持续调用 , PlayerState的值可能会由延迟 , 但指持续调用5次
void ALGPlayerCharacter::UpdateCareerMesh()
{
	if (ALGPlayerState* Ps = Cast<ALGPlayerState>(GetPlayerState()))
	{
		UE_LOG(LogTemp, Log, TEXT("更新模型%hhd"), Ps->GetCareer())

		if (Ps->GetCareer() != ECareer::ETT_None)
		{
			//加载职业对应的网格资产
			USkeletalMesh* SkeletalMesh = LoadObject<USkeletalMesh>(
				GetMesh(), LG::GetCareerSkeletalMesh(Ps->GetCareer()));
			GetMesh()->SetSkeletalMesh(SkeletalMesh);
			return;
		}
	}

	if (--UpdateCareerMeshCount < 0)
	{
		return;
	}

	FTimerHandle TimerHandle;
	GetWorld()->GetTimerManager().SetTimer(TimerHandle, this, &ALGPlayerCharacter::UpdateCareerMesh, 0.5f);
}

同步 : 奔跑

虚幻引擎已经帮我们做好了网络同步了 , 我们只需要吧行为上到服务器即可

TIPS

独立进程才能无缝漫游

GameInstance : 跨地图也存在

API && 节点

踢下线

UKismetSystemLibrary::ExecuteConsoleCommand(this,TEXT("DISCONNECT"));

HUD拿到PS

GetOwningPlayer()->GetPlayerState<>()

Day2

大纲

道具丢弃捡起
道具穿上脱下
捡枪丢枪
奔跑 精准瞄准
开枪
特效
武器子弹

内容

地上的道具开启网络同步

TIPS


做网络同步的时候先从客户端思考 , 服务端怎么办 客户端怎么办

部署自己的SVN开发项目

枪要设置Owning

敲错代码翻上去看是不是引入了其他模块

API && 节点

C++设置网络同步

bReplicates = true;//网络同步
SetReplicates(true);
Character->IsLocallyControlled()) //查看是否本地控制的角色

疑问

 

Day3

大纲

内容

TIPS

API && 节点

疑问

 

Day4

大纲

内容

TIPS

API && 节点

疑问

 

Day5

大纲

内容

TIPS

API && 节点

疑问

 

posted @ 2024-06-01 21:04  啊賢  阅读(10)  评论(0编辑  收藏  举报