font_add_sprite_ext

使用此函数,您可以使用 " 精灵条 "( 精灵本身 必须 是资源浏览器中的精灵资源,或者使用 sprite_add 添加到游戏资源中的精灵) 来创建新的字体资源,其中每个子图像将是一个单独的符号或字母。与普通的 font_add_sprite() 对精灵的子图像有特定的顺序不同,此函数将根据函数的参数 "string_map" 来映射 sprite 子图像。这个参数是一个字符串,你可以用它来告诉 GameMaker 精灵字体的子图像是什么顺序,它会在写文本时自动映射这些。因此,例如,如果您有一个字符串映射 "AaBbCcDdEeFfGgHh",则您的精灵字体 必须 具有以这种方式排序的子图像。您可以将 " 空格 " 定义为您想要的任何字符,例如,您希望空格大小的单行,并且文本中的所有空格都将以该宽度呈现 (但是选择的图像将 永远不会 被呈现),或者,如果您不提供精灵空间,则将使用精灵字体中最宽字符的宽度。

您还可以将字体的间距设置为按比例 (true) 或不按比例 (false),其中按比例字体的间距是根据字母的实际宽度进行的 (因此,字母 "i" 占用的空间比字母 "w" 少,例如),而非比例字体将根据子图像宽度进行间隔,例如等宽字体。最后,您可以定义书写时每个字母之间要留出的空间,这可以是任何整数值,0是没有空格的 (如果比例,字母将 "触摸")。

该函数返回一个index值,该值应存储在变量中,因为在引用此字体的所有其他代码中都需要此值,或者如果该函数由于任何原因而失败,它将返回-1。

值得注意的是,要使字体对齐函数起作用 (例如draw_set_halign()),则字体精灵的原点应设置为左上角。如果使用其他值,则在使用字体绘制文本时需要考虑原点偏移量。

注意当您将字体加载到GameMaker时,您必须记住在不再需要时再次将其删除 (使用font_delete()),否则存在内存泄漏的风险,这将减慢速度并最终使您的游戏崩溃。

 

语法:

font_add_sprite_ext(spr, string_map, prop, sep);

参数类型描述
sprSprite Asset要添加字体的精灵.
string_mapString从中获取精灵子图像顺序的字符串。
propBoolean是否设置为比例字体。
sepReal每个字母之间要留出的空间。

 

返回:

Font Asset

 

例子:

global.Font = font_add_sprite_ext(spr_CalcFont, "0123456789+-*/=", true, 2);

上述代码将从变量 "spr_CalcFont" 中索引的精灵创建新的字体资源,并将新字体的索引存储在变量 "global.font" 中。精灵字体的子图像将映射到指定的字符串。