コード例 #1
0
    protected override void OnCreateManager()
    {
        var reliabilityParams = new ReliableUtility.Parameters {
            WindowSize = 32
        };

        #if UNITY_EDITOR
        m_ClientPacketDelay = UnityEditor.EditorPrefs.GetInt("MultiplayerPlayMode_" + UnityEngine.Application.productName + "_ClientDelay");
        m_ClientPacketDrop  = UnityEditor.EditorPrefs.GetInt("MultiplayerPlayMode_" + UnityEngine.Application.productName + "_ClientDropRate");
        int networkRate = 60; // TODO: read from some better place
        // All 3 packet types every frame stored for maximum delay, doubled for safety margin
        int maxPackets      = 2 * (networkRate * 3 * m_ClientPacketDelay + 999) / 1000;
        var simulatorParams = new SimulatorUtility.Parameters
        {
            MaxPacketSize = NetworkParameterConstants.MTU, MaxPacketCount = maxPackets, PacketDelayMs = m_ClientPacketDelay, PacketDropPercentage = m_ClientPacketDrop
        };
        m_Driver = new UdpNetworkDriver(simulatorParams, reliabilityParams);
        #else
        m_Driver = new UdpNetworkDriver(reliabilityParams);
        #endif

        m_ConcurrentDriver   = m_Driver.ToConcurrent();
        m_UnreliablePipeline = NetworkPipeline.Null;
        m_ReliablePipeline   = NetworkPipeline.Null;
        m_DriverListening    = false;
        m_Barrier            = World.GetOrCreateSystem <BeginSimulationEntityCommandBufferSystem>();
        numNetworkIds        = new NativeArray <int>(1, Allocator.Persistent);
        freeNetworkIds       = new NativeQueue <int>(Allocator.Persistent);
        rpcQueue             = InternalRpcCollection.GetRpcQueue <RpcSetNetworkId>();
    }