Skip to main content

玩家 API

您可以使用 Udon 获取世界中实例中玩家的信息。

Udon 通过 VRCPlayerApi 与玩家交互。每个玩家都有一个 VRCPlayerApi 对象,当玩家加入或离开时,您的世界会在监听这些事件的任何 UdonBehaviour 上触发 OnPlayerJoined / OnPlayerLeft 事件。

此页面包括使用一些通用玩家属性和方法的信息。由于 VRCPlayerApi 对象可以做很多事情,我们将一些信息分组到以下页面中:

常用属性和方法​

IsValid​

VRCPlayerApi, Boolean

在尝试获取或设置玩家的任何内容之前,检查 IsValid 是否返回 true。如果自你保存了对玩家的引用后该玩家已离开,则返回 False。为方便在图表中使用,搜索适用于任何对象的通用"IsValid"方法,因为它为 True 和 False 提供了单独的流程。

An Udon Graph screenshot showing the OnPlayerLeft event connected to an IsValid node.

EnablePickups​

VRCPlayerApi, Boolean

关闭玩家在世界中拾取和使用 VRCPickup 对象的能力。此属性默认开启,因此只有在你想要关闭时才需要使用此方法。

get displayName​

VRCPlayerApi

获取玩家显示的名称(可能与用于登录 VRChat 的用户名不同,用户名不公开暴露)

Get isLocal​

in: VRCPlayerApi

out: Boolean

告诉你给定玩家是否本地玩家。

Get isMaster​

in: VRCPlayerApi

out: Boolean

告诉你给定玩家是否是实例主控者。

Get isInstanceOwner​

in: VRCPlayerApi

out: Boolean

告诉你给定玩家是否是当前实例拥有者。

Get isVRCPlus​

in: VRCPlayerApi

out: Boolean

告诉你给定玩家是否有活跃的 VRC+ 订阅。

Get isSuspended​

in: VRCPlayerApi

out: Boolean

告诉你玩家的设备是否已挂起。设备在进入睡眠模式或切换到其他应用时挂起。挂起时,设备不运行 Udon 代码或不响应网络事件,直到玩家重新打开 VRChat。

你的代码应考虑到任何设备随时可能挂起,无论平台如何。PC 玩家目前从不挂起,但不应假设这一点。

注意 isSuspended 对本地玩家始终为 false——Udon 无法在本地玩家挂起时运行。

GetPickupInHand​

in: VRCPlayerApi, Hand (none, left, right)

out: VRCPickup

获取玩家在指定手中持有的拾取物。仅适用于本地玩家。如果未找到 VRCPickup,则返回 null。

IsOwner​

in: VRCPlayerApi, GameObject

out: Boolean

告诉你玩家是否为给定 GameObject 的拥有者,对同步很重要。

IsUserInVR​

in: VRCPlayerApi

out: Boolean

告诉你玩家是否正在使用 VR 头戴设备。

PlayHapticEventInHand​

VRCPlayerApi, Hand, float, float, float

振动玩家的触觉控制器(如果他们有的话)。float 输入应在 0-1 范围内。duration 是振动持续时间,amplitude 是振动强度,frequency 是振动速度。不同控制器之间的感觉可能差异很大。

UseAttachedStation​

VRCPlayerApi

使玩家进入与此 UdonBehaviour 在同一 GameObject 上的 Station。

SimulationTime​

float

玩家的模拟时间。

UseLegacyLocomotion​

VRCPlayerApi

不推荐 - 为此玩家开启旧版移动方式,模拟 VRChat 已弃用的 SDK2 中玩家移动的方式。启用旧版移动后,它将保持启用状态,直到用户离开你的世界。

Language​

GetCurrentLanguage​

string

获取本地用户选择的语言。值格式为 RFC 5646 语法(en,ja,es,zh-CN 等)。

GetAvailableLanguages​

string[]

获取玩家可以在 VRChat 设置中选择的所有可用语言。值格式为 RFC 5646 语法(en,ja,es,zh-CN 等)。