UE 如何保存全局变量

        游戏过程中我们经常需要保存一些全局变量,如玩家的总得分、当前生命值等等,在我们切换关卡之后它们的数值保持不变。在UE中主要使用SaveGame类对象和GameInstance对象。

        首先,点击右键创建蓝图类,输入save创建SaveGame蓝图类对象,命名为MySaveGame;输入Gameins创建一个GameInstance蓝图类对象,命名为GameManager。

 

 

        MySaveGame中定义一些全局变量,如分数、玩家生命值。GameManager中需要定义一个MySaveGame类型的变量,并且这里使用玩家生命值来进行演示。在GameManager初始化的时候使用CreateSaveGameObject来创建SaveGame类对象,类型指定为我们自定义的MySaveGame.

同时定义了2个函数用来设置和获取玩家生命值。

 

 

 对于场景,我就简单的设计了2个场景用于切换。

 接下来设计玩家类对象,对于系统自带的ThirdPersonCharacter蓝图我不打算把自己游戏的玩家功能放在里面,所以我创建了一个名为MyPlayer的蓝图组件类。选中场景中的第三人称角色,点击下面的"Add Component"按钮,再选择第一项"NewBlueprintScriptComponent",创建乐意蓝图组件类命名为MyPlayer。

 MyPlayer中可以定义一些自己游戏中会用到的玩家相关的变量,如生命值、分数等,同时需要定义一个GameManager类对象,方便对玩家的变量进行保存。GameManager类对象使用CastTo节点配合GetGameInstance函数获取到并对变量进行设置。

 而在ThirdPersonCharacter类中需要定义一个GameManger类对象和一个MyPlayer类对象。对于MyPlayer类对象使用GetComponentbyClass函数来获取,因为我们当初用的是"AddComponent"

         下面对功能进行测试,测试代码写在ThirdPersonCharacer类中。按小键盘上的9和点号两个键进行场景切换,因为2个场景中都有第三人称角色ThirdPersonCharacer存在,所以下面的代码在2个场景中都能执行。按7键玩家生命值减1并通过GameManager进行保存,按8键获取玩家当前生命值并显示,切换场景后功能正常。

猜你喜欢

转载自blog.csdn.net/qq_34256136/article/details/128114491