变量篇
本章将从变量出发,详细说明以下内容:
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在实际的使用频率并不高。
————