NarraLeaf

GameState

GameState 的属性与方法,包括音频管理器、场景预加载与暂停推进

本页面正在建设中

测试功能,可能会有变动

GameState 由玩家组件创建,可以传递给其他主类,例如 liveGame.serialize

公共属性

game

  • Game - Game 实例

audioManager

游戏的音频缓存与播放管理器

// 抓取并解码一个音源进入音频缓存,但不播放。
void gameState.audioManager.preload(bgm);
  • preload(sound: Sound): Promise<void> - 预热一个音源。自 0.17.0 起可用。加载失败的音源只会记录一条警告,并改为在首次播放时加载,因此它永远不会 reject。不要用返回的 Promise 为任何东西把关:在用户手势满足浏览器自动播放策略之前,音频上下文一直是锁住的,因此它完全可能一直挂着不结算。详见预加载

公共方法

preloadScene

指定要预热资源的场景,但不挂载它、也不执行它的任何动作

gameState.preloadScene(scene);   // 也可以传 Story,将使用它的入口场景

0.17.0 起,Player 会自动注册故事的入口场景——但仅在既没有预加载场景、也没有已挂载场景时才生效,因此先调用这个方法就能保留你自己的选择。详见预加载

  • arg: Scene | Story - 要预热的场景,或使用其入口场景的故事。若传入的故事没有入口场景则抛出异常
  • return: this

suspendAdvance

把当前行按住不动。只要还有一个挂起未释放,舞台点击、推进键和跳过键都不起作用。自 0.27.0 起可用

const release = gameState.suspendAdvance();
// ...
release();

挂起可嵌套:全部释放之后行才恢复。返回的函数可以安全地重复调用

在 React 组件里请用 useSuspendAdvance,它随组件取得和释放挂起

  • return: () => void - 释放这次挂起

isAdvanceSuspended

当前是否有东西正按住这一行。自 0.27.0 起可用

  • return: boolean

本页目录