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!! 这一点非常重要.

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Replay游戏回放是一个用于在Unreal Engine 4.26中实现游戏回放功能的系统。你可以通过使用Replay System Tutorial提供的教程来实现这个功能。[1] 你需要创建一个新的蓝图类GI_Replay,它继承自MyGameInstance,并重载函数BP on Find Replays Complete 1。此外,还需要创建一个新的控制器类BP_PB_ReplaySpectator,它继承自PC_ReplaySpectator。然后,在第一人称和第三人称游戏模式蓝图中设置重播旁观者为创建的PC_ReplaySpectator。最后,在两人称角色蓝图中开启复制和复制运动,并编写录制逻辑。 为了解决问题,在MyGameInstance.cpp文件中找到“INetworkReplayStreamer::EnumerateStreams”的函数定义,并在FindReplays函数中进行修改。具体修改如下: void UMyGameInstance::FindReplays() { if (EnumerateStreamsPtr.Get()) { EnumerateStreamsPtr.Get()->EnumerateStreams(FNetworkReplayVersion(), FString(), FString(), OnEnumerateStreamsCompleteDelegate); } } 这样就可以解决问题了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [UE4 Replay重播系统(游戏死亡回放) 制作问题解决](https://blog.csdn.net/qq_42618180/article/details/118495081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【UE4Replay游戏回放 for UE4.26](https://blog.csdn.net/qq_28660661/article/details/125605426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值