玩家 API
您可以使用 Udon 获取世界中实例中玩家的信息。
Udon 通过 VRCPlayerApi 与玩家交互。每个玩家都有一个 VRCPlayerApi 对象,当玩家加入或离开时,您的世界会在监听这些事件的任何 UdonBehaviour 上触发 OnPlayerJoined / OnPlayerLeft 事件。
此页面包括使用一些通用玩家属性和方法的信息。由于 VRCPlayerApi 对象可以做很多事情,我们将一些信息分组到以下页面中:
常用属性和方法
IsValid
VRCPlayerApi, Boolean
在尝试获取或设置玩家的任何内容之前,检查 IsValid 是否返回 true。如果自你保存了对玩家的引用后该玩家已离开,则返回 False。为方便在图表中使用,搜索适用于任何对象的通用"IsValid"方法,因为它为 True 和 False 提供了单独的流程。
- Udon Graph
- UdonSharp

public override void OnPlayerLeft(VRCPlayerApi player)
{
if (Utilities.IsValid(player))
{
// Player is valid
}
else
{
// Player is not valid
}
}
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 等)。