栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解libgdx

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解libgdx

如果要将

javax.swing
游戏移植到libgdx,则必须知道如何制作游戏。您将逻辑和视图分开了吗?如果是,那么您只需重写视图即可。如果不是,那么,最好从头开始。首先要了解的知识:游戏的入口点是
ApplicationListener
接口。如果您不需要其中的所有方法,都可以使用extend
Game
,这会给您带来一些好处。所以我建议使用它。的
Game
ApplicationListener
现在为您提供了可能性,对一些应用程序的事件做出反应:

  1. create()
    :在您的应用启动时调用
  2. dispose()
    :在游戏关闭时调用(未崩溃:P)
  3. pause()
    :在android上调用,当按下“来电” /“归属”按钮时。在桌面上,当您最小化窗口时/游戏失去焦点时。
  4. resume()
    :在暂停状态后返回时调用。
  5. resize()
    :当您调整窗口大小并在android上,当屏幕旋转时调用(必须在清单文件中允许它)
  6. render()
    :称为每个游戏循环(如果启用),用于更新游戏中的对象,然后将其绘制到屏幕上。

类中的默认render()实现

Game
调用current的render
Screen

屏幕?那是什么?好吧,考虑一个正常的游戏。你启动它,它showes菜单,有一些按键喜欢

StartGame
Settings
…这是菜单画面。所以
Screen
s是游戏中具有不同逻辑和视图的部分,因此它们必须位于单独的类中。
Screen
实现
Screen
接口,它再次为您提供了一些有用的方法:

  1. show()
    :叫,当此项设定
    Screen
    Game
    小号
    Screen
    MyGdxGame.setScreen()
  2. hide()
    :在将另一个
    Screen
    设置为
    Game
    s 时调用
    Screen

因此,如果当前

Screen
MenuScreen
和我按下
PlayGame
按钮,
show()
PlayScreen
被调用,
hide()
对于
MenuScreen
被调用。该
Screen
也有方法
pause()
resume()
并且
resize()
,这是所谓的如果同样的方法
Game
被称为(总是只对当前屏幕)。如果实现
ApplicationListener
,则必须自己编写此默认行为。
请注意,
dispose()
对于
Screen
不会自动调用。

接下来是图纸。对于2D绘图,有:

  1. ShapeRenderer
    ,大多数时间仅用于调试。它可以渲染简单的形状,例如圆形,正方形…
  2. SpriteBatch
    ,用于呈现
    Texture
    小号
    Sprite
    小号…

因此,大多数情况下,您将使用渲染

SpriteBatch
。您在由以下内容制成的块中进行渲染:

  1. SpriteBatch.begin()
    ,启动SpriteBatch。在此呼叫之前设置他的viewPort,矩阵…
  2. SpriteBatch.draw()
    ,将您提供给它的东西作为参数(有很多不同的draw()方法,请参阅API)绘制到缓冲区,并在缓冲区
    flush()
    已满或被
    SpriteBatch.end()
    调用时立即将它们绘制到GPU 。
  3. SpriteBatch.end()
    flush()
    即GPU的缓冲区,因此所有内容均绘制在屏幕上。

笔记:

  1. 切勿一次拥有2个SpriteBatch
    begin
    。因此,在
    begin()
    end()
    另一个正在运行的SpriteBatch 进行SpriteBatch调用之前
  2. 如果可能,请仅使用1个SpriteBatch并尝试在
    end()
    每个渲染循环中仅调用一次,因为这样做会降低性能。
  3. 不要
    draw()
    在begin-end块之外调用。

最后但并非最不重要的是,此“教程”:The

camera
。它可以帮助您以自己的世界单位而不是像素来计算运动。您也可以通过移动它来显示游戏世界的不同部分。首先:在construcotr中设置cameraviewport:

camera = new OrthographicCamera(16, 9);

这会将视口设置为16宽度和9高度。因此,您的物理屏幕/显示器现在的宽度为16个单位,高度为9个单位。将此摄像机应用于您的SpriteBatch调用:

`SpriteBatch.setProjectionMatrix(cam.combined)`

通过这样做可以

SpriteBatch
渲染您的相机正在看的东西。摄像机按默认点0,0位于其中间。所以现在在中间画些东西使用:

batch.draw(yourTexture, 0, 0);

要在右上角绘制,请使用:

 batch.draw(yourTexture, 16 / 2, 9 / 2);

要移动相机,请使用:

cam.translate(16/2, 9/2);

cam.update()
更改位置后,请务必致电!

现在,相机的右上角为16,9,而不是16 / 2、9 / 2。0,0点是左下角。

我希望这从一开始就不会太复杂。一些教程,帮助我学习了:

  1. 星球大战
  2. Steigert的博客


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号