事件篇
本篇章将讲述网络同步有关的事件
网络同步有关的事件分为以下几个部分
1:与序列化相关事件
OnPreSerialization()
在同步数据发送前触发。
一般来说,当需要同步的数据不存在与本地或者需要额外处理时,我们会需要OnPreSerialization()事件。在大部分设计模式里,OnPreSerialization事件都是不需要的。
OnDesSerialization()
在同步数据接收后触发。
OnDesSerialization()是基本上大部分的网络同步模式的核心。除了主机外,玩家在完成所有的变量更新后都会触发,而主机也可以通过主动触发来实现发送数据后触发OnDesSerialization事件。
OnPostSerialization()
在同步数据发送后触发,返回发送结果。
OnPostSerialization()事件用于所有权具有不可预测性,或者数据量过大的同步脚本中,用于检查数据发送情况和结果,在大部分的情况下这个OnPostSerialization都是不需要的
2:与所有权有关事件:
OnOwnershipRequest()
当所有者转移事件被触发时,由现在的所有者触发,用于审核所有者转移申请。
一般来说如果没有定义这个事件,会默认放行所有所有权转移。如果这个事件被定义了,则必须要这个事件返回了true,所有权转移才会触发。如果没有强制要求,我不太建议任何人使用这个功能,因为这会让你的代码难以调试。
OnOwnershipTransferred()
当所有者转移时触发。
这个事件一般用的也少,主要用于和OnOwnerShipRequest搭配,在Owner转换成功时进行初始化自身权限以及进行初次同步使用。
3:同步变量相关事件:
OnVariableChanged()
根据官网介绍,当指定变量改变时会触发这个事件,但是在UdonSharp和Graph中似乎并不存在这个事件,UdonSharp可以通过特殊的方法实现这个事件的效果,详情请见上一章节。
No comments to display
No comments to display