扩展如何工作
扩展会向 vrOS 请求它需要的具体东西 — 音频输出、自己的面板、网络访问 — 而每一项由你授予或拒绝。vrOS 启动它、监管它,并在它倒下时重启它。
第三方扩展是一个独立的程序:它自行运行,通过本地套接字与 vrOS 通信,崩溃时不会把 vrOS 一起拖走。随 vrOS 一起发布的那五个扩展则是内置的 — 它们是应用内受监管的任务,用同一套 API、守同样的纪律,与 panic 隔离,而不是靠进程边界隔离。两个层级的区别见构建一个扩展。
本页是用户这一侧。要自己做一个,见构建一个扩展。
随附哪些扩展
Section titled “随附哪些扩展”五个扩展都随 2.0.0 一起发布,初始都是关闭的。在设置 → 扩展里打开其中一个,它的标签页就会加入仪表盘。
| 扩展 | 它做什么 |
|---|---|
| VRChat OSC | 聊天框、角色参数、相机、OSC 追踪器、OSCQuery 发现。SteamVR 关着也能用。 |
| 音效板 | 音垫,支持分类、增益、循环和分割音垫,每个音垫可单独路由到你的头显和/或麦克风 |
| OBS Control | 场景切换、直播与录制状态,以及一个 OBS Director 面板,最多可管理 16 个 OBS 实例 |
| Twitch | 登录、带 7TV 表情的聊天、带 VR 内广告 HUD 的广告管理器,以及最多四个直播播放器 |
| Steam Link Face | 把通过 Steam Link 串流的 Quest Pro 的面部追踪接入 O·VR 的面部追踪 |
2.0.0 还没有与 vrOS 1 持平。更多创作者功能会作为扩展逐个回来,发行说明记录你手上这个版本实际落地了什么。
扩展是在首次启动时询问,而不是在你安装它的时候。在你做出决定之前,它保持停止。它不会运行,也不会占用一个导航栏槽位。
这个界面会列出它请求的每一项能力,每一项都有自己的开关,以及一行平实的说明,讲清这在实际中意味着什么。它没有请求的能力也会列出来,标记为未请求,这样你能看清它可能请求的全部范围。然后:全部拒绝,或者允许所选的。
如果后续版本想要新的东西,只会就这一处差异再问你一次。你已经授予的仍然有效。
一项能力涵盖什么
Section titled “一项能力涵盖什么”| 能力 | 授予它就允许 |
|---|---|
| Bus | 接收它列出的 vrOS 事件,例如 VR 已连接和已断开。它自己的事件始终归它自己。 |
| Overlays | 在你的空间里绘制自己的面板。它看不到也碰不到其他叠加层。 |
| Capture | 请求某个特定窗口的捕获叠加层。 |
| Audio | 通过 vrOS 音频引擎及其输出路由播放。 |
| Secrets | 以自己的名义在你的操作系统凭据库里保存密码或令牌。 |
| OSC | 打开 OSC 套接字。 |
| Network | 与网络通信。 |
| 视频播放 | 在它的面板里播放来自互联网的视频和音频。面板隐藏时音频可以继续播放。 |
| 面部数据 | 提供或读取面部和眼动追踪数据。 |
Bus、Overlays、Capture、Audio 和 Secrets 由宿主强制执行:当扩展向 vrOS API 请求它没有获得授权的东西时,这个调用会在通信层就被拒绝。
这五个内置扩展随 vrOS 一起发布,在你于设置 → 扩展里打开之前都是关闭的。它们已预先授予,所以你第一次启用其中一个时不会被询问 — 视频播放和面部数据除外,这两项从不预先授予,总是等你来允许。除此之外,它们都是真正的扩展:同样的清单、同样的能力徽章、设置里同样的撤销按钮。关掉其中一个,它就停止。
它们也是扩展 API 保持诚实的方式:它们建立在第三方拿到的同一套 API 之上,没有私有后门。如果某个第一方功能无法用那套 API 做出来,那就是 API 错了。
设置 → 扩展
Section titled “设置 → 扩展”每个已安装的扩展都会连同它的作者、版本和能力徽章一起列出:已授予、已请求(仍在等你决定),或者在扩展被禁用时显示为中性。有待决定的项会在分类行和仪表盘顶栏上打徽章,所以从任何地方都能找到它。
每一行你都可以查看(这会打开完整的同意界面)、启用或禁用该扩展,以及撤销你先前授予的某项能力。撤销用的就是你当初授予时的那个开关。见设置。
已启用且带有仪表盘标签页的扩展会在导航栏上得到一个槽位:先是核心标签页(面板、性能、游玩空间),然后是一条分隔线,接着是按你的顺序排列的扩展槽位,设置固定在最下方。核心标签页和设置从不移动。
默认情况下,扩展在桌面应用里也会得到它的导航栏标签页。见桌面应用。
本版本会在扩展的短标签旁画一个占位的描边图形。自定义扩展图标不在本版本里。
扩展可以绘制两种面板:仪表盘内部的一个标签页,以及一个可生成、由你放进空间里的叠加层面板。叠加层面板从扩展自己的仪表盘标签页生成。
叠加层面板就是一个普通的 vrOS 叠加层。把它锚定到世界、你的头部或任意一只手腕,抓取它,锁定它,重启之后它会回到你离开时的地方。见面板。
VR 断开时,扩展的面板会隐藏,而扩展继续运行。放下头显绝不会拆掉它的状态。被标记为无需 VR 也能运行的扩展,根本不会知道 SteamVR 是否存在。
扩展会注册具名的命令,你可以从它们的面板和仪表盘触发这些命令。要用手柄够到某个命令,先在设置 → 扩展里把它分配给八个预先声明的动作之一,然后在 SteamVR 的手柄绑定下绑定那个动作,和 vrOS 暴露的其他一切一样。未分配的动作什么都不做。vrOS 不会自创手势。见输入。
安装第三方扩展
Section titled “安装第三方扩展”把扩展的文件夹放到:
- Windows:
%LOCALAPPDATA%\vrOS\extensions\<id>\ - Linux:
~/.local/share/vros/extensions/<id>/
文件夹在,就等于扩展已安装。在你启用它并走完同意界面之前,它会以禁用状态列出,它请求的能力以徽章形式显示。通过商店进行签名分发是后面的里程碑;本版本是本地文件夹安装。
当某个扩展行为不端时
Section titled “当某个扩展行为不端时”崩溃的扩展会按退避重启,具体依据它自己清单里的策略。它保存的数据存在 vrOS 里,所以重启是接着来,而不是从头来。
一直崩溃的扩展会不再被重启,最终落在已禁用,原因显示在窗格里。针对 vrOS 已不再支持的协议版本构建的扩展,也会以同样的方式列出。不会有任何东西被悄悄从列表里丢掉。
要立刻停掉一个扩展,在设置里禁用它。如果问题在这之后依然存在,见故障排查。