播放器组件
Player 组件的属性,含 story、尺寸、onReady 等回调与 active 开关
Player 组件用于渲染剧本
注意: 必须将
Player包裹在 GameProviders 中
若使用抽象类构建剧本,请参见 Core 文档
示例
"use client";
import { GameProviders, Player } from "narraleaf-react";
import { story } from "./my-story";
export default function Page() {
return (
<GameProviders>
<Player story={story} onReady={({ liveGame }) => {
liveGame.newGame();
}}
width="100vw"
height="100vh"
/>
</GameProviders>
);
}Props
story
剧本对象
width
Player 宽度
height
Player 高度
className
Player 的 CSS 类名
onReady
Player 就绪时的回调,返回 ScriptCtx 对象
newGame() 应在此处调用。它不保证预加载完成或已渲染——参见下方 onPreloadComplete 和 onFirstSceneReady
onPreloadComplete
可选
首次预加载完成时触发一次
自 0.17.0 起,此回调在进入游戏之前触发,此时菜单可能仍在屏幕上,且无场景挂载。如需等待游戏内容上屏,请使用 onFirstSceneReady。详见预加载
回调参数 {game, gameState, liveGame, storable, scene},其中 scene 可能是预加载中的场景。每个游戏生命周期内最多调用一次
<Player story={story} onPreloadComplete={() => setLoadingBarDone(true)} />onFirstSceneReady
可选
预加载完成、首个场景已挂载、浏览器已渲染一帧后触发。这是「游戏已就绪」的最直接信号
回调参数与 onPreloadComplete 相同,每个游戏生命周期内最多调用一次
<Player story={story} onFirstSceneReady={() => setLoadingOverlay(false)} />onPreloadedReady
可选,已废弃
请改用 onPreloadComplete
onEnd
剧本结束时触发
onError
游戏发生错误时触发。每个生命周期内最多调用一次,接收 error 和 errorInfo 两个参数
children
Player 的子组件。可用于自定义快捷菜单等,参见 PageRouter API
active
可选,默认 true
是否显示 Player。即使为 false,页面仍会被渲染