Hooks
Hooks 负责复杂生命周期管理,以 React 习惯提供简洁接口。
可用 hooks
核心
资源加载
- useAsset:任意资源。
- useModel:GLB/GLTF。
- useTexture:纹理。
- useSplat:高斯泼溅。
- useEnvAtlas:环境图集。
- useFont:字体。
事件与动画
- useAppEvent:订阅应用事件。
材质与物理
- useMaterial:管理材质。
- usePhysics:物理上下文和状态。
使用模式
多数 hooks 遵循统一模式:
import { useApp, useAsset } from '@playcanvas/react/hooks'
function MyComponent() {
const app = useApp()
const { asset, loading, error } = useAsset('model.glb', 'container')
if (loading) return <div>Loading...</div>
if (error) return <div>Error: {error}</div>
return <Container asset={asset} />
}
上下文要求
许多 hooks 需要特定上下文:
- useApp 必须位于 Application 内。
- useParent 必须位于 Entity 内。
- usePhysics 需要应用启用物理。
TypeScript 支持
提供完整类型与 IntelliSense,自动从引擎类型推断。
// Fully typed with PlayCanvas types
const app = useApp() // Application
const entity = useParent() // Entity
const { asset } = useAsset('texture.jpg', 'texture') // Asset | null
使用建议
- 使用资源 hook 时检查加载状态。
- 妥善处理错误。
- 按用途选择合适 hook。
- 订阅清理由 hooks 自动完成。
- 遵循 React 规则,仅在组件顶层调用。