联网的 aframe 动态房间不适用于简单的 rtc
Networked aframe dynamic rooms not working with easy rtc
问题
嗨,我已经使用以下形式为联网的 aframe 动态房间重新混合了一个模板:
https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0
出于某种原因,每当我将这些代码行添加到 <a-scene>
标记时,整个项目都会中断:
networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
我想知道是否有办法将这些代码行添加到 <a-scene>
标记中,使其看起来像这样:
<a-scene dynamic-room networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
>
但是有了它,动态房间仍然可以正常工作。这意味着如果两个人在不同的房间,他们将看不到对方,但如果他们在同一个房间,他们就能看到对方。这怎么能做到?
链接
A字型网站:https://aframe.io
联网的 A 型框架文档:https://www.npmjs.com/package/networked-aframe
包含我当前代码的项目:https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0
afaik dynamic-room
component is designed to attach the networked-scene
, not update it (since it doesn't handle updates). That's why the dynamic-room example scene 确实只有一个 dynamic-room
组件,以及为什么 dynamic-room
不适用于 networked-scene
.
我会将所有 networked-scene
属性都放到 dynamic-room
设置中,但也可以让两者像您想要的那样一起工作:
<a-scene dynamic-room networked-scene>
解决此问题的一种方法是使用 networked-scene
的 connectOnLoad
property - 让 dynamic-room
更改房间,然后决定何时连接。
因为 networked-scene
检查 init 中的 connectOnLoad
- 它总是使用默认值。我们需要确保默认值是 false
而不是 true
.
所以需要做两件事:
在场景初始化之前更改networked-scene
默认值:
<script>
// This is hacky, another way would be copying the component and make it react to updates
AFRAME.components["networked-scene"].schema.connectOnLoad.default = false;
</script>
<a-scene dynamic-room networked-scene>
设置房间id时发出connect
:
// set the room id
el.setAttribute("networked-scene", "room", roomID);
// notify `networked-scene` that you're ready to connect
el.emit("connect", null, false);
中查看
问题
嗨,我已经使用以下形式为联网的 aframe 动态房间重新混合了一个模板:
https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0
出于某种原因,每当我将这些代码行添加到 <a-scene>
标记时,整个项目都会中断:
networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
我想知道是否有办法将这些代码行添加到 <a-scene>
标记中,使其看起来像这样:
<a-scene dynamic-room networked-scene="
room: audio;
adapter: easyrtc;
audio: true;
video: true;
debug: true;
inspector=https://cdn.jsdelivr.net/gh/aframevr/aframe-inspector@master/dist/aframe-inspector.min.js"
>
但是有了它,动态房间仍然可以正常工作。这意味着如果两个人在不同的房间,他们将看不到对方,但如果他们在同一个房间,他们就能看到对方。这怎么能做到?
链接
A字型网站:https://aframe.io
联网的 A 型框架文档:https://www.npmjs.com/package/networked-aframe
包含我当前代码的项目:https://glitch.com/edit/#!/power-lily-pancake?path=public%2Fscene.html%3A41%3A0
afaik dynamic-room
component is designed to attach the networked-scene
, not update it (since it doesn't handle updates). That's why the dynamic-room example scene 确实只有一个 dynamic-room
组件,以及为什么 dynamic-room
不适用于 networked-scene
.
我会将所有 networked-scene
属性都放到 dynamic-room
设置中,但也可以让两者像您想要的那样一起工作:
<a-scene dynamic-room networked-scene>
解决此问题的一种方法是使用 networked-scene
的 connectOnLoad
property - 让 dynamic-room
更改房间,然后决定何时连接。
因为 networked-scene
检查 init 中的 connectOnLoad
- 它总是使用默认值。我们需要确保默认值是 false
而不是 true
.
所以需要做两件事:
在场景初始化之前更改
networked-scene
默认值:<script> // This is hacky, another way would be copying the component and make it react to updates AFRAME.components["networked-scene"].schema.connectOnLoad.default = false; </script> <a-scene dynamic-room networked-scene>
设置房间id时发出
connect
:// set the room id el.setAttribute("networked-scene", "room", roomID); // notify `networked-scene` that you're ready to connect el.emit("connect", null, false);