Unity3D :NetworkConnection

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

NetworkConnection

重要提示:UNet 是一个已弃用的解决方案,新的多人游戏和网络解决方案(游戏对象的网络代码)正在开发中。有关更多信息和后续步骤,请参阅适用于游戏对象的 Unity 网络代码网站上的信息。

网络连接是封装网络连接的高级 API 类。NetworkClient 对象具有 ,而 NetworkServers 具有多个连接 - 每个客户端一个连接。网络连接能够将字节数组或序列化对象作为网络消息发送。NetworkConnection

属性

属性:功能:
hostIdThe NetworkTransport hostId for this connection.
connectionId此连接的 NetworkTransport connectionId。
isReady该标志用于控制是否将状态更新发送到此连接
lastMessageTime在此连接上收到消息的最后时间。
address此连接所连接到的端点的 IP 地址。
playerControllers已使用 AddPlayer() 添加的玩家的集合。
clientOwnedObjects此连接有授权的对象的集合。

NetworkConnection 类包含当数据发送到传输层或者从传输层接收数据时调用的虚拟函数。这些函数允许专用版本的 NetworkConnection 检查或修改此数据,甚至将数据路由到不同源。下面显示了这些函数,包括默认行为:

public virtual void TransportRecieve(byte[] bytes, int numBytes, int channelId)
{
    HandleBytes(bytes, numBytes, channelId);
}

public virtual bool TransportSend(byte[] bytes, int numBytes, int channelId, out byte error)
{
    return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error);
} 

这些函数的一个用例是记录传入和传出数据包的内容。以下是派生自 NetworkConnection 的 DebugConnection 类的示例,此类用于将数据包的前 50 字节记录到控制台。要使用这样的类,请在 NetworkClient 或 NetworkServer 上调用 SetNetworkConnectionClass() 函数。

class DebugConnection : NetworkConnection
{
    public override void TransportRecieve(byte[] bytes, int numBytes, int channelId)
    {
        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.Log("TransportRecieve h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg);

        HandleBytes(bytes, numBytes, channelId);
    }

    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.Log("TransportSend    h:" + hostId + " con:" + connectionId + " bytes:" + numBytes + " " + msg);

        return NetworkTransport.Send(hostId, connectionId, channelId, bytes, numBytes, out error);
    }
}

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:nity3D :NetworkClient (mvrlink.com)

下一篇:Unity3D :NetworkServer (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号