[LayaAirIDE3]应该如何定义@property才能像GTextField一样加载字体?

在引擎里可以GTextField这种文字节点可以添加字体,但是如果是自定义的节点应该如何做可以实现这种效果,添加字体!
我尝试了,scene里的preload的预加载字体,但是没找到代码可以控制的地方,只能在每次创建的时候加载字体!
可以通过Laya.loader.load来加载字体,但是这样会造成回调或者promise,使得整个程序都陷在异步里
可以在初始场景加载各种资源,但是问题是我要单独测试某个场景的时候,加载字体就会是问题!
我制作了一个显示文字的节点,但是加载字体异步的问题会显得非常麻烦,cocos可以通过装饰器直接添加字体,但是我没有找到LayaAir的对应方式!
或者在测试某个单独场景的时候,有没有对应的生命周期函数可以使用,加载完对应的资源后,开始执行测试场景!
如果可以在装饰器上直接添加字体这种类型,并在加载完字体后执行对应场景,将是极好的!但是我不知道如何做!
 
已邀请:

LayaAir大为

赞同来自:

@property({type: String, displayName: "字体名称", default: "宋体",isAsset: true, inspector: "Font"})
您好,这个装饰器可以实现您需要的效果

LayaAir大为

赞同来自:

您可以设置一下启动脚本,在启动脚本中加载字体资源,加载完成后打开需要的场景,在场景中通过getRes方法来获得这个资源
设置启动脚本的位置为:项目设置-脚本编译-启动脚本
启动脚本代码:
export async function main() {
    console.log("Hello LayaAir!");

    Laya.loader.load("resources/BitmapFont.fnt", Laya.Loader.FONT).then((res) => {
        Laya.Scene.open(Laya.PlayerConfig.startupScene); //可以设置场景路径
    })
}
 
场景中加载字体代码:
    onAwake(): void {
        let fnt = Laya.loader.getRes("resources/BitmapFont.fnt", Laya.Loader.FONT);
        console.log(fnt);
    }

要回复问题请先

商务合作
商务合作