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。