![](https://img-blog.csdnimg.cn/2021031916103560.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LibGDX(Java)
文章平均质量分 92
基于 Java 语言的 LibGDX 跨平台(Android, iOS, Windows, Max OS X, Linux 和 HTML5/WebGL)游戏开发框架的基础开发,从环境搭建,到基础 API 的使用,最后再到 2048 和 Flappy Bird 等游戏的项目实战。
谢TS
持续写了十几年代码,未来也将继续不停写代码的老程序员,后端工程师。
展开
-
LibGDX 跨平台游戏开发基础教程(总目录)
本套教程讲解了 LibGDX 的基础开发,从环境搭建,到基础 API 的使用,最后再到 2048 和 Flappy Bird 两个游戏的项目实战。断断续续经过了半年多的本地整理,现在一次性发布,希望能与更多喜欢 LibGDX 的朋友学习交流。原创 2015-12-09 17:16:01 · 46261 阅读 · 19 评论 -
LibGDX_8.2: LibGDX 项目实战: 开发跨平台 Flappy Bird(像素鸟)游戏
《Flappy Bird》,中文名称《像素鸟》,是一款简单而富有挑战性的益智休闲游戏。玩家只需要用一个手指点击屏幕即可操作,手指点击一下屏幕,小鸟就会往上飞一点,受到重力作用,又会不停往下掉,所以玩家要控制小鸟一直向前飞行,并注意躲避途中高低不平的水管,每飞过一对水管,就增加得分。飞行过程中如果撞到水管或掉落在地板上则游戏结束。原创 2015-12-07 00:28:47 · 8188 阅读 · 5 评论 -
LibGDX_8.1: LibGDX 项目实战: 开发跨平台 2048 游戏
2048 是一款非常热门的数字益智类游戏,操作规则很简单,在屏幕中有四行四列共 16 个卡片,初始时随机在其中两个卡片生成两个数字 2 或 4,然后手指可在卡片组区域 上下左右滑动 将所有卡片移动到 上侧 / 下侧 / 左侧 / 右侧。如果在移动的方向上有数字相同并连着的两个卡片发生“碰撞”,则这两个卡片的数字相加合并成一个卡片,每移动完一次随机在一个空白卡片处生成一个数字 2 或 4。通过不断移动卡片,直到拼凑出数原创 2015-12-07 00:26:27 · 8292 阅读 · 10 评论 -
LibGDX_7.6: 使用 Gradle 命令运行和打包项目
使用 Eclipse 等 IDE 工具也可以很方便的实现项目的运行和打包,但步骤比较繁琐,这里只简单介绍一下使用 Gradle 命令来运行和打包项目。 1. 使用 gdx-setup.jar 工具创建 Gradle 项目 项目的创建步骤参考: LibGDX_1.5: 使用 Gradle 创建 LibGDX 所有平台的关联项目 2. 运行项目 Gradle 可以让你很容易地通过命令行运行项目。你只需要使用 gr原创 2015-12-07 00:25:00 · 5364 阅读 · 0 评论 -
LibGDX_7.5: 网络资源的访问(Net)
1. 概述 LibGDX 提供了一些跨平台的网络操作相关的类,这些类均通过 LibGDX 的网络模块(Net / Gdx.net)来操作。 2. Gdx.net com.badlogic.gdx.Net 是一个接口,不同平台有着不同的实现,运行时实例为 Gdx.net。Net 接口提供了跨平台执行网络操作的方法,比如简单的 HTTP get 和 post 请求,TCP 服务端/客户端 socket 通信。 创原创 2015-12-07 00:23:29 · 3341 阅读 · 0 评论 -
LibGDX_7.4: 碰撞检测 与 矩形包围区域(Rectangle)
1. Rectangle 概述 Rectangle 类表示一个 2D 矩形,封装了 2D 矩形的 左下角坐标 和 宽高。通常用 Rectangle 来表示 Texture/Sprite/Actor 在舞台中的包围区域,并用 Rectangle 中的方法进行方便的碰撞检测。 2. 碰撞检测 在游戏中的碰撞非常常见,例如 主角与地板的碰撞、主角与障碍物的碰撞、主角与怪物的碰撞、子弹与怪物的碰撞等。在游戏中需要对这些原创 2015-12-07 00:22:48 · 6884 阅读 · 0 评论 -
LibGDX_7.3: 资源管理器(AssetManager)
1. 资源管理器(AssetManager)概述 资源管理器(AssetManager)主要负责统一加载和管理 纹理(Texture)、纹理图集(TextureAtlas)、位图字体(BitmapFont)、音乐(Music)、音效(Sound) 等 assets 文件夹中的资源。 2. 为什么要使用 AssetManager 如果你的游戏非常简单,加载资源不需要很多时间,那么你可以选择不使用 AssetMan原创 2015-12-07 00:22:07 · 4988 阅读 · 0 评论 -
LibGDX_7.2: 音频(Audio): 音乐(Music) 与 音效(Sound)
一款优秀的游戏,音频/声音必不可少。LibdGDX 中的游戏音频可分为 音乐(Music) 和 音效(Sound)。LibGDX 支持的音频格式有 mp3、ogg、wav 等,推荐使用 ogg 格式。 (1)Music 一个 Music 实例代表一个音频文件流,Music 并没有把整个音频流都读取到内存中,适合用来表示长时间的音乐(例如背景音乐),Music 支持暂停、恢复、循环播放等操作。当不需要使用到这个 M原创 2015-12-07 00:21:23 · 5072 阅读 · 0 评论 -
LibGDX_7.1: 内存管理
游戏是非常消耗资源的应用,图片和声音会占用相当大的内存。这些资源不是由 Java 垃圾回收机制所管理,而是由本地设备来管理。让垃圾回收器来决定何时从显存中释放5MB纹理并不是一种非常好的做法。 我们希望能够细粒度控制这些资源的生命周期。在 LibGDX 中有多个类是表示这样的资源的,它们都统一实现了共同的接口 Disposable 来表明这些类在资源的生命周期结束时需要被手动处理(调用接口实现的方法 dispose翻译 2015-12-07 00:19:54 · 3670 阅读 · 0 评论 -
LibGDX_6.5: 常用系统控件: 文本框(TextField)
文本框(TextField) 文本框主要用于提供给用户输入文字,获取用户输出,例如在登录时让用户输入用户名和密码等。文本框一般由背景图片(文本框的边框)和 光标(也用图片来表示)组成。为了方便演示,这里不再引入外部的图片和字体文件,而是使用 Pixmap 自己在内存中创建图片生成纹理,并且直接使用 gdx.jar 包中的字体文件(字体较小,可能会显示不清晰)。原创 2015-12-07 00:18:44 · 4540 阅读 · 0 评论 -
LibGDX_6.4: 常用系统控件: 复选框(CheckBox)
复选框(CheckBox)复选框在许多软件中都随处可见,通常复选框至少由两张表示选中/未选中状态的图片和一个文本描述组成。这里需要使用的下面两张图片:这两张图片分别代表复选框的 选中 和 未选中 状态,把这原创 2015-12-07 00:17:53 · 2723 阅读 · 2 评论 -
LibGDX_6.3: 常用系统控件: 按钮(Button)
按钮(Button) 按钮是游戏开发中常用的控件,一个按钮一般可分为两种状态,按下状态和弹起状态,可以使用两张图片分别来表示。按钮还通常与事件监听一起使用,用于触发某一事件(开始游戏,暂停游戏,发射子弹等)。原创 2015-12-07 00:17:06 · 7742 阅读 · 1 评论 -
LibGDX_6.2: 常用系统控件: 标签(Label)
1. 标签(Label) 标签控件主要用于输出文本信息,在舞台中展示一下文本内容,例如玩家分数,主角血值,关卡说明等。 由于标签是用来展示文字的,所以使用标签首先要有位图字体(BitmapFont)来 提供字符显示 ,这里使用前面章节创建好的位图文件(bitmapfont.png 和 bitmapfont.fnt),把这两个文件复制到 assets 资源文件夹中,这里我在 assets 中单独创建一个文件夹 fo原创 2015-12-07 00:16:15 · 5319 阅读 · 0 评论 -
LibGDX_6.1: 常用系统控件: 图片(Image)
在游戏开发中除了游戏主界面外,还有许多其他与用户交互的界面,例如设置界面,关卡选择界面,购买道具的界面等。这些界面和开发 APP 一样,需要使用到许多封装好的控件来交互,如果全都使用纹理或自定义演员来构建会变的非常麻烦。为了方便搭建交互界面和与用户之间的交互,LibGDX 封装了许多常用的系统控件,这些控件定义在 com.badlogic.gdx.scenes.scene2d.ui 包中,所有系统控件都直接或间接继承原创 2015-12-07 00:14:51 · 4740 阅读 · 3 评论 -
LibGDX_5.2: 图片合成工具(Texturepacker 工具 与 TextureAtlas 类)
在游戏开发中通常需要读取许多图片加载为纹理,每创建一个图片纹理对象都要经过读取图片并解码图片的过程,如果频繁创建纹理会消耗性能降低效率。为了优化这个问题,可以将多张图片合成一张大图,在游戏启动时只读取一次合成的这一张大图加载为一个纹理图集(TextureAtlas),当需要使用到其中具体的某个小图时再通过纹理图集查找出小图对应的纹理区域。使用这样的纹理图集,不但能提高效率、加快速度,还能减少内存的消耗。原创 2015-12-07 00:11:58 · 7146 阅读 · 0 评论 -
LibGDX_5.1: 位图文字工具(Hiero 工具 与 BitmapFont 类)
跨平台游戏开发和 Native APP 开发不同,为了实现良好的跨平台,可能不会直接使用系统字库显示文本。在 LibGDX 中使用位图字体(BitmapFont)的方式渲染文本。BitmapFont 字体使用一张静态图片来提供文本字符的显示(以一张小图表示一个字符,本质上其实是绘制图片)。原创 2015-12-07 00:10:52 · 6714 阅读 · 1 评论 -
LibGDX_4.9: 动画(Animation)
这里所说的动画是 2D 动画(com.badlogic.gdx.graphics.g2d.Animation),2D 动画由多个静态图片组成,将静态图片一张一张播放便成了动画。一个 Animation 对象存储了一个纹理区域(静态图片)列表代表动画序列。一个 Animation 对象中的每一个纹理区域被称为一个关键帧,多个关键帧组成了动画。原创 2015-12-07 00:09:57 · 5926 阅读 · 1 评论 -
LibGDX_4.8: 动作(Action)
动作(Action)是附加在演员身上的在指定时间内随着时间推移而被执行的一些任务逻辑。前面章节介绍的演员都是静态不会动的,给演员附加上动作可以让演员自己“动”起来,相当于 Android 中给 View 添加的动画(Animation)。原创 2015-12-07 00:07:56 · 7920 阅读 · 6 评论 -
LibGDX_4.7: 场景(Screen)
场景(Screen)是游戏框架中舞台(Stage)的父节点,一个场景可以理解为一个游戏界面,类似 Android 中的 Activity,一个游戏由多个场景(界面)组成,通常包括开始界面、游戏/关卡界面、帮助界面等。一个场景中可以包含一个或多个舞台。原创 2015-12-07 00:07:23 · 8295 阅读 · 1 评论 -
LibGDX_4.6: 多分辨率屏幕适配: 视口(Viewport)
手机屏幕多种多样,有着分辨率不同,屏幕宽高比也可能不同。同一张图片在不同手机中显示的位置和大小视觉上的感觉可能都不相同,为此我们需要对不同的手机屏幕进行适配,使相同的程序逻辑在不同的屏幕上显示的视觉效果一致。LibGDX 提供了一个方便的方法处理不同屏幕之间的适配问题,即使用视口(Viewport)。原创 2015-12-07 00:06:34 · 7175 阅读 · 0 评论 -
LibGDX_4.5: 演员组(Group)
演员组类(Group)表示的是一组演员,可以包含多个不同层次演员,将多个演员添加到组中作为演员的父节点对多个演员统一管理。Group 类继承自 Actor,本质上也是一样演员,Group 是对于 Actor 的增强封装。实际上 Group 中维护了一个数组用于存放添加到组中的演员,在绘制时根据数组中的顺序依次绘制演员。原创 2015-12-07 00:05:44 · 5543 阅读 · 0 评论 -
LibGDX_4.4: 演员 与 舞台 的 事件处理
舞台(Stage)是众多演员(Actor)“表演”的地方,可以看做是一个包含不同层次演员的 2D 场景,能够处理视口(整体缩放显示 / 屏幕适配)和 接收输入事件(触屏,鼠标点击,按键按下等)自己处理以及将事件分发给演员。原创 2015-12-06 02:18:59 · 7611 阅读 · 2 评论 -
LibGDX_4.3: 舞台(Stage)
舞台(Stage)是众多演员(Actor)“表演”的地方,可以看做是一个包含不同层次演员的 2D 场景,能够处理视口(整体缩放显示 / 屏幕适配)和 接收输入事件(触屏,鼠标点击,按键按下等)自己处理以及将事件分发给演员。原创 2015-12-06 02:18:15 · 7375 阅读 · 0 评论 -
LibGDX_4.2: 演员(Actor)
演员(Actor)是 2D 场景中的基本图节点(元素)。一个演员实例拥有位置(position),矩形尺寸(rectangular size),缩放和旋转的支点(origin),缩放比(scale),旋转角度(rotation),在舞台中的绘制顺序(origin),颜色 / 透明度(color)等属性。其中的位置(position)属性表示的是在没有旋转也没有缩放时的左下角(旋转和缩放不改变位置属性和尺寸属性本身原创 2015-12-06 02:17:37 · 8786 阅读 · 0 评论 -
LibGDX_4.1: LibGDX 游戏开发框架
1. 游戏中的 MVC个人觉得游戏开发可以看做是标准的 MVC 设计模式:M(Model,数据模型): 封装游戏中的各种数据。例如 游戏背景图片; 游戏人物的位置,角度,血值,得分等所有表述游戏组成的数据。C(Cont原创 2015-12-06 02:16:51 · 6239 阅读 · 4 评论 -
LibGDX_3.5: 精灵(Sprite)
Sprite(精灵)继承自 TextureRegion(纹理区域),本质上可以看作是一个 TextureRegion,但它比 TextureRegion 要强大的多,封装得更完善,除了表示一张图片外,还附加拥有许多属性,例如 在屏幕中的位置/坐标(绘制起点),缩放比,旋转角度,透明度/颜色 等。Sprite 更加具体地描述了游戏中的一个元素(游戏人物,道具,背景图片等),可以看做是一张图片加上绘制这张图片时附加的各种原创 2015-12-06 02:16:05 · 5973 阅读 · 1 评论 -
LibGDX_3.4: 纹理区域(TextureRegion)
TextureRegion(纹理区域) 表示 Texture(纹理)的一部分矩形区域(当然也可以表示整个 Texture 区域),可以用来绘制纹理中的一部分显示在屏幕上。TextureRegion 可以通过记录 Texture 中的一个 坐标起点 和 从这个起点开始截取的宽高 来表示 Texture 的一部分。原创 2015-12-06 02:15:19 · 6391 阅读 · 0 评论 -
LibGDX_3.3: 内存中的图片(Pixmap)
一个 Pixmap 代表内存中的一张图片,它支持加载现有的图片,有以像素为单位表示的宽高,并且每一个像素点有指定的颜色值。Pixmap 支持点、线、圆、矩形、三角形,以及将另一 Pixmap 绘制到当前 Pixmap 等基本图形图像的绘制操作,最后 Pixmap 需要加载为 Texture (纹理)才能绘制到屏幕上。Pixmap 的数据存储在本地堆内存中,一个 Pixmap 对象不再需要使用到时需要调用其 dispo原创 2015-12-06 02:14:37 · 6610 阅读 · 2 评论 -
LibGDX_3.2: 纹理画布(SpriteBatch)
SpriteBatch 类,英文直译则为“精灵批处理”,它主要用于将纹理绘制到屏幕上,类似于 Android 和 HTML5 中的 Canvas (画布),因此这里我姑且把它称为“纹理画布”。SpriteBatch 将对所有绘制的纹理进行批处理并经过优化后发送到 GPU。SpriteBatch 绘制的坐标原点为屏幕左下角,X 轴正方向水平向左,Y 轴正方向水平向上,如下图所示。原创 2015-12-06 02:14:02 · 5540 阅读 · 0 评论 -
LibGDX_3.1: 纹理(Texture)
纹理类(Texture)负责解码一个图片文件并加载到 GPU 内存,可以看做代表的是一张图片,图片文件通常是放在 assets 资源文件夹中,一个图片文件被加载为 Texture 实例后,如果不再需要使用到这个 texture,需要手动调用释放资源的方法 texture.dispose() 进行资源释放。原创 2015-12-06 02:13:01 · 7184 阅读 · 2 评论 -
LibGDX_2.4: 文件的操作(FileHandle)
LibGDX 应用运行在不同的平台: Desktop 系统(Windows,Linux,MAC OS X),Android, iOS 和 支持 JavaScript/WebGL 的浏览器,每一个平台对文件的读写操作都完全不同。LibGDX 的 Files 模块(Gdx.files)提供了统一的抽象的接口对不同平台的文件进行统一的读写操作。原创 2015-12-06 02:12:15 · 7222 阅读 · 1 评论 -
LibGDX_2.3: 游戏的生命周期(ApplicationListener)
一个 LibGDX 应用有意义明确的生命周期方法,用于调节应用的各种状态。LibGDX 应用的生命周期事件方法定义在 ApplicationListener 接口中,开发人员通过在实现该接口类中处理生命周期事件方法的调用。ApplicationListener 接口的实现类,可以理解为一个游戏的实例,游戏最高级别的控制器,也是游戏主程序开始执行的入口类,在平台启动器中实例化实现该接口的实现类启动游戏。原创 2015-12-06 02:10:54 · 5913 阅读 · 5 评论 -
LibGDX_2.2: 日志(Log)的输出
本文地址: http://blog.csdn.net/xietansheng/article/details/50186699LibGDX 基础教程(总目录)Application 接口(com.badlogic.gdx 包中)提供了简单的日志(log)工具,并给予了日志输出粒度的控制。LibGDX 提供了 3 个日志输出级别,分别是 info,debug 和 error,日志的输出还原创 2015-12-06 02:10:05 · 4488 阅读 · 1 评论 -
LibGDX_2.1: LibGDX 应用框架(6 大系统交互接口)
作为核心,LibGDX 统一提供了 6 个接口与操作系统进行交互,不同平台的后端对这些接口分别进行了实现。这些基础接口定义在 gdx.jar 的 com.badlogic.gdx 包中,如下:Application: 代表一个游戏应用的实例,通常在平台的启动器中被实例化并启动API客户端(core 子项目可以看做是 API 客户端)。该接口实例会将应用程序层面的事件通知API客户端,比如窗口大小的改变。原创 2015-12-06 02:08:37 · 5971 阅读 · 3 评论 -
LibGDX_1.6: 纹理(图片)的绘制 与 assets 资源文件夹: UI 初体验
纹理(Texture): 这个名词有点专业,在 LibGDX 中可以理解为就是一张图片,可以用来表示游戏中的背景,人物,障碍物等可见的游戏元素。原创 2015-12-06 02:07:35 · 7170 阅读 · 6 评论 -
LibGDX_1.5: 使用 Gradle 创建 LibGDX 所有平台的关联项目
Gradle 是面向 Java 应用为主的自动化构建工具。它支持多方式依赖管理,用 Gradle 构建统一的 LibGDX 多平台工程非常便于开发和代码以及资源文件的统一管理,并且还能随时在不同平台中部署和调试。原创 2015-12-06 02:05:53 · 6254 阅读 · 0 评论 -
LibGDX_1.4: Android 环境搭建:Eclipse+ADT 或 Android Studio
本文链接: http://blog.csdn.net/xietansheng/article/details/50186313LibGDX 基础教程(总目录)1. 前提已安装好 Android 开发环境,包括如下:已安装 JDK7 或更高版本;已安装 Android SDK;已安装 Eclipse + ADT 或者 Android Studio;在这里建议 Eclipse, ADT 和 An原创 2015-12-06 02:04:35 · 6260 阅读 · 2 评论 -
LibGDX_1.3: Desktop 环境搭建:创建 Eclipse User Library,一劳永逸
使用 Eclipse 开发 Java 项目,如果某些 jar 包需要在许多项目中都要使用到,可以在 Eclipse 中创建一个 **User Library**,把 jar 包添加到这个库中,然后在需要使用到这些 jar 包的项目中添加依赖这个 **User Library** 即可,而不用每创建一个项目都重新拷贝一份 jar 包。原创 2015-12-06 02:03:00 · 4532 阅读 · 1 评论 -
LibGDX_1.2: Desktop环境搭建: 包括 Windows,MAC OS X,Linux
本文地址: http://blog.csdn.net/xietansheng/article/details/50186001LibGDX基础教程(总目录)1. 前提安装 JDK(JDK7 及以上)并配置环境变量安装 Eclipse对于 Java 程序员来说这些都是家常便饭,不用多介绍。2. 下载 LibGDX 开发包下载地址:https://libgdx.bad原创 2015-12-06 02:01:43 · 8032 阅读 · 4 评论 -
LibGDX_1.1: LibGDX 跨平台游戏开发框架简介
LibGDX 是非常优秀的一款跨平台的 2D / 3D 游戏开发框架,开发使用 Java 语言,可开发PC桌面游戏,手机游戏,网页游戏。支持 Windows、Linux、MAC OS X、Android、iOS、HTML5 等平台。基于 Apache License, Version 2.0 协议,代码托管在 Github 上,对商业使用和非商业使用均 **免费**。原创 2015-12-06 01:58:40 · 8989 阅读 · 0 评论