コード例 #1
0
        /// <summary>
        /// Accept an object from the server to be run on the client
        /// </summary>
        /// <param name="controlCode"></param>
        /// <param name="bytes"></param>
        private void RunOnClient(NetworkControlCode controlCode, byte[] bytes)
        {
            object o = NetSerialize.Deserialize(bytes);

            //If object is a ping, respond immediately, to minimize lag
            //This should be replaced with raw data and custom control codes that are faster to deserialize to help minimize lag from object deserialization
            if (o is Ping p)
            {
                float time = NetTime.now;
                p.clientNumber = clientNumber;
                p.clientTime   = time;
                udp.Send(NetworkControlCode.runOnServer, NetSerialize.Serialize(p));
            }
            else
            {
                lock (objectQueue)
                {
                    objectQueue.Enqueue(o);
                }

#if UNITY_EDITOR
                AddToObjectList("FromServer: " + o.ToString());
#endif
            }
        }
コード例 #2
0
        public static (NetworkEventType eventType, object o) ReadObject(NetworkStream stream)
        {
            NetworkEventType eventType = (NetworkEventType)ReadInt(stream);

            byte[] arr = ReadArr(stream);
            object o   = NetSerialize.Deserialize(arr);

            return(eventType, o);
        }