栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

libGDX游戏开发之字体样式(五)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

libGDX游戏开发之字体样式(五)

libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm…国内用libgdx比较少,多数情况需要去官网和google找资料,相互学习的可以加我联系方式。

libgdx默认的字体样式只支持英文字母和数字和一些符号,若想显示在渲染中使用中文字母可以根据官网教程使用hiero制作。
hiero下载地址:https://alywp.net/5DmQ6r(2021年10月11日最新版,我从外网下载的)

依赖
// 桌面应用
api "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"

// 核心
api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
一、制作字体

运行起来也是比较简单:

java -jar runnable-hiero-2021-10-11.jar


导出保存

将myfont.fnt、myfont.png放到资源文件中,使用代码如下:

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.utils.ScreenUtils;

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Stage stage;

    @Override
    public void create() {
        stage = new Stage();
        batch = new SpriteBatch();

        // BitmapFont bitmapFont = new BitmapFont(Gdx.files.internal("myfont.fnt"),
        //        Gdx.files.internal("myfont.png"), false);
        BitmapFont bitmapFont = new BitmapFont(Gdx.files.internal("myfont.fnt"));
        Label.LabelStyle font = new Label.LabelStyle(bitmapFont, Color.WHITE);
        Label label = new Label("凌康123水电费了看", font);
        label.setPosition(20, 200);
        stage.addActor(label);
    }

    @Override
    public void render() {
        ScreenUtils.clear(1, 0, 0, 1);
        stage.draw();
    }

    @Override
    public void dispose() {
        batch.dispose();
    }
}

效果,不难发现,字体中未包含了是不会显示出来的,可以参考这篇文章获取GB2312的所有中文:https://blog.csdn.net/weixin_44480167/article/details/120605651

二、使用window自带字体
		FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.local("C:\Windows\Fonts\simsun.ttc"));// 宋体
        FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
        parameter.size = 32;
        parameter.characters = "凌康123水电费了看奥斯陆家发生";
        BitmapFont bitmapFont = generator.generateFont(parameter);

        Label.LabelStyle font = new Label.LabelStyle(bitmapFont, Color.WHITE);

        Label label = new Label("凌康123水电费了看-characters没有的内容是不会显示的", font);
        label.setPosition(20, 200);
        stage.addActor(label);
        // 注意内存溢出
        generator.dispose();

效果,不能发现,生成参数的字符串内没有的内容是不能显示的:

window自带的字体库丰富!但是也有缺点,每次都生成要注意内存溢出,适合固定字体的场景。

打赏

创作不易,觉得内容不错就赏作者一杯咖啡吧!(恰饭)

后续我会出更多libgdx文章:寻路、寻路算法、打怪,以RPG的视角。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号