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

问题描述

我正在使用内置的模板来制作FPS游戏,该模板可以射击瓶子。我在瓶子的重叠事件上使用过,这样当玩家弹丸重叠时,它将通过使用类爆炸效果中的生成器角色进行爆炸,然后瓶子和弹丸都会消失。但是问题是我需要跟踪爆炸的瓶子数,以便我可以给玩家分配分数。我在第三人称弹丸蓝图中创建了一个整数变量Count并初始化为0。能够在目标瓶子蓝图中访问它,并在玩家射击瓶子并发生爆炸时将其递增。但是问题是当我射击瓶子时,当我射击另一个瓶子时,Count变量会增加到1,它仍然是1而不是2等等。

This is my TargetBottle blueprint

Count variable in Projectile class

Projectile BluePrint中的计数变量

enter image description here

解决方法

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

这是面向对象编程的支柱之一,每个对象(在您的情况下为演员)都可以保留有关自身的私有信息。这很妙,因为并非演员的每个实例都会保留相同的信息。很难想象在您的情况下,因为据我所知,到目前为止,瓶子不需要保存任何信息。但是,请想象一下,如果您有一个蓝图类,其中有一个字符,并且有一个变量“名称”,那么每个参与者都应该存储其OWN名称,并且除非被特别设计,否则不允许其访问其他参与者的名称。 / p>

如果要存储不是特定于对象的变量(例如类似您的计数器的变量),那么一种实现方法是创建游戏实例。您可以通过在创建蓝图的相同选项卡上进行操作,但是在底部搜索GameInstance并将其选中。 Picture of creating a GameInstance class

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

现在只需在GameInstance中创建一个变量int,并为其提供所需的默认值即可,在这种情况下,我假设为0。

现在,您只需将其强制转换即可访问GameInstance中的变量,并且该对象将是“获取游戏实例”。然后,您可以使用存储在游戏实例中的变量来访问,修改以及进行任何其他操作。下面的示例。

Picture of example of using accessing variables in your GameInstance

开心的游戏开发,希望对您有所帮助!