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

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre