Ejemplo n.º 1
0
    // AIRPC将所有AI的RPC进行合包操作
    public void AIRPC(string AIName, string methodName, params object[] args)
    {
        if (!GameMgr.instance)//GameMgr.instance没被初始化,则此时是离线状态
        {
            return;
        }

        lock (bufferlock)
        {
            ++protoCnt;
            proto.AddString(AIName);
            proto.AddString(methodName);
            proto.AddAIObjects(args);
            // 快满了直接发送,保留1K空间
            if (proto.bytes.Length > 3072)
            {
                ProtocolBytes AIRPC_proto = new ProtocolBytes();
                AIRPC_proto.AddString("AIRPC");
                AIRPC_proto.AddInt(protoCnt);
                AIRPC_proto.bytes = AIRPC_proto.bytes.Concat(proto.bytes).ToArray();
                NetMgr.srvConn.Send(AIRPC_proto);
                // 更新缓冲区
                proto    = new ProtocolBytes();
                protoCnt = 0;
            }
        }
    }