字符串


在制作游戏的某个时候,你需要使用文字。游戏中的文字通过使用 字符串 函数来处理(字符串只是一行文字的另一种说法),GameMaker Studio 2 有一套完整的函数, 允许你以多种方式操作字符串,包括在另一个字符串中插入一个字符串,复制字符串以及解析数字或其包含的字母的字符串的能力。通常,只能 通过在双引号 "" 中添加文本来创建字符串,并且不接受单引号字符串,也不能在代码里以换行符换行的方式将字符串拆分为多行并期望 GameMaker Studio 2 渲染它(除非使用字符串文字 @ identifier,如下所述)。

值得注意的是,在创建字符串时可以使用某些约定,主要涉及使用 转义字符。转义字符是以 “\” 符号开头的字符。因此,例如,如果你想在字符串中加上引号,你可能会遇到以下情况:

str = "Hello\"World\"";

你可以在任何 Unicode 文字之前使用 “\” - 在 “u” 之后的十六进制的 4 位数,例如 “\u0000”,其中 4 位数字是 Unicode 字符的编号 - 或任何十六进制文字 - 2 位数字 “0x” 后面的十六进制,例如 “\xff”,其中 2 位是要使用的字符的编号。这些和其他预定义的转义字符列在下表中:

常量 描述
\n 换行(LF)
\r 回车(CR)
\b 退格(Backspace,0x08)
\f 换页(0x0c)
\t 水平制表符(0x09)
\v 垂直制表符(0x0b)
\\ 反斜杠(0x5c)
\a 响铃(0x07)
\u[十六进制数字] 插入十六进制 unicode 字符(注意最多 4 位数)
\x[十六进制数字] 插入十六进制 unicode 字符
\[八进制数字] 插入八进制 unicode 字符


注意:如果在使用八进制或十六进制 Unicode 值时需要接上数字(例如:"\x1234567" 并且你希望使用字符 0x123 和数字 4567),那么用 “\” 作为字符结尾时它将逐字引述下一个字符(例如:"\x123\4567")


注意: 字符串支持换页、垂直制表符等...但这并不意味着它们将会 呈现,在绘制字符串时,这些字符可能会被忽略。

你还可以通过在整个字符串前加上 @ 字符来创建逐字 字符串文本

var test = @"
Line breaks
over multiple
lines
";

上面的代码将在多行上呈现字符串,就像包含换行符转义字符一样。逐字字符串文字类似于之前的 GameMaker 版本的字符串文字,但它们要使用双引号或单引号,并且必须以 @ 符号为前缀,它们可以在代码文件中分为多行,并且它们不支持转义字符,即 @"Hello\World" 不会试图转义 World 中的 W 而是逐字存储。请注意,当使用这样的字符串文字时,如果你希望在字符串中包含引号,则需要断开字符串,即:

var test = @"Hello " + "\"" + @"World" + "\""

另外需要注意的是,unicode 字符 9647(▯)用于替换在绘制事件中渲染时指定字体中可能包含的任何缺少的字形。因此,如果你的字体没有例如 ° 符号,那么写 90° 实际上会产生90▯。

以下函数列表都用于处理字符串:

除了那些专门与字符串相关的函数之外,Windows 目标平台还允许你使用访问剪贴板来获取和设置文本信息: