libGDX游戏开发之字体样式(七)
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的视角。
libGDX游戏开发之字体样式(七)的更多相关文章
- Libgdx游戏开发(2)——接水滴游戏实现
原文:Libgdx游戏开发(2)--接水滴游戏实现 - Stars-One的杂货小窝 本文使用Kotlin语言开发 通过本文的学习可以初步了解以下基础知识的使用: Basic file access ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
前文章节列表: 使用libGDX进行游戏开发(11)-高级编程技巧 使用libGDX进行游戏开发(10)-音乐音效不求人,程序员也可以DIY 使用libGDX进行游戏开发(9)-场景过渡 ...
- [libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
声明:<使用Libgdx进行游戏开发>是一个系列,文章的原文是<Learning Libgdx Game Development>,大家请周知.后续的文章连接在这里 使用Lib ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(7)-屏幕布局的最佳实践
管理多个屏幕 我们的菜单屏有2个按钮,一个play一个option.option里就是一些开关的设置,比如音乐音效等.这些设置将会保存到Preferences中. 多屏幕切换是游戏的基本机制,Libg ...
- 精通libGDX游戏开发-RPG实战-开发游戏的基本前提
说起RPG,大概国人是不会陌生的. 这不得不从中国单机游戏市场说起,由于早期软件市场被盗版杀死,顺带的,单机游戏软件作为软件市场的分支,也没赚什么钱,养不活公司纷纷倒闭,只到RPG游戏<仙剑奇侠 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效
本章音效文件都来自于公共许可: http://files.cnblogs.com/mignet/sounds.zip 在游戏中,播放背景音乐和音效是基本的功能. Libgdx提供了跨平台的声音播放功能 ...
- [libGDX游戏开发教程]使用Libgdx进行游戏开发(5)-关卡加载
在上一章我们介绍了如何管理和利用素材,但是我们注意到,这些素材都是零散的,比如岩石的左部等,这一章,我们将利用这些零件拼合成完整的游戏对象. 回顾最开始的设计类图,注意Level类和所有Level中的 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游戏框架搭建
让我们抛开理论开始code吧. 入口类CanyonBunnyMain的代码: package com.packtpub.libgdx.canyonbunny; import com.badlogic. ...
- 精通libGDX游戏开发-RPG实战-欢迎来到RPG的世界
欢迎来到RPG的世界 本章我会快速的使用tiled这样的瓷砖地图工具,来带领大家创造所设想的世界. 创建并编辑瓷砖地图 瓷砖地图(tile-based map)是广泛应用于各种游戏类型的地图格式,li ...
随机推荐
- Python网络编程——基于tcp协议实现远程执行命令、udp协议没有粘包问题、解决粘包问题、socketserver模块的基本使用(基于tcp协议、基于udp协议的使用)
文章目录 基于tcp协议实现远程执行命令 udp协议没有粘包问题 解决粘包问题 解决粘包问题(终极版) socketserver模块的基本使用 基于tcp协议的使用 基于udp协议的使用 基于tcp协 ...
- 今天的第二道tarjan:受欢迎的牛
原题来自:USACO 2003 Fall 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢&quo ...
- Android下音视频对讲演示程序(声学回音消除、噪音抑制、语音活动检测、自动增益控制、自适应抖动缓冲)(2023年07月13日更新)
Android下音视频对讲演示程序 必读说明 简介 本软件根据<道德经>为核心思想而设计,实现了两个设备之间进行音视频对讲,一般可用于楼宇对讲.智能门铃对讲.企业员工对讲.智能对讲机. ...
- P9482 [NOI2023] 字符串 题解
\(36pts\) \(O(tqn^2)\)暴力即可 \(40pts\) 对于最朴素的暴力优化,从头到尾扫,如果已经当前位字符比出优先级,那么直接能判断了,没必要往后跑了,第15个性质B的也给跑过了, ...
- Ansible自动化部署工具-组件及语法介绍
大家好,我是蓝胖子,我认为自动化运维要做的事情就是把运维过程中的某些步骤流程化,代码化,这样在以后执行类似的操作的时候就可以解放双手了,让程序自动完成.避免出错,Ansible就是这方面非常好用的工具 ...
- SNN_文献阅读_Effective and Efficient Computation with Multiple-timescaleSpiking Recurrent Neural Networks
Adaptive SRNN 基于多时间尺度脉冲循环神经网络的高效计算(SRNN) 中心思想: 使用替代梯度进行训练,克服SNN中梯度不连续的问题. 在PyTorch中直接使用BPTT进行训练. 结构 ...
- windows 下终止nginx 进程 重新启动nginx
进入cmd 输入一下命令 删除nginx所有进程 taskkill /f /t /im nginx.exe
- python 数据可视化:直方图、核密度估计图、箱线图、累积分布函数图
本文使用数据来源自2023年数学建模国赛C题,以附件1.附件2数据为基础,通过excel的数据透视表等功能重新汇总了一份新的数据表,从中截取了一部分数据为例用于绘制图表.绘制的图表包括一维直方图.一维 ...
- 基于FFmpeg和Qt实现简易视频播放器
VideoPlay001 记得一键三连哦 使用qt+ffmpeg开发简单的视频播放器,无声音 视频解码使用的是软解码即只用CPU进行QPainter绘制每一帧图像,CPU占用过高 简单易学,适合小白入 ...
- RabbitMQ高可用集群的搭建部署(Centos7)
高可用集群架构 节点域名 操作系统 RabbitMQ版本 Erlang版本 iamdemo.tp-link.com Centos7.9 3.8.28 23.3-2 iamdemo2.tp-link.c ...