动态修改字体Label Font

  • Creator 版本:2.0.0以上

有朋友实现过动态设置Label的字体吗?用系统字体比较丑,要跟着项目的风格指定一套字体。现在字体太大了,有4M,需要放在服务器,到时候动态加载,可以实现吗?

字库不要用那么大的,切割一下只打包用到的字体

  loadFont() {
    cc.loader.loadRes("/fonts/font.ttf", cc.Font, (err, res) => {
      if (err) {
        cc.log(`load font failed`);

        return;
      }

      cc.log("load font success");
      this.setFont(res);
    });
  }

  setFont(font: cc.Font) {
    const root = cc.find("Canvas");
    if (root) {
      if (font instanceof cc.Font) {
        const labels = root.getComponentsInChildren(cc.Label);
        labels.forEach(label => (label.font = font));
      }
    }
  }

对已加载的节点动态修改字体
还没想好对动态加载上去的节点如何修改, 如果没有hack方法的话准备改改源码了

https://www.fontke.com/tool/subfont/
字体子集生成器