Title here
Summary here
载荷Payload用于事件触发时附带的额外参数,通过继承UDidaEventPayload来定义。
触发时,通过结点设置载荷参数。
监听时,通过Cast成目标类型来获取载荷参数。
如果因为自身需求不能使用K2Node自动实例化Payload,可以调用事件的函数库中的静态函数来自己实例化一个Payload,相关函数为:UDidaEventLibrary::SpawnDidaEventPayload,然后使用函数库中的静态函数UDidaEventLibrary::InvokeEvent在触发事件即可。
Payload允许重载以下两个函数:
参数 | 描述 |
---|---|
MakeString | 根据载荷数据生成字符串 |
LoadString | 从字符串中赋值载荷数据 |
他们会在RPC与TCP收发事件时被调用,用作编码载荷的数据。
目前默认会根据反射信息把数据生成一个Json字符串,但对于指针等特殊类型,需要自己定义一个编码与解码的逻辑,实现相关函数后,便能实现无感知的在网络上发送事件。
为了优化生成载荷的开销,所以提供了载荷的回收。为了避免未正确实现回收函数而造成的异常,所以默认关闭了载荷的回收。如果需要开启,则可以创建一个基于UDidaEventPayloadRecyclable的子类,并实现NativeOnRecycled或K2_OnRecycled。
载荷会在创建时尝试从回收池中获取,在事件Invoke后回收。
需要正确实现载荷的回收函数避免调用异常或长时间持有对象,同时应避免在回收后继续使用载荷。