bytes | 要发送的数据。 |
numBytes | 要发送的数据的大小。 |
channelId | 用于发送数据的通道。 |
error | 关于发送的错误代码。 |
bool 如果数据已发送,则为 ture。
此虚拟函数允许自定义网络连接类在应用程序发送的数据进入网络传输层之前对这些数据进行处理。
此函数的默认实现是针对提供的数据调用 NetworkTransport.Send(),但自定义实现可以传递数据的修改版本。此示例会将发送的数据记录到控制台:
using UnityEngine;
using UnityEngine.Networking;
using System;
using System.Text;
class DebugConnection : NetworkConnection
{
public override bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error)
{
StringBuilder msg = new StringBuilder();
for (int i = 0; i < numBytes; i++)
{
var s = String.Format("{0:X2}", bytes[i]);
msg.Append(s);
if (i > 50) break;
}
UnityEngine.Debug.LogError("TransportSend h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg);
return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error);
}
}
此功能的其他用途还包括数据压缩或数据加密。
通过设置 NetworkServer.NetworkConnectionClass 和 NetworkClient.NetworkConnectionClass 来使用的自定义网络连接类。
using UnityEngine;
using UnityEngine.Networking;
public class SpaceManager : NetworkManager
{
void Start()
{
NetworkServer.NetworkConnectionClass = typeof(DebugConnection);
NetworkClient.NetworkConnectionClass = typeof(DebugConnection);
}
}