示例#1
0
    void ServerReceiveCommand(NetworkMessage message)
    {
        InputSynchronizationMessage inputMessage = message.ReadMessage <InputSynchronizationMessage>();

        // Get network ID from sent object.
        NetworkInstanceId netId = new NetworkInstanceId(inputMessage.netId);

        // Find instance of local object.
        GameObject foundObj = NetworkServer.FindLocalObject(netId);

        // Verify object existance.
        if (foundObj == null)
        {
            return;
        }

        // Confirm ownership (only works for single player on one machine).
        if (message.conn.playerControllers[0].unetView.netId == netId)
        {
            // Deserialize user command.
            UserCmd inputCommand = UserCmd.DeSerialize(inputMessage.messageData);

            // Get reference to player input.
            PlayerInputSynchronization input = foundObj.GetComponent <PlayerInputSynchronization>();

            // Send user command to object.
            input.HandleUserCommand(inputCommand);
        }
    }
    void ServerReceiveCommand(NetworkMessage message)
    {
        var inputCommandMessage = message.ReadMessage <InputSynchronizationMessage>();
        var inputCommand        = UserCmd.DeSerialize(inputCommandMessage.messageData);

        if (inputCommand.SequenceNumber - m_LastIncomingSeq > 1)
        {
            //We are missing some commands lets start predicting
            //Run prediction code
        }
        else
        {
            m_LastIncomingSeq = inputCommand.SequenceNumber;
            m_StoredCmds.Enqueue(inputCommand);
        }
    }