Skip to main content

属性

属性扩展了 UdonSharp 类、字段和方法的功能。UdonSharp 添加了新属性,同时也支持许多现有的 C# 和 Unity 属性。

tip

关于 UdonSharp 属性的有用概述,请阅读 Varneon 的 UdonSharp 开发实践。

UdonSharp 属性​

以下属性是 UdonSharp 和 VRChat SDK 独有的。

UdonSynced​

[UdonSynced] / [UdonSynced(UdonSyncMode)]

带有此属性的字段会在实例中通过网络为所有玩家同步。阅读 VRChat 的网络文档了解更多。

Example

public class Example : UdonSharpBehaviour
{
[UdonSynced]
public bool synchronizedBoolean;

[UdonSynced(UdonSyncMode.Linear)]
// This float will be linearly interpolated
public float synchronizedFloat;
}

UdonSyncMode​

UdonSharp.UdonSyncMode

默认情况下,[UdonSynced] 字段不会被插值。当字段变化时,它会立即改变。你可以更改同步模式以平滑地在旧值和新值之间进行插值。

名称摘要
None无插值(默认)
Linear线性插值
Smooth平滑插值
NotSynced(未使用 [UdonSynced] 时的默认值)

UdonBehaviourSyncMode​

[UdonBehaviourSyncMode] / [UdonBehaviourSyncMode(BehaviourSyncMode)]

此属性允许你选择应用于此 UdonBehaviour 所有实例的同步模式。如果添加此属性,UdonSharp 将隐藏 Unity 中选择同步模式的下拉菜单。它还会启用额外的验证,以确保你的同步变量适合所选的同步模式。

Example

[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
public class Example : UdonSharpBehaviour
{
// This class's sync mode is manual.
}

BehaviourSyncMode​

UdonSharp.BehaviourSyncMode

与 UdonBehaviourSyncMode 结合使用,为你的行为选择同步模式。

名称摘要
Any不强制执行任何模式。你可以在 Unity 中设置任意同步类型。(默认)
Continuous同步变量将以非常频繁的速率自动更新,但为了节省带宽,可能不会始终可靠更新。
Manual同步变量由用户以较低频率手动更新,但确保在请求时可靠更新。
None强制行为中不使用同步变量,并在 UI 中隐藏同步模式选择下拉菜单。不同步任何内容,并且 SendCustomNetworkEvent/NetworkCalling 在该行为上无法使用。
NoVariableSync强制行为中不使用同步变量,隐藏同步模式选择下拉菜单,并允许你在使用 Manual 或 Continuous 同步的 GameObject 上使用该行为。