UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解

这篇具有很好参考价值的文章主要介绍了UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:UE虚幻引擎专栏
  • 💥 标题:UE4 中可全局获取的变量(例如游戏实例、玩家控制器、游戏模式等) 详解
  • ❣️ 寄语:加油,一次专注一件事!
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正,同时有问题的话,欢迎大家留言讨论。

0 引言

在游戏开发过程中,有一些变量经常需要被别的蓝图调用,但是这个变量又不是全局变量。所以使用前需要通过Get Actor Of Class(获取类的actor)的方式获取对象的引用。但是假如我们将经常需要用到的变量存储在全局对象当中,下次别人要调用就直接通过这个全局对象来访问这个变量。

1 全局对象(全局变量)

🎈对象其实也是一种变量,所以全局对象也可以叫做全局变量🎈

在UE4中,有一些全局可获取的变量,可以方便地访问和管理游戏的各个方面。

  • GameInstance 游戏实例
  • GameViewportClient 游戏视口客户端
  • UWorld 游戏世界
  • GameModeBase 游戏模式
  • PlayerController 玩家控制器
  • Actor 演员

通过这些全局变量,开发者可以方便地访问和管理游戏的不同方面,从而实现更灵活和高效的游戏逻辑和交互操作。

拓展:在UE4切换关卡时,下面这些全局变量不会被释放:

  • GameInstance 游戏实例:游戏实例中的数据将在切换关卡时保留,以便在下一个关卡中继续使用。
  • PlayerController 玩家控制器:玩家控制器是负责玩家输入和控制的对象,它们在切换关卡时通常会保持不变。
  • GameModeBase 游戏模式:游戏模式定义了游戏的规则和逻辑,它们在切换关卡时通常会保持不变。
  • 主角色(APawn、ACharacter):游戏中主角的演员(Actor)通常会在切换关卡时保持不变。
  • 关卡关联的演员(Actor):如果某个actor在关卡编辑器中被直接放置在关卡中,那么在切换关卡时它们通常会保持不变。下图所示,每个actor都有自己所属的关卡
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器

需要注意的是,不会被释放的变量只是在切换关卡时会保持不变,但在游戏结束或重新加载游戏时可能会被重置或释放。此外,其他不直接与特定关卡和角色关联的全局变量也可以在切换关卡时保持不变,如全局的游戏配置、游戏状态等。

1.1 游戏实例 GameInstance

1.1.1 介绍

UGameInstance:游戏实例,它负责保存和共享游戏的全局数据和状态。可以在项目中创建自定义的UGameInstance子类,通过GetGameInstance函数获取当前的游戏实例,并使用其中的变量来存储和访问全局数据

GameInstance是UE4中的全局类,只有一个实例(就像是单例设计模式,只有一个对象)

GameInstance常用的函数与用法

  • Event Init(事件初始)与 Event Shutdown(事件关闭),引擎初始化与关闭时执行的逻辑。
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器

  • 为游戏保存全局数据:比如上一个关卡的信息需要在下一个关卡使用时;只是临时数据,游戏结束则消失;则可以将这些临时数据保存在GameInstance中。(假如需要持久保存数据需要用SaveGame,也就是将数据存储到磁盘中)

1.1.2 使用 GameInstance

  1. 首先新建蓝图类继承 GameInstance 基类
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器
  2. 在项目设置中配置游戏实例类为我们刚才新建的游戏实例类即可。(不配置的话游戏运行还是使用的默认的类)
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器
  3. 在其他蓝图类中获取游戏实例对象
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器

深入思考:通过获取游戏实例得到的其实是父类的指针(应该是父类指针指向子类对象),但是使用父类指针是访问不了子类中特有的函数的,所以就需要进行类型转换(UE的类型转换在C++中对应的就是static_cast、dynamic_cast等类型转换函数)。
这是一种抽象编程的思想,假如【获取游戏实例】函数获取的不是父类指针,而是直接获取对应的子类指针,而且我们也不知道未来会有多少子类被定义。不能新定义一个子类,我们就去修改【获取游戏实例】函数的源码,很显然这种程序设计思想太垃圾了。

1.2 玩家控制器 PlayerController

玩家控制器 和 GameInstance 使用方法很类似
它也可以通过【获取玩家控制器】函数获取父类指针,然后类型转换为子类类型之后就可以使用功能。

使用步骤:

  1. 新建一个子类派生于 PlayerController
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器
  2. 设置【项目设置中】选择新建的玩家控制器类(首先得新建一个游戏模式的子类,才能选择玩家控制器类)
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器
  3. 使用
    UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解,UE,ue4,游戏,ue5,C++,全局变量,游戏实例,玩家控制器

1.3 游戏世界类 UWorld

在UE4中,UWorld是一个重要的类,代表了游戏世界的实例。它是一个容器,用于存储和管理游戏中所有的Actors(角色)和Objects(对象),并负责协调它们之间的交互和逻辑。

