Просмотр исходного кода

KCP,设置output,PC跟linux需要改一种写法才能正常运行

tanghai 7 лет назад
Родитель
Сommit
59778c770c
1 измененных файлов с 13 добавлено и 2 удалено
  1. 13 2
      Unity/Assets/Model/Module/Message/Network/KCP/KChannel.cs

+ 13 - 2
Unity/Assets/Model/Module/Message/Network/KCP/KChannel.cs

@@ -50,7 +50,7 @@ namespace ETModel
 			this.socket = socket;
 			this.kcp = Kcp.KcpCreate(this.RemoteConn, new IntPtr(this.LocalConn));
 
-            Kcp.KcpSetoutput(this.kcp, KcpOutput);
+			SetOutput();
 			Kcp.KcpNodelay(this.kcp, 1, 10, 1, 1);
 			Kcp.KcpWndsize(this.kcp, 256, 256);
 			Kcp.KcpSetmtu(this.kcp, 470);
@@ -145,7 +145,7 @@ namespace ETModel
 			this.RemoteConn = remoteConn;
 
 			this.kcp = Kcp.KcpCreate(this.RemoteConn, new IntPtr(this.LocalConn));
-			Kcp.KcpSetoutput(this.kcp, KcpOutput);
+			SetOutput();
 			Kcp.KcpNodelay(this.kcp, 1, 10, 1, 1);
 			Kcp.KcpWndsize(this.kcp, 256, 256);
 			Kcp.KcpSetmtu(this.kcp, 470);
@@ -388,6 +388,17 @@ namespace ETModel
 			}
 		}
 
+		public void SetOutput()
+		{
+#if ENABLE_IL2CPP
+			Kcp.KcpSetoutput(this.kcp, KcpOutput);
+#else
+			// 跟上一行一样写法,pc跟linux会出错
+			Kcp.KcpSetoutput(this.kcp, (buf, i, ptr, user) => KcpOutput(buf, i, ptr, user));
+#endif
+		}
+
+
 #if ENABLE_IL2CPP
 		[AOT.MonoPInvokeCallback(typeof(KcpOutput))]
 #endif