<pc-script>
<pc-script> 为实体添加脚本组件,作为行为脚本容器,每个脚本通过一个 <pc-script-instance> 声明。
用法
- 必须直接位于
<pc-entity>、<pc-model>或<pc-node>下。 - 可以包含 0 到多个
<pc-script-instance>子项。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled | Boolean(布尔) | "true" | 组件启用状态 |
示例
一个组件包含两个脚本:rotate 旋转立方体,pulse 改变缩放。可以移除其中一个实例,为单个实例添加 enabled="false",或为 pc-script 添加该属性,统一关闭两个脚本:
<pc-app>
<pc-scene>
<pc-entity name="camera" position="0 0 3">
<pc-camera clear-color="#1d1f2b"></pc-camera>
</pc-entity>
<pc-entity name="light" rotation="45 30 0">
<pc-light></pc-light>
</pc-entity>
<pc-entity name="cube">
<pc-render type="box"></pc-render>
<pc-script>
<pc-script-instance name="rotate"></pc-script-instance>
<pc-script-instance name="pulse"></pc-script-instance>
</pc-script>
</pc-entity>
</pc-scene>
</pc-app>
<script type="module">
import { registerScript, Script } from 'playcanvas';
import { whenReady } from '@playcanvas/web-components';
await whenReady('pc-app');
class Rotate extends Script {
update(dt) {
this.entity.rotate(0, 90 * dt, 0);
}
}
class Pulse extends Script {
time = 0;
update(dt) {
this.time += dt;
const s = 1 + 0.2 * Math.sin(this.time * 3);
this.entity.setLocalScale(s, s, s);
}
}
registerScript(Rotate, 'rotate');
registerScript(Pulse, 'pulse');
</script>
JavaScript 接口
可以通过 ScriptComponentElement API创建和操作元素。
component 是底层 ScriptComponent,就绪前为 null,标签未暴露的功能可通过它访问。
另请参阅
<pc-script-instance>:组件运行的各脚本。<pc-asset>:加载脚本模块。- 通过脚本添加行为:编写脚本和声明属性。