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 && 节点
疑问
标签:Ps,21,C++,API,&&,虚幻,TIPS,节点,客户端 From: https://www.cnblogs.com/Aquakinn/p/18226050