【问题标题】:libGDX: Fade in and out between two Screens without Scene2DlibGDX:在没有 Scene2D 的两个屏幕之间淡入和淡出
【发布时间】:2017-09-11 19:38:23
【问题描述】:

又是我 :)

我目前正在尝试完成我的 libGDX 游戏。但是,我一直被两个屏幕的过渡所困扰,所以我想要那个,例如当我开始游戏时淡出菜单屏幕并淡入游戏屏幕。我不使用 Scene2D,也不太了解舞台和演员。如果有人可以帮助我解决问题,我将非常高兴。

提前致谢! :)

【问题讨论】:

  • 你在画什么游戏?像素图?你只是在使用纹理吗?
  • 这不就是让屏幕变黑,移动到绘制另一个屏幕的代码,然后将屏幕淡入那么简单吗?

标签: layout libgdx fadein transitions


【解决方案1】:

不用担心,您无需使用Scene2D 即可实现您的目标。无论如何,构建积木系统还有一些工作要做,但最终还是值得的。

概念

概念是让游戏屏幕管理器来管理您将在游戏中操作的游戏屏幕。就是这么说的。当您从一个屏幕切换到另一个屏幕时,您需要这样的游戏屏幕管理器来控制哪个游戏屏幕可以draw,哪个可以update

通常你会有这样的经理来管理你的游戏画面。但是我们可以进一步利用它来实现屏幕过渡效果。

当过渡效果开始时,这种控制能力将发挥重要作用。 对于淡入/淡出效果,假设您将T 定义为从一个屏幕转换到另一个屏幕时完成的总时间,A 是起始屏幕,B 是目标屏幕,M游戏屏幕经理,后面的逻辑如下

  • 淡出A直到T/2的总时间过去,然后你开始淡入B。在此操作开始时,M 只允许Aupdate() 自己的游戏逻辑,但允许ABdraw() 到后台缓冲区屏幕。因此A 可以更新自己的逻辑代码,但两个屏幕都可以绘制。
  • T/2 的另一个持续时间已经过去(现在总共有T),那么您允许B 能够update()。这意味着游戏逻辑开始在 B 内部发生,A 将在我们不再需要时被释放。

如何在过渡期间同时为 AB 绘制内容

您可能会质疑我们如何以 alpha 方式绘制整个内容。我们应该搞乱自定义着色器编程吗?没必要。我们仍然使用SpriteBatch

这样做的方法是先正常绘制此类游戏屏幕的内容,然后我们绘制一个大小为 2x2 像素的黑色纹理(无需使其与屏幕分辨率一样大),顶部带有 alpha。

这样的 alpha 值将由我们在过渡效果中采用的机制动态计算。使用此技术,先从AB 绘制内容,然后在两个屏幕顶部绘制带有alpha 值的黑色纹理,以实现淡入/淡出过渡效果。

更多技术细节

按照以下步骤的指南来实现我在上面描述的内容。我不打算详述。但这些步骤可能会让您了解实施起来并不困难。

  • 实现游戏画面管理器来控制游戏状态,在游戏画面之间切换,首先没有任何过渡效果
  • 实现TransitionState 类。这个类至少接受两个参数,即开始游戏屏幕和目标游戏屏幕(其他是淡入淡出的持续时间、过渡效果类型等)来执行我上面在 Concept 中解释的逻辑如何绘制 ... 部分。简而言之,这个类将只是您的游戏的另一个游戏画面(或者说游戏状态),但是当您需要从一个游戏画面转换到另一个游戏画面时,它会同时管理两个游戏画面。您可以进一步扩展此想法以包含更多类型的过渡效果。所以TransitionState 类将成为您稍后的屏幕转换的构建块。您可以在 Youtube 上查看并跟随 ForeignGuyMike 的 OMO 教程。您可以从一开始就拥有与他相似的代码库,或者看看他在这个类上开始编码的确切episode starting at 31:08。他还有一个项目文件,其中包含在这一集中完成的代码,因此您可以了解他是如何实现的。
  • 当您需要从当前屏幕转换到另一个屏幕时,您可以创建TransitionState 的新实例,然后为它们提供起始和目标游戏屏幕。这是告诉游戏切换屏幕的方式。在幕后,需要时间淡出,然后进入,处理旧游戏画面(淡出),然后完全切换到目标游戏画面。正常继续。

就是这样。请不要被我在这里输入的冗长文本吓到,好像你已经掌握了核心概念,你可以继续自己实现,但你需要了解 libgdx 的基本构建块才能使用它。

祝您实施顺利。

【讨论】:

  • 哇,感谢您长时间的回答 xD。成功了,非常感谢!!
  • @Eron 如果这是解决方案,您能否也接受我的回答?谢谢!
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2013-08-06
  • 1970-01-01
  • 2013-02-19
  • 2012-07-26
相关资源
最近更新 更多