Expressions
当向事件添加条件或动作时,一些字段旁边会有以下标志:
这些标志表示该字段接受一个_表达式_。表达式是一个类似数学中的公式,可以由以下组成:
- [数字] (https://wiki.gdevelop.io/gdevelop5/all-features/expressions#numbers)
- [文本] (https://wiki.gdevelop.io/gdevelop5/all-features/expressions#text)
- [函数] (https://wiki.gdevelop.io/gdevelop5/all-features/expressions#functions)
- 数学运算符 (+,-,*,/)
提示
有关GDevelop提供的内置函数表达式的完整列表,请参阅[表达式参考] (https://wiki.gdevelop.io/gdevelop5/all-features/expressions-reference)。
数字
当以下标志出现在字段旁边时,该字段接受一个_数值_表达式:
下面的值是数值表达式的示例,由一个数字组成:
0
-10
25.5
您还可以使用数学运算符来加减乘除数字:
2+2
3-1
10*10
99/3
以下是运算符的完整列表:
+
(加)-
(减)*
(乘)/
(除)
最后,还可以使用函数-参见下一节。
文本
当以下标志出现在字段旁边时,该字段接受一个_文本_表达式:
下面的值是文本表达式的示例,由一个文本组成:
'Hello world'
'This is a text expression'
'GDevelop is cool!'
所有文本必须用双引号括起来。没有双引号,GDevelop将假定该值是一个函数或变量。
您可以使用+
运算符将两个或多个文本字符串连接在一起。例如,'Hello' + 'World'
变成'HelloWorld'
。当处理文本时,其他运算符无效(用另一个文本减去、乘以或除以文本没有意义)。
变量(或属性)
在表达式中,您可以写入一个变量的名称(场景变量、全局变量)。例如,如果在场景中添加了一个名为Score的变量,您可以简单地写入:2 * Score
来计算得分值乘以两倍。
还可以通过写入对象名称、一个点和变量的名称来访问对象的变量的值。例如:Player.Ammo
或Player.CoinEarned
。
最后,当您在[扩展] (https://wiki.gdevelop.io/gdevelop5/extensions/create)中编辑行为或自定义对象时,也可以通过写入它们的名称(如变量)来访问该行为或对象的属性。
注意
您还可以使用函数Variable(<变量的名称>)
(对于包含数字的变量)和VariableString(<变量的名称>)
(对于包含字符串的变量)来访问存储在场景变量中的值。还有一些函数可以访问全局变量(GlobalVariable(<变量的名称>)
)和对象变量(Object.Variable(<变量的名称>)
)。These functions are more verbose and more cumbersome to use. Most of the time, you can just write the name of the variable you want to use.
函数
通常情况下,我们需要使用游戏中的数据来计算复杂的值。例如,你可能想要根据玩家的X和Y坐标计算得分。
这就是函数的用处。
你可以在游戏运行时使用函数来动态计算值。例如,X
和Y
函数可以计算一个对象的坐标:
对象名称.X() 对象名称.Y()
使用函数通常被称为_调用_函数。
提示
如果你熟悉电子表格中的公式、编程语言中的函数或者数学中的函数,那么GDevelop中的函数也是类似的概念。
语法
有三种类型的函数:
- 没有对象的函数。例如:
cos(3.14)
。 - 带有对象的函数。例如:
玩家.X()
。 - 带有对象和行为的函数。例如:
玩家.Animation::索引()
。
没有对象的函数
一些函数与对象和行为无关。调用这些函数时不需要任何对象或行为。
以下是一些没有对象的函数的例子:
CurrentSceneName()
- 获取当前场景的名称。FileSystem::DesktopPath()
- 获取“桌面”目录的路径。ToNumber(<number>)
- 将字符串转换为数字。
注意
::
语法用于对与同一功能或扩展相关的函数进行分组。例如,所有的文件系统函数都以FileSystem::
作为前缀。这有助于组织相关的函数。::
语法不会改变函数的行为。
带有对象的函数
有些函数是在对象上调用的。这意味着函数对特定对象产生影响或检索数据。
以下是一些可与对象一起使用的函数的例子。占位符<object>
必须替换为游戏中的对象名称:
<对象>.角度()
- 获取对象的角度(以度为单位)。<对象>.图层()
- 获取对象所在的图层的名称。<对象>.对象名称()
- 获取对象的名称。
带有对象和行为的函数
有些函数是由附加到对象上的行为提供的。这意味着函数对附加到对象上的特定行为产生影响或检索数据。这对于操纵或读取行为中的数据通常很有用。
以下是一些带有对象和行为的函数的例子:
<对象>.寻路::速度()
<对象>.物理2::摩擦()
<对象>.平台游戏对象::重力()
注意
在这里你可以再次看到::
的语法。它将行为名称和函数名称分开。这在一个对象上有多个行为的情况下非常有用。
参数Some functions accept arguments. An argument is a value that:
- can be passed into a function
- affects the output of the function
For example, the ToString
function converts a number into a string, but it can't do anything unless you provide it with a number. That number is the argument. In the following example, the number 42
is the argument:
ToNumber(42)
Some functions, such as the RandomInRange
function, accept multiple arguments:
RandomInRange(3,undefined0)
When a function accepts multiple arguments, each argument must be separated by a comma.
Return values
When a function calculates a value, it's said to return that value. This value is the output of the function. For example, if the X coordinate of an object is 42
, the ObjectName.X()
function returns 42
. The value returned by a function depends on the object, the arguments, and the state of the game.
Functions can return numbers or strings. The type of value a function returns determines whether or not a function can be used in a field. For example, the ToString
function returns a string, so it can't be used in a field that expects a number, while the ToNumber
function returns a number, so it can't be used in a field that expects a string.