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

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert