フック
PlayCanvas React は、PlayCanvas の機能を React アプリケーションに簡単に統合できる包括的な React フックセットを提供します。これらのフックは複雑なライフサイクル管理を処理し、クリーンで React に適した API を提供します。
利用可能なフック
コアフック
Asset ロードフック
- useAsset - 任意の種類の PlayCanvas Asset をロードする
- useModel - 3D モデル (GLB/GLTF) をロードする
- useTexture - テクスチャ Asset をロードする
- useSplat - Gaussian Splat Asset をロードする
- useEnvAtlas - エンバイロメントアトラステクスチャをロードする
- useFont - フォント Asset をロードする
イベントとアニメーションフック
- useAppEvent - PlayCanvas アプリケーションイベントをサブスクライブする
マテリアルと物理フック
- useMaterial - マテリアルを作成・管理する
- usePhysics - 物理コンテキストと状態にアクセスする
使用パターン
ほとんどのフックは一貫したパターンに従います:
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} />
}
コンテキスト要件
多くのフックは特定の React コンテキストが利用可能である必要があります:
- useApp はコンポーネントツリーに
<Application>コンポーネントが必要です - useParent はコンポーネントツリーに
<Entity>コンポーネントが必要です - usePhysics は Application で物理が有効になっている必要があります
TypeScript サポート
すべてのフックは TypeScript で完全に型付けされており、優れた IntelliSense サポートを提供します。フックは PlayCanvas エンジンの型から自動的に型を推論します。
// PlayCanvas の型で完全に型付けされています
const app = useApp() // Application
const entity = useParent() // Entity
const { asset } = useAsset('texture.jpg', 'texture') // Asset | null
ベストプラクティス
- Asset フックを使用する際は 常にロード状態を確認 してください
- より良いユーザー体験のために エラーを適切にハンドリング してください
- ユースケースに応じた 適切なフックを使用 してください
- サブスクリプションのクリーンアップ はフックによって自動的に処理されます
- React のルールに従ってください - フックはコンポーネントのトップレベルでのみ呼び出す必要があります