<Script/>
<Script/> コンポーネントは <Entity/> に動作を追加するシンプルな命令的方法を提供します。
これは 物理、アニメーション、インタラクティビティ など、パフォーマンス上の理由で React の Props 更新をバイパスしたい場合に便利です。React の外でエンジンの更新ループにフックでき、パフォーマンスクリティカルなコードに役立ちます。PlayCanvas Editor プロジェクトの既存の Script も活用できます。
Script についての詳細はエンジンドキュメントの Script を参照してください。
使い方
Script コンポーネントは PlayCanvas の Script クラスを継承するクラスを受け取り、Entity にアタッチします。追加の Props は Script クラスに直接渡され、クラスのプロパティとして使用できます。
import { Script } from '@playcanvas/react/components'
import { CameraControls } from 'playcanvas/scripts/esm/camera-controls.mjs'
return <Script script={CameraControls} />
次の例では、Entity に SpinMe Script を追加し、毎フレーム Entity を回転させます。
- Demo
- Code
// ↑ imports hidden
// This class runs in the scope of the entity it's attached to
class SpinMe extends PcScript {
update(dt) {
this.entity.rotate(0, dt * this.speed, 0);
}
}
export const ScriptExample = () => {
const { speed } = useControls(vars);
return (
<Entity>
<Render type="box" castShadows receiveShadows />
<Script script={SpinMe} speed={speed} />
</Entity>
);
};
既存の Script を使用することも、独自の Script を作成することも、エンジンリポジトリの 既存 Script を利用することもできます。
ヒント
PlayCanvas エンジンにはプロジェクトで使用できる便利な Script が多数含まれています。こちらで確認できます。
ESM Script の構造については Script ドキュメント で詳しく学べます。
プロパティ
| Name | Type | Default |
|---|---|---|
script | SubclassOf<Script>The Script class to attach to the entity | - |