如何构建仅限 XR 的组件
许多组件只在进入 VR 或 AR 会话时才需要。
为了确保在非 xr 会话期间组件不会更新,您可以使用以下代码片段。
import {Component} from '@wonderlandengine/api';
export class ActiveOnlyInVr extends Component {
static TypeName = 'active-only-in-vr';
start() {
this.engine.onXRSessionStart.add(this.onXRSessionStart);
this.engine.onXRSessionEnd.add(this.onXRSessionEnd);
/* 会话可能已处于活动状态 */
this.active = !!this.engine.xr;
}
onDestroy() {
this.engine.onXRSessionStart.remove(this.onXRSessionStart);
this.engine.onXRSessionEnd.remove(this.onXRSessionEnd);
}
update() {
/* 只有当 xrSession 有效时才调用 */
}
onXRSessionStart = s => {
this.active = true;
};
onXRSessionEnd = s => {
this.active = false;
};
}); (去)激活其他组件
如果您希望根据会话状态禁用/启用其他组件,而不更改它们的代码,可以使用 vr-active-mode-switch 组件,根据用户是否处于 XR 会话来禁用/启用组件。