UE Gameplay 框架总结

2023-10-19 07:44
文章标签 总结 框架 ue gameplay

本文主要是介绍UE Gameplay 框架总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各个模块

GameInstance(游戏实例

  •        实例里的数据不会随着关卡的切换而消失
  •        作用是为游戏保存临时的全局数据(并不是所有的全局变量都存在GameInstance中,如玩家的信息应该存在PlayerState,游戏的一些信息存在GameState),或者自定义需要在全局使用的逻辑(慎重,GameInstance 的臃肿会导致卡顿)。
  •         通常情况下一个Game中应该只有一个GameInstance(UE也是提供了多个GameInstance协同的扩展的,但是一次Game只能有一个GameInstance生效)
  •         GameInstance的生命周期就是从游戏进程启动到游戏进程结束
GameInstance主要处理:
  • UWorld、ULevel之间的切换
  • 全局配置
  • GameMode的切换

GameMode (游戏规则)

  • 仅在当前Level生效,一个Level一次只能对应一个GameMode,但是一个GameMode可以用在多个Level中
  • 仅存在服务器中,客户端没有
 GameMode主要处理: 
  • Class登记:记录GameMode中各种类的信息
  • Spawn:创建Pawn和PlayerController等
  • 游戏进度:游戏暂停重启的逻辑
  • 过场动画逻辑
  • 多人游戏的步调同步

DefaultPawn (默认Pawn)

  • 自带DefualtPawnMovement、CollisionComponent、StaticMeshCompnent三件套(Pawn没有这些,Pawn提供了接口没有具体实现)
  • 服务端和客户端都存在一份,同时保持同步。
  • 在 GameMode 中修改。
DefaultPawn主要处理:
  • 提供基础的操作,保证Game运行

HUD 

  • 实现一些简单的界面元素(文本,点),复杂的要使用UMG,但是HUD开销更小
  • 只存在于客户端

PlayerController 

  • 拥有 Pawn 并设置其行为规则
  • 服务器上拥有所有玩家的PlayerController,而本地客户端则只有当前玩家的 PlayerController 。
  • 关联了客户端和服务端,通过该类,客户端可以向服务端发送请求
 PlayerController 主要处理:
  • Camera管理
  • Input输入响应
  • UPlayer关联
  • HUD显示
  • Level切换
  • Voice音源监听

 GameState

  • 数据的全局管理(用于存储游戏相关数据)
  • 服务端和客户端都存在一份,它包含要复制到游戏中的每个客户端的信息
  • 通常用来保持数据的同步,也可将其中的部分数据设置为不同步。
  GameState主要处理:
  • 保存游戏数据,如任务进度,游戏活动等。

PlayerState 

  • 数据的全局管理(用于存储角色相关数据)
  • 该类需要通过 PlayerController 来访问
  • 所有玩家的 PlayerState存在于所有机器上(与 PlayerController 不同),并且可以将数据从服务器复制到客户端以保持同步
  • PlayerState的生命周期为一整个Level的生命周期
PlayerState 主要处理: 
  • 保存玩家数据,客户端可以存在多个PlayerState对象,不同的PlayerState保存不同玩家的状态

这篇关于UE Gameplay 框架总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/238361

相关文章

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解