LibGdx

·  阅读 2329

LibGdx分享

跨平台平台的游戏开发探究
复制代码

1.libgdx是什么

libgdx是一款跨平台可视化的游戏开发框架,它当前支持Windows,Linux,MacOs,Android,Blackberry,IOS和html5等.
复制代码

libgdx可以用java,Kotlin,Scala,Clojure等语言开发. libgdx提供的强大的api可以让人直接操纵相应平台的文件设备,输入设备,音频设备.可以对OpenGl 2.0或OpenGl3.0提供直接的支持.

libGdx工程创建

  1. libGdx工程创建
  2. 在文件下载目录打开命令行并执行2.在文件下载目录打开命令行并执行java -jar ./gdx-setup.jar
  3. 设置name,包名,游戏主入口类名,目标路径.和AndroidSdk目录
  4. Sub Project 选项中选择所属平台支持,如果想要生成指定跨平台的代码,则可以选择相应平台,默认提供除ios-moe之外的所有平台.
  5. 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

  1. 在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
复制代码
分类:
Android
标签:
分类:
Android
标签:
收藏成功!
已添加到「」, 点击更改