Skip to main content

变量篇

本章将从变量出发,详细说明以下内容:

1:参数类型-网络同步支持的类型

2:与变量直接相关的方法

——————

网络同步支持以下类型的参数同步

布尔:bool

文字:char、string、VRCUrl

整数:byte、sbyte、short、ushort、int、uint、long、ulong

浮点:float、double

元数组:Vector2、Vector3、Vector4、Quaternion、

颜色:Color 和 Color32。

以及他们的数组[]

————

网络同步会在Request Serialization阶段逐项检查同步变量的类型是否合法。

————

常用情况下,与变量有关的事件有以下事件:

OnPreSerialization:请求序列化前

OnDesSerialization:反序列化

前者在网络同步正式开始前触发,是更改网络变量的最后一次机会。

后者是网络同步结束的标志,代表所有参数已经正常解压。

————

需要注意的是,这两种事件都支持直接调用(在UdonSharp中)。在常规设计中,经常会在代表开始同步的RequestSerialization后直接接OnDesSerialization。

这种设计模式下要求:

1:任何更改同步参数的行为必须执行到最后可以触发RequestSerialization(可以不固定触发)

2:在OnDesSerialization中,必须包含所有和同步变量有关的方法。

3:主机的更新和其它玩家的更新都直接调用OnDesSerialization事件完成。

————

OnPreSerialization事件使用常见于同步变量需要通过计算/分布在其它脚本中的情况。

由于RequestSerialization不止可以通过Owner本地触发,其他玩家也可以触发,Owner无法确定什么时候会发生同步,所以才会使用OnPreSerialization来管理网络同步变量,确保发送的是正确且最新的数据。

在大部分情况下,Request请求都是由Owner发出的,其他人发送Requst请求也不强要求最新数据,所以PreSerialization在实际的使用频率并不高。

————