接收数据
在之前的客户端程序中每帧都只处理一条信息,如果是60FPS,那么每秒只能处理60条信息,
每次Update处理多条数据
Unity每一帧执行一次Update,一般每秒会执行30到60帧,也就是说第3章的网络模块每秒最多只能处理60条消息。如果游戏场景比较复杂,会增大渲染时间,说不定每秒只能处理30条消息。对于某些实时性要求高的游戏,客户端与服务端之间的通信频率可能很高,超过网络模块的处理能力。本章的程序会给NetManager定义只读变量MAX_MESSAGE_FIRE,指示每一帧处理多少条消息,如图6-22所示。
— 引用自 《Unity网络开发实战》罗培羽

| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 
 | private static int MAX_MESSAGE_FIRE = 30;
 
 
 public static void Update()
 {
 heartMessageTimer += Time.deltaTime;
 
 MsgUpdate();
 
 if (heartMessageTimer == heartMessageIntervalTime)
 {
 SendHeartMessage();
 heartMessageTimer = 0;
 }
 }
 
 
 
 
 public static void MsgUpdate()
 {
 
 if (reciveMessageQueue.Count == 0)
 {
 return;
 }
 
 
 for (int i = 0; i < MAX_MESSAGE_FIRE; i++)
 {
 
 BaseMessage msgBase = null;
 lock (reciveMessageQueue)
 {
 if (reciveMessageQueue.Count > 0)
 {
 msgBase = reciveMessageQueue.Dequeue();
 }
 }
 
 
 if (msgBase != null)
 {
 listeners[msgBase.GetMessageID()]?.Invoke(msgBase);
 }
 
 else
 {
 break;
 }
 }
 }
 
 |