就像电影、电视节目和戏剧通过场景组织讲述故事一样,应用程序也同样如此。在本章中,您将学习 Solar2D 中的场景管理基础知识。
场景是应用程序的一个独立视图或“页面”,玩家所看到的所有内容都包含在该场景中。当应用程序启动时,通常会显示一个标题/介绍场景。从那里,您可能可以导航到设置场景或开始教程。根据设计目标,游戏中每个级别也可能是专用场景。
这个游戏将有三个核心场景
Solar2D 使用称为Composer的系统来处理从一个场景移动到另一个场景。为了简化开发,每个 Composer 场景都是一个独立的 Lua 文件——这有助于保持游戏的井然有序。
在本章中,我们将更改您之前的代码,这将在 Simulator 中暂时创建错误。现在,您可以忽略这些错误或退出 Simulator,直到您准备好查看结果。
让我们修改现有项目以使用 Composer
在您的项目文件夹中,制作main.lua
文件的副本并将其重命名为main_original.lua
。我们在下一章需要这个原始代码,因此重要的是保留一份供参考。
使用您选择的文本编辑器,打开main.lua
文件(不是副本)。在此文件中,擦除所有以前的代码——请记住,您仍然可以使用副本稍后处理。
在其中添加以下命令
local composer = require( "composer" ) -- Hide status bar display.setStatusBar( display.HiddenStatusBar ) -- Seed the random number generator math.randomseed( os.time() ) -- Go to the menu screen composer.gotoScene( "menu" )
让我们更详细地检查这些命令
第一行,local composer = require( "composer" )
composer
的局部变量,require()
命令告诉 Solar2D 将有关 Composer 场景管理库的所有信息加载到应用程序中。
下一条命令隐藏设备顶部的状态栏。尽管您在上一章的代码中包括了这一行,但在任何main.lua
中隐藏状态栏是合乎逻辑的,这样它永远不会出现在任何场景中。
接下来,我们设置main.lua
中调用 math.randomseed(),这样每次运行应用程序时都会重置种子。
再添加最后一条命令,我们就完成了main.lua
。
composer.gotoScene( "menu" )
composer.gotoScene()
命令来告诉 Solar2D 加载一个不同的场景。正如前面提到的,我们的每个场景都包含在它们自己的 Lua 文件中:menu.lua
、game.lua
和 highscores.lua
。
对于该命令,您不需要在引号中包含 .lua
,因为 Solar2D 本来就期望文件具有 .lua
扩展名。因此,您可以简单地使用 "menu"
来转到包含在 menu.lua
中的场景。
composer.gotoScene( "menu" )
这就是 main.lua
的全部内容 — 记得保存您的更改!不同于之前的项目,这个 main.lua
文件非常短,因为我们只使用它来初始化 Composer、隐藏状态栏、设置随机数生成器和移动到动作开始的菜单场景。
在本教程中,我们仅引入了更多概念,两者都与 Composer 相关
命令/属性 | 说明 |
---|---|
composer.newScene() | 创建一个新的场景对象,该对象可与 Composer 库一起使用。 |
composer.gotoScene() | 过渡到特定的 Composer 场景。 |