在 GDScript 中,运算符是用于执行变量或值之间运算的符号。GDScript 的运算符设计非常直观,融合了 Python 的易读性和 C++ 的高效性。
以下是 GDScript 中主要运算符的详细分类和说明:
🧮 算术运算符
用于执行基本的数学运算。
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
+ |
加法 / 字符串或数组拼接 | 5 + 2 / "A" + "B" |
7 / "AB" |
- |
减法 | 5 - 2 |
3 |
* |
乘法 | 5 * 2 |
10 |
/ |
除法 | 5 / 2 |
2 (注意:整数除法会截断小数) |
% |
取模 (取余) | 5 % 2 |
1 (仅适用于整数) |
** |
幂运算 | 2 ** 3 |
8 (即 2 的 3 次方) |
⚠️ 特别注意:
- 整数除法: 如果
/两边的操作数都是整数(如5 / 2),结果会是整数2而不是2.5。如果需要浮点数结果,请确保至少有一个操作数是浮点数(如5.0 / 2或5 / 2.0)。 - 浮点数取模:
%运算符仅适用于整数。如果你需要对浮点数取余,请使用fmod(a, b)函数。 - 幂运算结合性:
**是左结合的,即2 ** 2 ** 3等同于(2 ** 2) ** 3。
⚖️ 比较运算符
用于比较两个值,返回 true 或 false。
| 运算符 | 描述 | 示例 |
|---|---|---|
== |
等于 | x == y |
!= |
不等于 | x != y |
> |
大于 | x > y |
< |
小于 | x < y |
>= |
大于等于 | x >= y |
<= |
小于等于 | x <= y |
💡 提示: 在比较浮点数时,由于精度问题,直接使用 == 可能会有风险。建议使用 is_equal_approx(a, b) 函数来比较浮点数是否近似相等。
🔀 逻辑运算符
用于组合或反转布尔值。GDScript 同时支持 Python 风格和 C/JavaScript 风格的逻辑运算符,但官方推荐使用 Python 风格以提高可读性。
| 运算符 | 描述 | 示例 |
|---|---|---|
and / && |
逻辑与 | true and false (结果为 false) |
or / ` |
` | |
not / ! |
逻辑非 | not true (结果为 false) |
🔢 位运算符
用于对整数进行二进制位的操作。
| 运算符 | 描述 |
|---|---|
& |
按位与 |
| ` | ` |
^ |
按位异或 |
~ |
按位取反 |
<< |
左移 |
>> |
右移 |
📝 赋值运算符
用于给变量赋值。
| 运算符 | 描述 | 示例 | 等同于 |
|---|---|---|---|
= |
赋值 | x = 5 |
- |
+= |
加后赋值 | x += 2 |
x = x + 2 |
-= |
减后赋值 | x -= 2 |
x = x - 2 |
*= |
乘后赋值 | x *= 2 |
x = x * 2 |
/= |
除后赋值 | x /= 2 |
x = x / 2 |
%= |
取模后赋值 | x %= 2 |
x = x % 2 |
注意: GDScript 不支持 ++ (自增) 和 -- (自减) 运算符。请使用 x += 1 或 x -= 1 代替。
🎯 其他运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
in |
成员测试,检查某物是否包含在数组或字符串中 | "a" in ["a", "b"] (结果为 true) |
is |
类型检查,检查对象是否是某个类的实例 | node is Sprite2D |
? : |
三元运算符 | var result = "yes" if condition else "no" |
$ |
节点路径简写 | $Sprite2D 等同于 get_node("Sprite2D") |