libGDX游戏开发之画面场景和画面自适应(二)

2023-10-31 19:10

本文主要是介绍libGDX游戏开发之画面场景和画面自适应(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

libGDX游戏开发之画面场景切换(二)

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

游戏开发需要切换各种场景,例如开始画面、游戏画面、gameover画面。
libGDX的字体样式默认不支持中文,需要自己创建。
Hiero工具下载地址:https://hub.fastgit.org/libgdx/libgdx/wiki/Hiero

创建游戏

import com.badlogic.gdx.Game;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;/*** @author lingkang* @date 2021/10/4 15:34* @description 创建一个游戏 作为起点*/
public class MyGame extends Game {// 用于屏幕自适应的长宽public static final int VIEW_WIDTH = 624;public static final int VIEW_HEIGHT = 624;// 用于此game特有,方便game回收管理public SpriteBatch batch;public BitmapFont font;@Overridepublic void create() {//游戏创建的一些准备放这里...batch = new SpriteBatch();font = new BitmapFont();font.setColor(Color.RED);// 进入欢迎页面setScreen(new WelcomeScreen(this));}// 其他的一些方法@Overridepublic void dispose() {super.dispose();// 防止内存泄露batch.dispose();font.dispose();}
}

创建欢迎画面

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.utils.viewport.FitViewport;
import com.badlogic.gdx.utils.viewport.Viewport;/*** @author lingkang* @date 2021/10/4 15:35* @description 欢迎页面*/
public class WelcomeScreen implements Screen {// 将游戏对象传入private MyGame game;// 画面自适应private Viewport viewport;// 类似 javafx 的 Stage 我们绘制的画面在它上面private Stage stage;public WelcomeScreen(MyGame game) {this.game = game;viewport = new FitViewport(MyGame.VIEW_WIDTH, MyGame.VIEW_HEIGHT, new OrthographicCamera());// 下面我们用 Stage 固定方式绘制画面stage = new Stage(viewport, game.batch);// 字体样式 默认不支持中文,下面我就用英文了 https://hub.fastgit.org/libgdx/libgdx/wiki/HieroLabel.LabelStyle font = new Label.LabelStyle(new BitmapFont(), Color.WHITE);// 创建一个表格Table table = new Table();table.center();table.setFillParent(true);table.add(new Label("welcome", font)).expandX();table.row();table.add(new Label("Any click join game", font)).expandX().padTop(10f);stage.addActor(table);// 不同页面的帧率不同,有利于性能优化Gdx.graphics.setForegroundFPS(3);}@Overridepublic void show() {}@Overridepublic void render(float delta) {Gdx.gl.glClearColor(0, 0, 0, 1);Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);// 使用类似 javafx 的绘制方式stage.draw();if (Gdx.input.isTouched()) {game.setScreen(new GameScreen(game));dispose();}}// 其他实现方法
}

游戏战斗画面

/*** @author lingkang* @date 2021/10/4 17:20* @description*/
public class GameScreen implements Screen {// 将游戏对象传入 方便操作private MyGame game;public GameScreen(MyGame game) {this.game = game;// 不同页面的帧率不同,有利于性能优化,这是游戏战斗页面,帧率调高Gdx.graphics.setForegroundFPS(38);}@Overridepublic void show() {}@Overridepublic void render(float delta) {ScreenUtils.clear(225, 225, 225, 1);game.batch.begin();game.font.draw(game.batch, "Welcome to Game Screen!!! ", 100, 150);game.font.draw(game.batch, "Any click to game over", 100, 100);game.batch.end();if (Gdx.input.isTouched()) {game.setScreen(new GameOverScreen(game));dispose();}}// 其他实现方法
}

游戏结束画面

/*** @author lingkang* @date 2021/10/4 17:20* @description*/
public class GameOverScreen implements Screen {// 将游戏对象传入 方便操作private MyGame game;public GameOverScreen(MyGame game) {this.game = game;// 不同页面的帧率不同,有利于性能优化Gdx.graphics.setForegroundFPS(3);}@Overridepublic void show() {}@Overridepublic void render(float delta) {ScreenUtils.clear(225, 225, 225, 1);game.batch.begin();game.font.draw(game.batch, "Welcome to Game Over Screen!!! ", 100, 150);game.font.draw(game.batch, "Any click to Welcome Screen", 100, 100);game.batch.end();if (Gdx.input.isTouched()) {game.setScreen(new WelcomeScreen(game));dispose();}}
}

效果如下:
在这里插入图片描述
层级区分官网也有例子:
https://libgdx.com/dev/simple-game-extended/

这篇关于libGDX游戏开发之画面场景和画面自适应(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317491

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer