‫你好, 欢迎｡
‫在这节课中, 我们将把我们的医疗系统和动画蓝图连接起来, 这样我就可以拍摄这个角色,
‫直到他死去｡
‫让我们深入了解一下它是如何工作的｡
‫因此, 我们希望动画蓝图中的布尔值可以从游戏中自动设置｡
‫如果我们进入我们的事件图, 看看它目前是如何工作的, 其他属性, 比如速度,
‫激活, 转换, 我们将进入兵,
‫每次我们想要更新动画时, 我们都会在它上面执行一个获取函数｡
‫所以我们要沿着这个模型中继续下去, 看看我们的参与者是否死了.
‫因此, 要做到这一点, 我们需要公开一些功能, 一些C++中的可调用函数｡
‫让我们来看看C++, 看看它有什么｡
‫所以我们可以创建一个公共函数, 但这并不一定使它可访问｡
‫为了实现可访问性, 我们需要一个U函数, 使其对蓝图可见, 并展开标题工具系统｡
‫但我们必须更进一步, 而不仅仅是把它作为一个你的函数｡
‫所以我们从你的函数宏开始, 但是我们想让它成为蓝图可调用的｡
‫这就是我们可以使用可调用蓝图的选项｡
‫然而, 还有另一个选项可以覆盖Blueprint, 或者说暗示它是可调用的蓝图,
‫这是纯蓝图｡
‫现在, 我们马上就能看到纯蓝图和可调用蓝图之间的区别｡
‫但只要知道, 如果你使用蓝图纯, 它是做同样的蓝图可调用, 然后一些｡
‫所以它做的比Blueprint可调用的多一点｡
‫然后我们需要一个函数, 它返回布尔值来表示这个角色是否死了.
‫这对我们来说是很有用的｡
‫最后, 我们希望这是一个Concert成员函数｡
‫现在, 为什么它想成为音乐会？
‫因为当我们调用这个函数时, 我们并不期望它改变角色的任何状态｡
‫所以我们可以有把握地说, 这应该是一个音乐会功能｡
‫实际上, Concert和blueprint pure经常是一起的, 因为blueprint pure意味着,
‫如果我们进入任何一个blueprint, 我们都可以看到一些pure节点｡
‫这一个得到行为转换｡
‫那是个纯节点｡
‫得到的速度是一个纯节点设置的速度不是一个纯节点｡
‫你能看出是什么把这些联系在一起的吗？
‫为什么这些会使这个不纯而这个纯呢？
‫嗯, 一般来说, 这是一个事实, 有一个执行针｡
‫纯节点是指没有执行pin的节点｡
‫通常可以说某个东西没有执行pin, 当它对它调用的东西没有任何影响时, 它只对它的结果有影响｡
‫从本质上讲, 这意味着无论我们调用这个函数多少次, 它总是会输出相同的结果｡
‫它总是会对程序产生同样的影响｡
‫它是一个纯粹的函数｡
‫调用它时不会更改任何内容｡
‫所以它和常量差不多, 虽然它更强一点,
‫因为它说的不仅仅是它不改变射手角色的任何东西, 而且它不改变任何全局的东西, 任何地方的任何状态｡
‫到此为止｡
‫唯一的输入, 唯一的效果是它产生的输出｡
‫这就是为什么我们选择让这个蓝图变得纯粹｡
‫它消除了对执行引脚的需要, 这使得它在蓝图中更好｡
‫它也表达了这样一个事实当我们调用这个函数时, 我们并没有对博弈状态做任何改变.
‫因此, 让我们继续并尝试为此创建一个实现｡
‫实际上, 我将把实现作为一个挑战留给你们,
‫我们将把它挂在一个动画图中, 对不起, 是动画蓝图的事件图｡
‫所以我们要用一个新的集合来完成这个任务｡
‫我们想在结尾处设置一个死的布尔变量, 我们想得到兵的主人, 我们想投这个角色,
‫因为它需要是一个射手角色, 才能有这个死的属性｡
‫所以我们想把它转换成,
‫在这个例子中我想把它转换成C++射击角色, 因为我不需要一直说它肯定是一个蓝图版本, 因为这个新函数实际上存在于C++级别｡
‫所以我们要开始选角了｡
‫如果我们成功地执行了强制转换, 我们将设置is dead属性｡
‫让我在这里放一些重定向节点, 让我们的蓝图看起来更漂亮一点｡
‫然后我们要做的是使用这个射手角色参考｡
‫现在我们已经将它转换为一个射击角色, 我们知道它应该具有这是一个死属性｡
‫所以我们应该可以做到｡
‫一旦编译并使其工作, 就可以获取this is dead属性并在此处设置它｡
‫现在是时候让你来计算我们是死是活了.
‫因此, 从is dead函数中返回正确的布尔值｡
‫这是第一步｡
‫你可能会想用一些不等式来表示健康变量, 然后再把变量联系起来｡
‫在动画蓝图中, 死的是死的变量, 我们只差一点就做到了｡
‫我们只需要基本上只需要一个编译就可以完成｡
‫暂停视频, 整理一下｡
‫好吧, 我会的
‫欢迎回来｡
‫首先, 让我们来看看代码｡
‫很简单, 我将返回一个布尔值的表达式｡
‫所以我们想说, 健康小于或等于零, 在这种情况下我们确实死了？
‫这是一个函数表达式所能得到的最简单的结果｡
‫所以让我们继续构建它｡
‫一旦编译完成, 我们就可以进入虚幻世界, 把它连接起来｡
‫把as shooter拖到字符, 我们是节点, 我们这里有一个shooter字符引用,
‫所以我们要做的是dead, 给我们这个is dead函数, 你可以看到它没有执行引脚, 因为它是纯的｡
‫然后我们把这个布尔值从那个中取出来, 并把它和我们的is dead变量连接起来｡
‫现在如果我们继续玩下去, 我们应该可以在世界上杀死这个角色｡
‫我们会一直打到他的生命值归零｡
‫就这样｡
‫动画已经成功地杀死了他｡