代码的最后一个部分是全新的内容。这是一个可更改角色生命值的函数:
到目前为止,你已经在 Input.GetAxis 或 rigidbody.MovePosition 中使用了函数,或者在默认的 Start 和 Update 函数中编写了代码,但从未编写过你自己的函数。我们来快速了解一下这个函数。
函数声明
第一行被称为函数声明,看起来很像 Start 和 Update 函数(函数声明告诉编译器如何编译该函数):
注意:你已经在 rigidbody.MovePosition 中使用过参数(在 4 -“世界交互 - 阻止移动”中),当时将新位置放在括号中。之所以使用括号是因为要调用 Unity 提供的 MovePosition 函数。完整的 MovePosition 函数声明是 void MovePosition (Vector2 newPosition)。
ChangeHealth 函数
现在让我们来看看 ChangeHealth 函数的主体,即花括号内的代码:
这里使用了另一个名为 Mathf.Clamp 的内置函数来设置当前生命值。这是因为,在 Ruby 处于生命值满血状态时,如果你尝试将生命值增大 2,生命值便会超过最大值。
同样,如果 Ruby 剩下的生命值为 1,而你尝试减少 2,则 Ruby 的生命值将为负。
钳制功能 (Clamping) 可确保第一个参数(此处为 currentHealth + amount)绝不会小于第二个参数(此处为 0),也绝不会大于第三个参数 (maxHealth)。因此,Ruby 的生命值将始终保持在 0 与 maxHealth 之间。
在 Console 窗口中显示生命值
最后,你通过添加相关代码,借助 Debug.Log 在 Console 窗口中显示当前生命值。每次生命值变化时,此脚本都会更新控制台。
在我们的游戏中没有任何图形或文本可以显示 Ruby 的生命值,因此你可以检查控制台来查看一切是否正常。
为了更容易在控制台中读取生命值,你使用了 + 将字符串合并为一个方便阅读的短语。在此示例中,你在 currentHealth 和 maxHealth 之间插入了一个斜杠 (/)。
现在让我们回到 Unity 编辑器,看看 Unity 如何编译对脚本所做的更改,并查看你的角色。