ScopedPredictionWindow 是一个与网络预测(Network Prediction)相关的工具类,主要用于在多人游戏中管理预测窗口的生命周期,确保客户端预测和服务器验证的一致性。
网络预测上下文管理:在客户端预测期间,ScopedPredictionWindow 会创建一个临时的 "预测窗口",标记这段时间内执行的操作处于预测状态。
防止预测冲突:确保在预测期间执行的网络相关操作(如 RPC 调用、变量同步)能够正确被引擎的网络系统识别和处理,避免预测结果与服务器权威状态产生冲突。
自动清理:作为一个作用域(Scoped)类,它会在析构时自动结束预测窗口,无需手动管理状态切换,降低了出错风险。
example:
void AMyCharacter::PerformPredictedAction()
{
// 创建预测窗口,标记后续操作处于预测状态
FScopedPredictionWindow ScopedPrediction(this);
// 在预测窗口内执行需要预测的逻辑
if (GetLocalRole() == ROLE_AutonomousProxy)
{
// 客户端预测的行为
SimulateAction();
}
// 当ScopedPrediction超出作用域时,自动结束预测窗口
}