Skip to content

play

开启游戏交互

play() 是生命周期管理中的最后一个关键指令。它将小游戏从后台运行状态(RUNNING)提升到前台交互状态(PLAYING)。

RUNNING 状态下,游戏逻辑虽然在运行,但为了安全和性能,引擎默认不分发触摸、传感器(重力感应)等用户输入。调用 play() 后,引擎将开启事件分发,玩家才能正式开始操作游戏。


方法声明

java
/**
 * 开启小游戏交互。
 * 操作成功后小游戏实例进入 `PLAYING` 状态。
 * 只有当小游戏处于 `RUNNING` 状态时才能调用此接口。
 */
void play();

运行行为与状态迁移

1. 前提条件

  • 当前状态必须为 GAME_STATE_RUNNING
  • 必须确保游戏视图(GameView)已经添加到当前的窗口布局中。

2. 执行过程

  • 引擎开启 Touch 事件的监听与分发。
  • 恢复各种传感器(如陀螺仪、加速计)的回调。
  • 内部标记游戏处于活跃交互态。

3. 结果

  • 成功后,状态变为 GAME_STATE_PLAYING
  • 玩家可以点击按钮、操控角色,游戏内的所有交互 API 正式生效。

代码示例

java
// 在状态监听器中处理 play 逻辑
gameHandle.setGameStateListener(new SUDRTGameHandle.GameStateChangeListener() {
    @Override
    public void onStateChanged(int fromState, int toState) {
        if (toState == SUDRTGameHandle.GAME_STATE_RUNNING) {
            // 脚本启动成功,画面已显示,现在允许玩家操作
            gameHandle.play();
        }
    }
});

注意事项

  • 时机判断:严禁在 create() 之后立即调用 play()。必须等待 start() 执行完成并触发 RUNNING 状态回调后方可调用。
  • 与 pause 的关系:通常 play() 用于从暂停或后台恢复。如果用户点击了原生弹窗导致游戏暂停,在弹窗关闭后应再次调用 play()
  • 输入拦截:如果你发现游戏画面在动,但点击屏幕没反应,通常是因为漏掉了 play() 的调用,或者当前状态尚未成功切入 PLAYING