LibGdx分享
跨平台平台的游戏开发探究
复制代码
1.libgdx是什么
libgdx是一款跨平台可视化的游戏开发框架,它当前支持Windows,Linux,MacOs,Android,Blackberry,IOS和html5等.
复制代码
libgdx可以用java,Kotlin,Scala,Clojure等语言开发. libgdx提供的强大的api可以让人直接操纵相应平台的文件设备,输入设备,音频设备.可以对OpenGl 2.0或OpenGl3.0提供直接的支持.
libGdx工程创建
- libGdx工程创建
- 在文件下载目录打开命令行并执行2.在文件下载目录打开命令行并执行java -jar ./gdx-setup.jar
- 设置name,包名,游戏主入口类名,目标路径.和AndroidSdk目录
- Sub Project 选项中选择所属平台支持,如果想要生成指定跨平台的代码,则可以选择相应平台,默认提供除ios-moe之外的所有平台.
- Extension(扩展)相当于添加LibGdx游戏支持.你想添加除LibGdx之外的其他组件支持可勾选相应的选项.
libGdx组件功能能
1.Bullet 3D碰撞检测和刚体组件的动态Library
2.FreeType 可缩放的字体处理程序
3.Tools:一系列的工具集合,包含2D/3D粒子编辑器,位图字体,和图片打包处理程序等
4.Controller:游戏控制器,类似于xbox手柄提供的控制library
5.Box2d:一个2D物理引擎.....
libGdx工程创建2
1.勾选完相应的选项之后可以点击下一步则创建出了一个Gradle工程项目
2.我们可以用
Eclipse
Intellij IDEA and Android studio
NetBeans
Commandline
打开创建的项目
复制代码
游戏Module
-
在core中Gdx框架给我们提供了六个与操作系统交互的接口分别是
Application
File
Input
Net
Audio
Graphics
Gdx类中包含这六个模块
游戏的生命周期
1.Create 游戏创建时调用一次
2.Resize 在Create后会调用一次,以后在游戏非Pause状态时游戏屏幕改变时调用
3.Render 游戏循环启动时,每次渲染时执行.
4.Resume 只在安卓中使用 对应安卓的onResume
5.Pause 在安卓设备上按下Home键被调用,其他是在Dispose()退出应用前被调用用于保存游戏状态.
6.Dispose 游戏销毁时调用
7.安卓的生命周期
http://bitiotic.com/blog/2013/05/23/libgdx-and-android-application-lifecycle/
8.生命周期流转图片
复制代码
libGdx结构
libGdx结构,文字说明
场景(Screen):
一个场景可以理解为一个游戏界面,类似 Android 中的 Activity,一个游戏由多个场景(界面)组成,通常包括开始界面、游戏 / 关卡界面、帮助界面等。一个场景中可以包含一个或多个舞台。
舞台(Stage):
一个舞台可以理解为场景中的一个图层,类似 Android 中 FrameLayout / RelativeLayout,一个场景可以包括一个或多个舞台(图层),例如一个“游戏关卡舞台”和一个“结束游戏舞台”,正在游戏时隐藏“结束游戏舞台”,游戏结束时显示“结束游戏舞台”。
演员(Actor):
演员表示游戏中的最基本元素,类似 Android 中的 TextView / ImageView / Button,一个舞台中包含多个演员,例如 背景图片,游戏人物,怪物,地板,障碍物等。
复制代码
Screen
LibGDX API 中提供的 Screen 仅仅是一个接口,我们需要自定义场景类实现 Screen 接口,并结合 com.badlogic.gdx.Game 类进行使用,Game 是一个抽象类,直接继承自 Object,并实现了 ApplicationListener 接口(即属于游戏主程序的入口类),Game 可以看做是 Screen 的父节点或游戏框架的最顶层节点,可以将 Screen 添加到 Game 中,Game 负责管理 Screen 和其生命周期方法的调用。
* 当该场景被设置到 Game 中成为 Game 的当前场景时调用
public void show();
public void resize(int width, int height);
* 当该场景需要被渲染时调用
public void render(float delta);
public void pause();
public void resume();
* 当有另一个场景被设置为 Game 的当前场景时(即该场景被覆盖/移出当前场景)调用
public void hide();
* 当场景需要被释放所有资源时调用,
* 注意: 该方法不会自动被调用, 在需要释放场景的所有资源时手动进行调用
public void dispose();
复制代码
Stage
舞台(Stage)是众多演员(Actor)“表演”的地方,可以看做是一个包含不同层次演员的 2D 场景,能够处理视口(整体缩放显示 / 屏幕适配)和 接收输入事件(触屏,鼠标点击,按键按下等)自己处理以及将事件分发给演员。
舞台类中的部分方法:
float getWidth(): 获取舞台的宽度
float getHeight(): 获取舞台的高度
void act(float delta): 更新舞台逻辑,并批处理舞台中的演员(自动逐个调用演员的 act() 方法更新演员逻辑)
void draw(): 绘制舞台,并批处理舞台中的演员(自动逐个调用演员的 draw() 方法绘制演员)
void dispose() : 释放舞台中的所有资源
boolean addListener(EventListener listener): 添加事件监听到舞台
boolean removeListener(EventListener listener): 移除监听器
void addActor(Actor actor): 增加一个演员到舞台中
void clear(): 移除舞台中的所有演员
Array<Actor> getActors(): 获取舞台中的所有演员
Group getRoot(): 获取舞台中维护所有演员的演员组
Group: 演员组,它也继承了 Actor,也是一个演员,舞台中维护了一个 Group 对象,添加到舞台中的演员其实最终添加到了 Group 中,舞台类中有增加演员的方法,但没有移除单个演员的方法,如果需要移除某个演员,需要调用 stage.getRoot() 方法先获取到舞台的 Group 对象,然后调用 Group 对象的 group.removeActor(actor) 方法。
复制代码
Actor
演员(Actor)是 2D 场景中的基本图节点(元素)。一个演员实例拥有位置(position),矩形尺寸(rectangular size),缩放和旋转的支点(origin),缩放比(scale),旋转角度(rotation),在舞台中的绘制顺序(origin),颜色 / 透明度(color)等属性。其中的位置(position)属性表示的是在没有旋转也没有缩放时的左下角(旋转和缩放不改变位置属性和尺寸属性本身的值,只是在最终绘制到屏幕上时才在视觉上表现出来),演员的位置相对于父节点(舞台/演员组),即表示的是在其父节点中的位置(因为演员通常作为子节点添加到舞台/演员组中使用),(0, 0) 点表示在舞台的左下角。
复制代码
如何利用LibGdx开发一个游戏
生成LibGdx游戏主工程
LibGdx工程目录结构介绍
如何生成各个平台的游戏
LibGdx入口类
LibGdx Game主程序了解
复制代码
生成不同平台的客户端
Desktop 项目运行 gradlew desktop:run
Android 项目运行 gradlew android:installDebug android:run
iOS 项目运行
ios 的运行必须要在 MAC 系统上,并安装 XCode 工具。
gradlew ios:launchIPhoneSimulator
gradlew ios:launchIPadSimulator
gradlew ios:launchIOSDevice
第一个和第二个命令运行在 iPhone 和 iPad 模拟器上,第三个命令运行在真机上。
HTML 项目运行gradlew html:superDev
复制代码