如何在Phaser 3中使用本地字体?

Gag*_*Boy 4 phaser-framework

我的fonts/目录中有一种字体。如何将其加载到游戏中,然后在游戏中的文本对象上使用它?在Phaser 3中,我找不到使用字体的任何东西。

Nan*_*noo 11

纯JS解决方案:

这是我制作的一个小函数,只需要字体名称和 url:

function loadFont(name, url) {
    var newFont = new FontFace(name, `url(${url})`);
    newFont.load().then(function (loaded) {
        document.fonts.add(loaded);
    }).catch(function (error) {
        return error;
    });
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

loadFont("mixolydian", "assets/fonts/mixolydian.ttf");
Run Code Online (Sandbox Code Playgroud)

就是这样!您现在可以在 Phaser 中使用自定义字体。您所要做的就是将fontFamily值更改为新字体名称(即 mixolydian)。


Noo*_*bTW 10

首先使用css加载字体(@fontface):

<style media='screen' type='text/css'>
      @font-face {
        font-family: font1;
        src: url('media/yourfont.ttf');
        font-weight:400;
        font-weight:normal;
      }
</style>
Run Code Online (Sandbox Code Playgroud)

然后使用div加载字体:

<div style="font-family:font1; position:absolute; left:-1000px; visibility:hidden;">.</div>
Run Code Online (Sandbox Code Playgroud)

现在,您可以将其添加到游戏中:

this.add.text(190, 136, 'text', {
    fontFamily: 'font1',
});
Run Code Online (Sandbox Code Playgroud)