UE4 Replay重播系统(游戏死亡回放) 制作及问题解决

引擎版本:4.26

参考博客

Wiki上大神:Replay System Tutorial给出了教程基本可以实现功能。(翻译版本:重播系统测试版本)

根据上述案例制作后,在MyGameInstance.cpp中出现了一些问题,可以参考这位博主"JiangCoolguy"的文章:重播系统问题修复

其他问题修复

1. 无法打开包括文件: “NetworkVersion.h”: No such file or directory

解决:
在MyGameInstance.cpp中头文件,将

#include "NetworkVersion.h"

修改为

#include "Misc/NetworkVersion.h"

2.“INetworkReplayStreamer::EnumerateStreams”: 函数不接受 4 个参数

找到INetworkReplayStreamer::EnumerateStreams”的函数定义,
解决:
在MyGameInstance.cpp中FindReplays函数,

void UMyGameInstance::FindReplays()
{
   if (EnumerateStreamsPtr.Get())
   {
   	EnumerateStreamsPtr.Get()->EnumerateStreams(FNetworkReplayVersion(), FString(), FString(), OnEnumerateStreamsCompleteDelegate);

   }
}

修改函数参数为:

void UMyGameInstance::FindReplays()
{
	if (EnumerateStreamsPtr.Get())
	{
		EnumerateStreamsPtr.Get()->EnumerateStreams(FNetworkReplayVersion(), int32(), FString(), TArray<FString>(), OnEnumerateStreamsCompleteDelegate);
	}
}

3.“GameSavedDir”: 不是“FPaths”的成员

解决:
需要找到项目的Save文件.
在MyGameInstance.cpp中RenameReplay()函数,

const FString DemoPath = FPaths::Combine(*FPaths::GameSavedDir(), TEXT("Demos/"));

修改为:

const FString DemoPath = FPaths::Combine(*FPaths::ProjectSavedDir(), TEXT("Demos/"));

总结:

Pawn派生出的三个重要的类:

DefaultPawn
DefaultPawn里默认带了一个DefaultPawnMovementComponent、spherical CollisionComponent(球形碰撞组件)和StaticMeshComponent。

SpectatorPawn
SpectatorPawn提供了一个基本的USpectatorPawnMovement(不带重力漫游),并关闭了StaticMesh的显示,碰撞也设置到了“Spectator”通道;用来提供某些游戏里解说视角,即可以不显示玩家角色,但玩家可以控制摄像机观察整个游戏世界;

Character
Character可以理解为一个人形的Pawn,在Pawn的基础上新增了像人一样行走的CharacterMovementComponent(移动组件),CapsuleComponent(胶囊体组件),mesh(骨骼上蒙皮的网格);

在这里插入图片描述
Replay Sepectator Player Controller Class:
当处于观察者模式时,调用的controller!! 这一点非常重要.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值