本文主要是介绍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游戏开发之画面场景和画面自适应(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!