【UE】游戏运行流程的简单理解

流程图

官方的游戏流程图:

        一般顺序为初始化引擎、创建并初始化 GameInstance、加载关卡,最后开始游戏。

总的来说就是:

        开始游戏-》游戏实例-》关卡-》游戏模式-》玩家控制器-》Pawn、玩家状态、HUD、UMG(可有可无)

1 游戏实例

        负责保存和共享游戏的全局数据和状态。 比如上一个关卡的信息需要在下一个关卡使用时,可以将这些临时数据保存在GameInstance中。(假如需要持久保存数据需要用SaveGame,也就是将数据存储到磁盘中)

        游戏实例中的所有东西(如:函数、宏、变量等)可以随时调用

游戏实例的创建

可以在项目设置中创建一个新的游戏实例

重载函数“初始”是引擎启动后第一个执行的函数

游戏实例的应用举例

        ·初始化基础数据

        ·判断玩家的设备

        ·检查玩家存档

2 关卡

        关卡是Actor的容器,可作为玩家的活动场景。在游戏中,玩家看到的所有对象,交互的所有对象,都保存在一个世界中。这个世界我们称之为 关卡(Level)。在虚幻引擎中,关卡由静态网格体(Static Mesh)、体积(Volume)、光源(Light)、蓝图(Blueprint)等内容构成。

3 游戏模式

        每个关卡对应一个游戏模式,如果关卡没有创建对应的游戏模式,那么引擎将使用自带的游戏模式“GameModeBase”。 

        在联机模式下只有主机才会存在游戏模式实例。

4 玩家控制器

        PlayerController(玩家控制器) 是Pawn和控制它的人类玩家间的接口。PlayerController本质上代表了人类玩家的意愿。

        当您设置PlayerController时,您需要考虑的一个事情就是您想在PlayerController中包含哪些功能及内容。您可以在 Pawn 中处理所有输入, 尤其是不太复杂的情况下。但是,如果您的需求非常复杂,比如在一个游戏客户端上的多玩家、或实时地动态修改角色的功能,那么最好 PlayerController中处理输入。在这种情况中,PlayerController决定要干什么,然后将命令(比如"开始蹲伏"、"跳跃")发布给Pawn。

        同时,某些情况下,则必须把输入处理或其他功能放到PlayerController中。PlayerController在整个游戏在过程中都是一直存在的,但是Pawn可能是临时存在的。 比如,在死亡竞技模式的游戏中,您可能死了又重生,所以您将获得一个新的Pawn,但是您的PlayerController都是一样的。在这个示例中,如果您将分数保存到您的Pawn上, 那么分数将会重置,但是如果您将分数保存到PlayerController上,它将不会重置。

        一个游戏模式可以包含多个玩家控制器,通常单人游戏只有一个玩家控制器,多人游戏有多个玩家控制器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea运行程序报错 java 程序包org.junit不存在

在 IntelliJ IDEA 中运行程序时遇到错误提示:“java: 程序包org.junit不存在”,针对这一问题,我们可以考虑以下三步来解决: 第一步:检查JUnit依赖 尽管现代项目创建时通常会默认引入JUnit依赖,但仍需检查…

postman 文档、导出json脚本 导出响应数据 response ,showdoc导入postman json脚本 导出为文档word或markdown

