游戏实例(Game Instance)是UE5中跨关卡持久化的全局对象,适合存储需要在多个UI或关卡间共享的变量(如玩家分数、设置参数等)。通过将变量存储在游戏实例中,UI蓝图和关卡蓝图均可直接访问和修改。

步骤1、在游戏实例中定义变量

1.创建自定义游戏实例类(若未创建)

  • 在内容浏览器中右键 → Blueprint Class → 选择 Game Instance。
  • 命名为BP_MyGameInstance(示例)。

2.添加变量

  • 打开BP_MyGameInstance蓝图。
  • 在我的蓝图(My Blueprint)面板中,点击变量(Variables) → 添加变量。
  • 命名变量(如PlayerScore),设置类型(如Integer),并勾选可编辑实例(Editable Instance)(可选,便于调试)。

步骤2、在关卡蓝图中更新游戏实例变量

1.获取游戏实例引用

  • 在关卡蓝图中,右键添加节点 → Get Game Instance。
  • 将返回的Game Instance引用转换为自定义类BP_MyGameInstance(通过Cast To BP_MyGameInstance节点)。

2.设置变量值

  • 从转换后的引用拖出,选择变量(如PlayerScore)并添加Set节点。
  • 输入要设置的值(例如通过关卡逻辑触发)。

步骤3、在UI蓝图中读取游戏实例变量

1.获取游戏实例引用

  • 在UI蓝图中,右键添加Get Game Instance节点。
  • 将返回的Game Instance引用转换为BP_MyGameInstance。

2.获取变量值

  • 从转换后的引用拖出,选择变量(如PlayerScore)并添加Get节点。
  • 将获取的值连接到UI控件(如文本框)的显示节点。

步骤4、在UI蓝图中修改游戏实例变量

1.通过UI事件触发修改

  • 例如,在按钮点击事件中,获取游戏实例引用并调用Set节点更新变量。

2.实时更新UI

  • 在变量值改变后,重新调用Get节点并更新UI显示。

关键注意事项

1.变量作用域

  • 游戏实例变量是全局的,适合存储跨关卡数据(如玩家状态、设置参数)。
  • 局部变量应存储在关卡蓝图或Actor中。

2.类型一致性

  • 确保UI和关卡蓝图中使用的变量类型一致(如Integer、Float等)。

3.空引用检查

  • 在转换游戏实例引用时,使用Branch节点检查是否转换成功,避免空引用错误。

4.性能优化

  • 避免频繁读取/写入游戏实例变量,必要时可使用事件分发器或绑定机制。

通过以上步骤,你可以高效地利用游戏实例实现UI与关卡蓝图之间的变量共享,确保数据的一致性和可维护性。