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.fntmyfont.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的视角。

libGDX游戏开发之字体样式(七)的更多相关文章

  1. Libgdx游戏开发(2)——接水滴游戏实现

    原文:Libgdx游戏开发(2)--接水滴游戏实现 - Stars-One的杂货小窝 本文使用Kotlin语言开发 通过本文的学习可以初步了解以下基础知识的使用: Basic file access ...

  2. [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画

    前文章节列表:  使用libGDX进行游戏开发(11)-高级编程技巧   使用libGDX进行游戏开发(10)-音乐音效不求人,程序员也可以DIY   使用libGDX进行游戏开发(9)-场景过渡   ...

  3. [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计

    声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...

  4. [libgdx游戏开发教程]使用Libgdx进行游戏开发(7)-屏幕布局的最佳实践

    管理多个屏幕 我们的菜单屏有2个按钮,一个play一个option.option里就是一些开关的设置,比如音乐音效等.这些设置将会保存到Preferences中. 多屏幕切换是游戏的基本机制,Libg ...

  5. 精通libGDX游戏开发-RPG实战-开发游戏的基本前提

    说起RPG,大概国人是不会陌生的. 这不得不从中国单机游戏市场说起,由于早期软件市场被盗版杀死,顺带的,单机游戏软件作为软件市场的分支,也没赚什么钱,养不活公司纷纷倒闭,只到RPG游戏<仙剑奇侠 ...

  6. [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader

    高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...

  7. [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效

    本章音效文件都来自于公共许可: http://files.cnblogs.com/mignet/sounds.zip 在游戏中,播放背景音乐和音效是基本的功能. Libgdx提供了跨平台的声音播放功能 ...

  8. [libGDX游戏开发教程]使用Libgdx进行游戏开发(5)-关卡加载

    在上一章我们介绍了如何管理和利用素材,但是我们注意到,这些素材都是零散的,比如岩石的左部等,这一章,我们将利用这些零件拼合成完整的游戏对象. 回顾最开始的设计类图,注意Level类和所有Level中的 ...

  9. [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游戏框架搭建

    让我们抛开理论开始code吧. 入口类CanyonBunnyMain的代码: package com.packtpub.libgdx.canyonbunny; import com.badlogic. ...

  10. 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界

    欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...

随机推荐

  1. Python网络编程——基于tcp协议实现远程执行命令、udp协议没有粘包问题、解决粘包问题、socketserver模块的基本使用(基于tcp协议、基于udp协议的使用)

    文章目录 基于tcp协议实现远程执行命令 udp协议没有粘包问题 解决粘包问题 解决粘包问题(终极版) socketserver模块的基本使用 基于tcp协议的使用 基于udp协议的使用 基于tcp协 ...

  2. 今天的第二道tarjan:受欢迎的牛

    原题来自:USACO 2003 Fall 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢&quo ...

  3. Android下音视频对讲演示程序(声学回音消除、噪音抑制、语音活动检测、自动增益控制、自适应抖动缓冲)(2023年07月13日更新)

    Android下音视频对讲演示程序 必读说明 简介   本软件根据<道德经>为核心思想而设计,实现了两个设备之间进行音视频对讲,一般可用于楼宇对讲.智能门铃对讲.企业员工对讲.智能对讲机. ...

  4. P9482 [NOI2023] 字符串 题解

    \(36pts\) \(O(tqn^2)\)暴力即可 \(40pts\) 对于最朴素的暴力优化,从头到尾扫,如果已经当前位字符比出优先级,那么直接能判断了,没必要往后跑了,第15个性质B的也给跑过了, ...

  5. Ansible自动化部署工具-组件及语法介绍

    大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成.避免出错,Ansible就是这方面非常好用的工具 ...

  6. SNN_文献阅读_Effective and Efficient Computation with Multiple-timescaleSpiking Recurrent Neural Networks

    Adaptive SRNN 基于多时间尺度脉冲循环神经网络的高效计算(SRNN) 中心思想: 使用替代梯度进行训练,克服SNN中梯度不连续的问题. 在PyTorch中直接使用BPTT进行训练. 结构 ...

  7. windows 下终止nginx 进程 重新启动nginx

    进入cmd 输入一下命令 删除nginx所有进程 taskkill /f /t /im nginx.exe

  8. python 数据可视化:直方图、核密度估计图、箱线图、累积分布函数图

    本文使用数据来源自2023年数学建模国赛C题,以附件1.附件2数据为基础,通过excel的数据透视表等功能重新汇总了一份新的数据表,从中截取了一部分数据为例用于绘制图表.绘制的图表包括一维直方图.一维 ...

  9. 基于FFmpeg和Qt实现简易视频播放器

    VideoPlay001 记得一键三连哦 使用qt+ffmpeg开发简单的视频播放器,无声音 视频解码使用的是软解码即只用CPU进行QPainter绘制每一帧图像,CPU占用过高 简单易学,适合小白入 ...

  10. RabbitMQ高可用集群的搭建部署(Centos7)

    高可用集群架构 节点域名 操作系统 RabbitMQ版本 Erlang版本 iamdemo.tp-link.com Centos7.9 3.8.28 23.3-2 iamdemo2.tp-link.c ...