保存、补全尽可能多的数据、描述 保存响应数据 Response:(如果导出接口数据,会同步导出响应数据) 请求接口后,点击下方 Save as Example 可以保存响应数据到本地(会在左侧接口下新增一个e.g. 文件用来保…

仅一个月获推荐170w+,视频号近期爆火的秘诀是什么?

为了保证良好的创作环境,视频号的原创标准在1月做了新调整, 视频时长小于5秒则不能声明为原创 ,纯图片轮播也不能声明为原创,只有持续输出优质内容的账号才能显示原创标识及原创保护功能,这样的改动也给了不少创作者…

基于Vue的移动端UI框架整理

一、Vant 官方地址:https://youzan.github.io/vant/#/zh-CN/ 简介:有赞公司开发。 特性:60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

Redis 命令大全

文章目录 启动与连接Key(键)相关命令String(字符串)Hash(哈希)List(列表)Set(集合)Sorted Set(有序集合)其他常见命令HyperLogLog&…

Unity类银河恶魔城学习记录3-1 EnemyStateMachine源代码 P47

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Enemy.cs using System.Collections; using System.Collections.Generic;…

Java 学习和实践笔记(1)

2024年,决定好好学习计算机语言Java. B站上选了这个课程:【整整300集】浙大大佬160小时讲完的Java教程(学习路线Java笔记)零基础,就从今天开始学吧。 在这些语言中,C语言是最基础的语言,绝大多…

抢 React 饭碗!如何在 Vue3 中使用 JSX TSX

首先,恭喜一下 React,再过 4 个月,就达成了两年无更新记录 反观隔壁的 Vue,稳定迭代更新 之前写 React 的时候,最喜欢的是 JSX/TSX 语法,把 HTML 组件当做 JavaScript/TypeScript 代码片段处理 const Ap…

数学建模:数据相关性分析(Pearson和 Spearman相关系数)含python实现

相关性分析是一种用于衡量两个或多个变量之间关系密切程度的方法。相关性分析通常用于探索变量之间的关系,以及预测一个变量如何随着另一个变量的变化而变化。在数学建模中,这是常用的数据分析手段。   相关性分析的结果通常用相关系数来表示&#xff…

一个查看armv8系统寄存器-值-含义的方式

找到解压后的SysReg_xml_v86A-2019-12目录 wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-architecture/2019-12/SysReg_xml_v86A-2019-12.tar.gz wget https://developer.arm.com/-/media/developer/products/architecture/armv8-a-archi…

k8s中cert-manager管理https证书

前言 目前https是刚需,但证书又很贵,虽然阿里云有免费的,但没有泛域名证书,每有一个子域名就要申请一个证书,有效期1年,1年一到全都的更换,太麻烦了。经过搜索,发现了自动更新证书神器cert-manager;当然cert-manager是基于k8s的。 安装采用Helm方式 Chart地址: ht…

在没有鼠标或键盘的情况下在 Mac 上如何启用蓝牙?

通过这个技巧,小编将向您展示几种无需鼠标或键盘即可在 Mac 上重新启用蓝牙的方法。如果您想开始使用蓝牙配件,但还没有连接,这会很有用。 无需鼠标即可启用蓝牙 蓝牙是iPhone、iPad和 Mac 的标准配置。它确保您可以无线使用各种配件&#…

京东物流基于 StarRocks 的数据分析平台建设

作者:京东物流 数据专家 刘敬斌 小编导读: 京东集团 2007 年开始自建物流,2017 年 4 月正式成立京东物流集团,截至目前,京东物流已经构建了一套全面的智能物流系统,实现服务自动化、运营数字化及决策智能化…

OpenGL 入门(九)—Material(材质)和 光照贴图

文章目录 材质设置材质光的属性脚本实现 光照贴图漫反射贴图高光反射贴图 材质 材质本质是一个数据集,主要功能就是给渲染器提供数据和光照算法。 如果我们想要在OpenGL中模拟多种类型的物体,我们必须针对每种表面定义不同的材质(Material)属性。 我们…

Java on VS Code 2024年1月更新|JDK 21支持!测试覆盖率功能最新体验!

作者:Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版:Alan Wang 大家好,欢迎来到 Visual Studio Code for Java 2024年的第一期更新!提前祝愿大家春节快乐!在本博客中,我们将有…

C++:深入剖析默认参数

看下列代码执行结果&#xff0c;你猜一猜会输出什么&#xff1f; #include<iostream> using namespace std; struct A {virtual void fun(int a 10) {cout << "A,a"<<a;} }; struct B :public A {void fun(int a 5) {cout <<"B,a&qu…

初入外贸行业,拓展客户怎么做?这篇文章教会您

作为外贸小白&#xff0c;您是否为找不到合适的客户而苦恼&#xff1f;您是否想要拥有更多的订单和收入&#xff1f;如果您的答案是肯定的&#xff0c;那么您就需要学会如何通过CRM系统拓展目标客户。下面来说说&#xff0c;外贸小白怎么扩展目标客户&#xff1f; 1、搜集客户…

建议收藏!操作系统基础:文件系统实现【上】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;OS从基础到进阶 &#x1f3c6;&#x1f3c6;本文完整PDF源文件请翻阅至文章底部下载。&#x1f3c6;&#x1f3c6; ⚔️1 文件系统的层次结构&#x1f527;1.1 总览&#x1f527;1.2 例子…

《动手学深度学习(PyTorch版)》笔记7.3

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…