UNITY的NetworkDiscovery广播发送消息的几个坑

4回答

UNITY的NetworkDiscovery广播发送消息的几个坑

提问者 紫数 2017-11-02 1.2k浏览
#region UNITY的NetworkDiscovery广播发送消息的几个坑(这些坑官网API文档里都没有提到,也没有演示代码):
//1.单词广播上限是512个字符。所以超过1024字节必须拆分字符串。
//2.不满512个字符会自动填充空字符进去,直到512个字符。所以解析data必须手动去掉空字符。
//3.广播字符串在广播服务器启动以后即使被修改,广播内容也不会改变。必须关掉广播,再重新初始化配置,再重新启动广播服务器才行。
//4.重新关掉广播并重新初始化以后不能立刻重启广播服务器,必须等一段时间以后再重启……
//5.就算以上4条全部注意到了还是不行!如果后续的字符串比前面的字符串短,则会保留前一个字符串后面的部分!例如第一次发送是“THE_START_OF_DATA”,第二次发送是“COUNT=5”,则客户端第二次实际收到的不是“COUNT=5”,而是“COUNT=5RT_OF_DATA”!
//6.以上原因是NetworkDiscovery实际发送的是一个缓冲数组(传输层的API),通过在初始化的时候把广播字符串转化成byte[]来实现。然而byte[]还没法手动去改,因为它是私有域的,没法被NetworkDiscovery类的继承类所继承!(哭)
//这些坑浪费了我十几个小时,后来我是到Unity官方论坛上翻出了NetworkDiscovery类的源代码才弄明白真相……不然恐怕还要浪费更多的时间。为什么不在api文档或Manual手册中说明呢……总之UNITY的HLAPI非常坑人。
#endregion

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
加载中... 查看更多回答