无法增加虚幻中另一个蓝图中存在的变量

Unable to increment a variable present in another blueprint in unreal

我正在使用内置模板构建 FPS 游戏,该模板可以射击 bottles.I 用于瓶子的重叠事件,这样当玩家射弹与它重叠时,它就会通过使用来自 class 爆炸效果,之后瓶子和射弹都会 disappear.But 问题是我需要跟踪爆炸的瓶子数量,以便我可以将分数分配给 player.I 创建了一个整数变量 Count在第三人称射弹蓝图中并使用 0.I 初始化能够在 Target Bottle 蓝图中访问它并在玩家射击瓶子和爆炸时增加它 occurs.But 问题是当我射击瓶子时 Count 变量是当我拍摄另一瓶时增加到 1 它仍然是 1 而不是变成 2 等等。

射弹蓝图中的计数变量

当您在蓝图中存储诸如变量之类的信息时 class,这些变量仅“有效”并且特定于该对象的实例。想象一下,每次您生成一个瓶子时,该瓶子中的变量(例如“count”)都会被初始化并特定于该瓶子。当创建一个新的瓶子时,它自己的变量计数被初始化。

这是 object-oriented 编程的支柱之一,其中每个对象(在您的例子中是一个演员)都可以保留自己的私人信息。这很棒,因为并非演员的每个实例都会保留相同的信息。在你的情况下很难想象,因为据我所知 bottle 到目前为止不需要保存任何信息。但是想象一下,如果你有一个蓝图 class,它是一个角色,并且它有一个变量“名称”,那么每个演员都应该存储自己的名字,并且不允许访问其他演员的名字,除非专门设计那样。

如果您想存储一个不特定于某个对象的变量,例如像您这样的计数器,那么一种方法是创建一个游戏实例。您可以通过转到创建蓝图的同一选项卡来执行此操作,但在底部搜索 GameInstance 并 select 它。

然后,您可以在其中创建和存储游戏的全局变量。 GameInstance 的工作方式是它旨在存储您需要在 run-time 期间从该游戏的所有其他 classes(蓝图)访问或更改的所有变量。重新启动游戏后,这些变量将重置为默认值。但是它非常符合您的目的。

现在只需在 GameInstance 中创建一个变量 int,并为其指定您想要的默认值,在本例中我假设为 0。

现在您可以通过强制转换访问 GameInstance 中的变量,对象将是“获取游戏实例”。然后您可以使用存储在您的游戏实例中的变量访问、修改以及您需要的任何其他内容。下面的示例。

游戏开发愉快,希望对您有所帮助!