我正在制作一款游戏,在教程中看到有些人使用Stage类,而其他人则使用Screen类,但我无法弄清楚它们之间的区别。
我正在制作一款游戏,在教程中看到有些人使用Stage类,而其他人则使用Screen类,但我无法弄清楚它们之间的区别。
一个Stage
持有Actor
实例并更新/动画它们,同时管理它们之间的碰撞检测。它是scene2d "场景图" API的根。 Stage是管理要绘制的对象列表、它们在屏幕上的状态(纹理、动画状态、大小等)以及它们与用户的交互的一种方式。Libgdx提供的Stage代码主要面向按钮和列表等UI元素,但其核心足够灵活,可以包含游戏元素。
一个Screen
通常代表着一个全屏的UI“页面”。例如,你可能有一个“主菜单”屏幕,一个“选项”屏幕,一个“主游戏”屏幕和一个“结束信用”屏幕。这些Screen
实例通常由一个Game
实例管理。当与Game
一起使用时,Screen
对象将作为回调接收标准的Libgdx生命周期事件(如pause
、resume
、resize
、render
等)。
Stage
和Screen
之间的具体关系。但最简单的想法是,将“主菜单”屏幕实现为一个Stage
,管理主菜单中的按钮。当用户点击其中一个按钮时,游戏可能会切换到主游戏屏幕,并释放一些由主菜单持有的资源。游戏屏幕可以使用Stage
或原始OpenGL来实现游戏。