这部分内容了解的还不多,挖个坑,等学习熟练之后再将这部分内容补全。文章来源地址https://www.toymoban.com/news/detail-739861.html

到了这里,关于UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4 无用の小技巧之联机游戏获取自身控制器

    文章内容仅为个人学习所得,如有错误,还请指正!谢谢 通常在UE4中获取玩家控制器是使用GetPlayerController,但在联机游戏中,想要获取玩家所拥有的控制器时,常规的GetPlayerController所获取的控制器只在服务端是正确的,因为在联机模式下,玩家的PlayerIndex是不一致的 在Paw

    2024年02月12日
    浏览(61)
  • UE4 限制玩家摄像机视角旋转角度

    功能 :玩家可以用鼠标旋转视角观察角色,但限制旋转的角度 网上找了很多没找到,于是自己实现了一种方式 先在弹簧臂组件里勾上使用pawn控制旋转,这样相机的旋转就跟玩家控制器绑定了,所以重点在于如何对玩家控制器进行限制 如果不加旋转限制的话是这样子 可以发

    2024年02月12日
    浏览(53)
  • UE4动作游戏实例RPG Action解析一:角色移动,旋转,动画创建,创建武器,及武器配置

    1.1、官方RPGAction Demo下载地址: ​ 1.2、在场景中创建一个空的角色 创建一个Character蓝图和一个PlayerController蓝图,添加弹簧臂组件和摄像机,并为网格体添加上一个骨骼网格体 ​ 1.3、如何让这个角色出现在场景中, 创建一个GameMode蓝图,把默认Pawn类设置成我们创建的角色,

    2024年02月03日
    浏览(55)
  • UE4样条线移动,玩家只需要控制旋转

    1.创建Actor并命名为“A_Spline” 2.创建Pawn并命名为“P1” 3以上创建的蓝图类可以使用自己的命名!!!!! 第二步:给P1写上蓝图 1.我们首先给P1写蓝图 2.在输入映射中设置一个事件Yaw 3.为鼠标的X轴,数值为1 4.如图写上刚刚设置的输入事件 第三步:给A_Spline写上蓝图 1.添加一

    2023年04月09日
    浏览(60)
  • UE4动作游戏实例RPG Action解析三:实现效果,三连击Combo,射线检测,显示血条,火球术

    实现武器三连击,要求: 1.下一段Combo可以随机选择, 2.在一定的时机才能再次检测输入 3. 等当前片段播放完才播放下一片段 1.1、蒙太奇设置 通过右键-新建蒙太奇片段,在蒙太奇里创建三个片段,并且移除相关连接,这样默认只会播放第一个片段 不同片段播放动画从 资产

    2024年02月21日
    浏览(55)
  • [UE4][C++]调整分屏模式下(本地多玩家)视口的显示位置和区域

              在UE4中,多个玩家共用一个显示器就可以启用分屏模式,按玩家人数(最大四人)将屏幕均匀分割,显示不同玩家的视角,开发者可以在编辑器里设置分割类型(水平或者垂直),这个分割是采用UV坐标的方式。 (进入项目设置--项目--地图和模式--本地多人) 调整

    2024年02月15日
    浏览(56)
  • 在UE4虚幻引擎中加入导航网格体边界体积后丧尸不能移动和发现玩家

    最近使用ue4做第一人称视角射击游戏发现问题,加入导航网格体边界体积后丧尸不能移动和发现玩家。下图是出现的问题图片 1.行为树:控制并显示AI的决策制定过程 2.黑板:可以看做是行为树的创建一些公有变量,外部可以修改行为树黑板的变量值,达到修改行为树状态的

    2024年02月05日
    浏览(112)
  • UE 如何保存全局变量

            游戏过程中我们经常需要保存一些全局变量,如玩家的总得分、当前生命值等等,在我们切换关卡之后它们的数值保持不变。在UE中主要使用SaveGame类对象和GameInstance对象。         首先,点击右键创建蓝图类,输入save创建SaveGame蓝图类对象,命名为MySaveGame;输入

    2024年02月13日
    浏览(56)
  • UE4蓝图基础04-变量和数组

    所谓变量,就是保存了各种值的“器皿”,它可以存放一个值或引用世界中的一个Object或Actor的属性。在编程中,会根据需要将各种计算的结果或部件的设定值等,拿来进行处理操作。为此,需要事先将必要的值保存在某个地方,这就是变量的作用。 变量也有类型之分,创建

    2024年02月06日
    浏览(70)
  • UE4游戏保存

    在游戏运行过程中由于某些事情需要暂停一下游戏,那就需要把游戏当前的进度保存起来,下次打开的时候还可以再次玩,我们这里主要保存的就是。所有需要有一个游戏保存的机制。UE4提供了这样的机制。 首先新建一个类继承在SaveGame,命名为FirstSaveGame 打开VS2019编辑代码

    2024年02月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包