飞雪团队

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 25953|回复: 11

多人网络斗地主开发实战基于(Unity2017)

[复制链接]

4137

主题

4225

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
14711
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。
0 M6 H5 l) I+ w/ A1 ^3 W7 y" Z  L6 |服务器采用:c# 开发  : L2 A, H- A5 ~" {  q
客户端采用:Unity20173 f2 o4 m* R: o6 L

1 _0 \. {2 l* h7 \学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。
& T3 Z, @6 u! S* E( ?6 K课程每天会有更新,难免有一些特殊情况望理解。
, Q; P6 W; v6 n( u+ o4 T7 N个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。" H( O/ V3 E/ V! Y! K$ u2 m

) v- ]  Z" U6 s- D严格意义上来说,本课程应该是两个课程合二为一了。$ }$ f7 s, w0 r
第一个课程就是《从计算机网络都服务器编程》。+ m7 L7 `9 g. g( H4 }8 g
关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:5 L; _' ?/ T! \7 a0 T
什么是因特网?1 i$ n, [1 c& A) I
什么是协议?
# t: ~  o% @' B6 |$ W* A什么是应用层?应用层协议?% x: b% M3 v2 T- `
什么是运输层?运输层协议?! B' e0 p/ g8 d& {0 m8 w
什么是TCP协议?什么是UDP协议?
, E! u  {) R8 g+ G9 U0 x) Y等等···
' y/ x4 h- v, X% C- R$ i1 k(很深层次的知识,大家根据兴趣来进一步自己学习)
! ?$ v8 V( f( ]9 h) _* i知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。; r" M9 _( q8 ?

- u3 m% G/ D: H* h第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。
; N' [/ N+ o" N! b斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。
4 H" @& [2 g# ?2 f* c6 @6 p, z! E7 Y6 o, a0 _, a9 F. m! g
$ A* L. D+ B3 Z: Q
001-课程介绍; N4 p, V" k7 e' [% C% f/ E. D
003-因特网和协议" G# M+ V, }8 y6 a
004-分层体系结构4 {0 r& V, X7 z2 {" f: d# y
006-进程和套接字; T7 F) ^; `- }- c- D, X  x
007-运输层协议TCP和UDP5 y! T! K6 D2 u! S
008-应用层协议HTTP; B) t( _; U' a1 H* Z7 Q4 U  b' u
009-socket服务端
; K" V7 l7 x4 r# t$ N. ~010-socket客户端/ E! |  C2 a* t: e6 m; c% |% C" |
011-验证连接
, r  }9 j+ [0 c3 M012-SocketDemo
( h8 K9 w5 d' F5 }: B3 ?* Z3 v, u1 S013-实现接收连接的异步事件
6 o6 L5 I' m& k/ o014-添加限制连接数的信号
# S- p3 R) G7 V* Z015-封装客户端连接对象和编写连接池
) M4 e- V( S9 p" L9 b3 ~016-GameServer(8-1)' [9 _, v( x* L8 o% U- r
017-粘包拆包问题介绍% M. F4 c) D" C, c! G7 R6 t% x: e
018-采用包头+包尾的方式解决粘包和拆包4 ]& p  }; E5 F% F( K% h$ p, c: o! R; U
019-GameServer(8-3)) j% Z! N: S, s2 w  s- K8 I
020实现异步网络接受数据8 E. F( E- t6 G
021-客户端对自身接收的数据进行解析( t& e) a- V3 O1 X$ O0 q, J% \- l7 M
022-构造SocketMsg负责网络消息的传递
/ \8 d+ q$ m% k; ^) R3 f1 q  C$ I023-实现soceketMsg与byte[]的转化7 z* ~7 Y, _& D" k" g" n
024-对象的序列化和反序列化
+ `+ X& U; z% m# g025-GameServer(8-3)_20 n& t# n* u, L8 t, Q" D& l
026-实现客户端断开连接3 p& D8 K4 U0 [  ]! E4 h
027-实现发送数据9 E7 Z7 e  y8 `9 }" B
028-助学篇:带大家回忆一下所开发的内容* O. _9 M" X- o& E
029-抽象出应用层, v2 M) r% D) y! E
030-GameServer(8-4)8 o# M3 m9 b2 Q* y7 `& ^" |3 Z
031-开发定时任务功能(计时器),编写任务模型3 f3 V# K; r* v1 }. q/ q
032-创建计时器管理类,监听到达间隔触发的事件' [% @4 X3 W4 t/ V
033-控制定时任务(计时器)的触发时间" x7 E: ]/ V  R7 S( V
034-开发线程安全的INT类型
7 p' d' G' C* ^( m8 P6 e$ i6 O035-GameServer(8-6)5 O' o/ O; V3 ]* j
036-实现单线程池
" ?: k0 c0 f( }5 ^037-Unity2017下载9 l1 N7 b2 w+ c2 c4 I4 v
038-创建工程导入素材3 w* p8 U# j, @- N# D
039-Res
# J) B2 R2 x1 t+ @2 k8 ]0 f  V/ f& h$ y040-Card(8-7)& v& c) G8 _5 H4 o. f6 @/ n
041-GameServer(8-7)
# I5 l. x* a/ P. H043-根据策划创建面板* d& C* Z6 K$ c
044-导入客户端框架,创建PlayPanel脚本/ E/ p% Z% W$ B$ E0 J" [, i& I
045-完成开始面板
+ N& L$ {/ F" r6 c' F" w7 n; {046-完成注册面板
) B+ a$ I+ @6 o. E047-Card(8-8)4 S2 A  _+ b; k3 V3 R6 J; V0 F
049-服务器架构介绍; Z" Z* S. s( O8 J) j( d8 E; o
050-按照架构实现服务器' v7 z1 F& N0 k( }2 d% A
051-在客户端封装Socket,使其连接到服务器' p# n: e# j; U9 v- z+ j" U$ o" o
052-测试客户端服务器的连接% |* W0 r8 n6 @; h6 |7 G% b. O
053-解决BUG
/ _6 Q; e/ V" x! D3 M0 p054-Card(8-9)
  ^  F. s! I1 ~' h4 U0 F055-GameServer(8-9)
( Z4 o, C5 S( M" e* p! k  f056-修改客户端的链接方法3 J+ R+ Z( K$ d, ]- b
056-修改客户端的链接方法_20171124142335
" G( P% z  p$ q4 B- F057-定义操作码、子操作码,演示客户端如何给服务器发送请求, a6 L* m, b3 {3 j& N
058-测试数据传输是否正确( Z! H" o* ]; E% J. n5 C& f
059-Card(8-10)
. p+ L' U8 B" C% J4 N, N5 V; W060-GameServer(8-10)
. Y+ j0 E5 H9 B+ ], m; i# T+ M4 ], C061-创建账号缓存层,实现注册的一些方法
: q& m- [' I7 |* I8 I) t061-创建账号缓存层,实现注册的一些方法_20171124142334
  i6 h) N- b) G6 B7 j062-完成账号缓存的所有方法
% x* m8 I5 s: u2 A& Z3 H062-完成账号缓存的所有方法_20171124142334
/ P; S4 V  _& s3 `; c063-实现账号逻辑层
' u/ N- c& {) W  o. g3 @064-解决今日BUG) d* f' T+ E. {* M" Y. Z% E$ v
065-Card(8-11)) ]# m$ B# P/ I2 C
066-GameServer(8-11)
8 b& Y% `2 S* ]: C% z067-开发提示面板( t) ~! M+ j/ j
068-给登录和注册面板添加提示& O2 x7 M, S: W5 t) O% }! U; U
069-处理接收到的服务器发来的消息、优化发送网络消息的方法0 Y- c: G# L' |8 a' [5 Y* N
070-实现客户端的账号处理、怎样和服务器交互(后面调个bug). N: F. [" F- j0 z
071-优化服务器,改变传输结果" S7 _) v( Q  N. S
072-Card(8-14)2 Q: V$ D+ ?" P) h0 O
073-GameServer(8-14)
9 F' g) F. Q  K5 U074-初步实现场景管理器,融入到框架中' o6 @9 F9 ?( W! P; R! |5 q" ]& T) G
075-增加当场景加载完成的时候调用的方法
! L$ |. v  P3 A3 x6 u% q076-实现登录成功跳转场景
, e; ]# p; @1 F5 d077-设计UI之主界面的信息面板* {0 R" w$ r5 {$ ^2 Q3 n+ E* Y
078-设计UI之主界面的匹配面板
2 c, r  j& t/ O: x8 M079-设计UI之主界面的设置面板& w( X. F' b- P0 }
080-设计UI之主界面的创建面板
( F, I( m; P5 k( `' R8 O4 S081-Card(8-15)
1 ?4 t. ]( E7 I3 q082.编写信息面板
( ^$ A& f1 n+ f7 N6 }083开发匹配面板' e3 g/ Z/ b" b
084.修改默认创建的脚本9 s6 Y7 K1 c* r7 O2 f. @
085.开发设置面板
8 B- }3 p+ ?" u5 K. K; s/ Q/ K086.开发创建面板
' c& \% N5 a. u. i087-Card(8-16)# l2 N" _# t: F: ]
088.创建角色数据模型
3 K2 z- M$ ?+ n5 T( W1 R089.开发角色数据的缓存层4 p% [: a. K; m$ e1 `
090.完成角色数据缓存层
' k! E( G. ?( m7 }- y091-GameServer(8-17)
. g+ i* W& E1 f1 C  x; t092创建有关角色的操作码
. Q; c7 n3 _, e6 M093.实现用户逻辑层! W) @  D  |  `  N( s' D
094.向服务器获取信息,在客户端创建用户处理类- Q; Q3 p. h1 k9 K* O
095.客户端处理获取角色信息的响应
( }* N4 N  T$ v! ~5 Q# ~096.保存接收到的角色信息并且处理角色上线响应
3 t& m; x$ u, h4 l, [; x097.发起创建请求和处理创建响应
9 l8 e5 s$ e' F8 W1 C  S: y098.演示本日BUG& a. U( E- G0 }" L
099-GameServer(8-20)
( f: m3 H0 Z, h& ~) Y( h100-Card(8-20)
* X( {$ {( F: w- [( l101.更新客户端视图
$ N+ i% F. F6 `% }102-编写匹配操作码* `; y+ g1 T; r; w
103-定义匹配房间的数据模型5 ]7 [2 q, e( l9 m( t
104-创建匹配缓存层,实现进入匹配队列7 O1 R! T* b1 B0 R
105-实现匹配缓存其他所有的功能0 o$ U7 G/ _3 d
106-创建匹配逻辑类,实现进入匹配房间功能' P4 ?/ T1 e! H& I! k* i
107-优化服务器之群发消息
. Z+ g" x/ }3 E% A7 C1 t2 p108-创建匹配房间的传输模型,在逻辑层进行构造
/ H/ a) Z$ D& w2 ]' u7 i/ n109-实现离开匹配房间功能
; _7 D( x" J5 L* r110-GameServer(8-24)
" W0 Y* F3 T! m, y: F7 D111-实现玩家准备& G  _) o3 H5 @/ w
112-在客户端发起匹配请求
. _( R3 E3 e! \7 [/ l8 Y1 W113-GameServer(8-25)2 o3 B( `6 [  p
114-Card(8-25)
$ e( R- A' ]8 E7 U' x115-创建MatchHandler,接收服务器的响应
1 U0 D5 G8 s: |; T! j116-保存房间信息,他人进入房间广播处理+ r0 ]/ N$ p' a/ u9 \+ p" E
117-玩家离开
) w$ |1 q% T) H4 ~. _118-玩家准备和开始游戏的处理9 F4 x/ l( T3 i& a6 L  e
119-GameServer(8-29)
0 h9 ^" O: F4 I/ h120-Card(8-39) (1)4 R0 s& Y" M9 n' T. u/ m9 h0 {
121-搭建战斗界面的左、右角色状态面板
" R3 B& @* u: [" U122-搭建战斗界面自我的状态面板
5 @6 t" V( L) [% D; a( V123-搭建战斗界面上边的底牌面板
; p( @9 C5 Z" C. F! m124-搭建战斗界面下边的快捷聊天面板4 q  z+ A+ n' H1 [
125-搭建提示面板和结束面板
0 ]& }+ S; X0 p0 y4 b126-Card(8-30)$ D) T; p0 n0 @' n0 b/ w
127-创建出牌点,实现进入房间按钮功能& w' P1 H$ P3 J: w) Z9 X  B% z: G
128-控制底牌显示,编写代码3 U, |& {+ P1 E8 i
129-在服务器工程内创建卡牌的传输模型类
3 {2 b8 Q5 e' m; e# _& |6 `130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了), t& a* b7 w1 \( d" Q
131-分别创建左、右角色的状态类(有破音)" |; e8 j" a* D% y* G
132-ard(9-2)
1 D. B, h/ F5 ~! K: j133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音)5 M5 }7 u% I# [- z' u7 x! ?3 U
134-如何控制玩家左、右玩家位置?(有破音)/ R2 n8 }8 v6 j& w7 H
135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)+ |/ E# K6 l" K1 v
136-Card(9-4)4 ^+ `1 M+ ^% `2 {; {) y
137-GameServer(9-4)& b; o- `. p3 s; n
138-解决左、右的代码重复部分
& T6 x; s$ l$ b: z1 e! q( g0 g139-创建自身的状态面板(有破音)
9 G. M/ ~4 j8 b140-完善自身进入更新状态面板
3 m/ T  W: `- L141-CardGame(9-5)
' X; }2 n3 ?' G142-找之前的BUG(一)
) j2 p6 T# B$ g143-找之前的bug(二)! G. A% p3 n) b: ?7 Y* r
144-Card(9-6)( {! F8 S* ?2 H" k4 A9 a+ B  w
145-GameServer(9-6)+ Q+ I7 K7 N. g5 U* t1 Q
146-发送自身准备的请求( C. L% T3 Z2 U4 B; x+ V; ?: G1 d
147-创建下边的面板的脚本
. Q% Z, C  b( @+ _  Q" }) z* O2 |148-Card(9-7)
3 |& [9 C1 Q  ]7 A# t8 d% P2 a149-创建聊天操作码,在客户的发起请求9 Z4 y( q4 ~% c5 k1 w' T
150-服务器处理聊天的请求,创建聊天传输模型
" R- J$ ?+ M" I3 _9 [  w4 F151-创建聊天文字的常量类+ ~; }: q/ y; o" @$ B
152-Card(9-9)
4 D. u: r4 G0 K' F/ g) r153-GameServer(9-9)  M0 J, ]( [2 l& p5 C  t1 d
154-客户端接收响应,显示聊天文字
- a! _3 X! D% P* z155-聊天声音的播放
7 Q5 Z- O+ F- M156-测试聊天BUG
- S* b- T7 f7 I- v7 ^- u. [157-Card(9-10)
' X, |( \; R: a' Q158-GameServer(9-10)
& c$ E, g/ ?! j; W& w159-所有人准备完毕开始游戏,使用中介者模式触发, M  x' G  }# k. o) K$ B* I2 Z- V
160-逐层分析,创建玩家数据的传输模型
! S/ b" P/ m  y8 ~- {161-创建并初始化牌库,创建花色的常量类
6 V  V4 v* \/ G% d162-创建权值的常量类,完成创建牌库的过程- t0 Y0 w1 J. t2 l) j1 I. X' K
163-洗牌算法,完成牌库类' ]) o' ?, z0 I8 a2 Z- b; `
164-创建回合管理类
( G* _+ E6 x6 H165-GameServer(9-12); i' O5 A1 A* h" u! p) C
166-初始化战斗房间,添加第一个方法:转换出牌! n9 j2 R9 u' b  u& k, V* {
167-创建出牌类型,判断能不能管牌
( G1 {: t" b* J9 Y% k5 Q7 [168-如果出牌判断成功就移除玩家的手牌: ~* T6 B) e. k; X; L
169-增加倍数和更新回合信息
0 W4 V: M3 V" y0 _170-发牌
' u# k: Y- u* p1 v171-设置地主身份,创建身份的常量类2 g3 Y4 o" ]+ m4 T) R( D
172-补充一些辅助方法,完成战斗房间所有内容: k% z+ t% P3 A4 z) r4 b
173-GameServer(9-13)
0 \4 H- f" _" C/ f# z174-创建战斗缓存层
6 {. D7 R; G; g. q" d175-定义战斗的一些操作码4 e9 Y' h& e, w3 k; `3 x
176-编写开始战斗的逻辑, |0 q1 m: l8 q$ K$ K
177-关于发送卡牌集合还是卡牌id的解释
( v+ B0 R% N: O3 K; m9 A" e178-GameServer(9-16); T7 ]" e) r- r
179-实现抢地主的方法, L5 K) U9 m( R" W8 Q& k
180-创建出牌的传输模型,获取选中牌的权值
/ M6 ^$ x# w0 U) ^  o# z1 [' }181-判断各种卡牌类型
, L3 H0 Z  {" Q& T( w  R182-完成编写出牌的传输模型
. W; P3 n, |! ]# c4 q183-GameServer(9-18)
/ h2 j- o: u' o8 g! ~1 X184-玩家出牌在服务器的处理, R9 {3 L& L# F7 _) K
185-转换出牌的实现6 K6 m9 G5 h* F0 ]" ^- a. ]* ]. Y, k
186-游戏结束的处理
( `' }3 [' l' v. d5 {3 n( f187-不出的处理
- ?! m% w6 u: B. u8 p188-玩家掉线的处理; s; c3 H3 ]; m, W9 v1 n. `4 d
189-GameServer(9-20)" \# G9 P5 d0 I! g. a$ N; E
190-在客户端创建战斗的处理类,编写获取卡牌的处理' o  H6 ]4 Y5 o
191-创建客户端的卡牌控制类
$ U. X+ n5 O! s, U1 \2 _  z7 P- ]192-创建自身角色控制类,管理卡牌的创建
1 Z5 ]% t' S: t5 H193-创建左、右玩家的控制类,管理卡牌的创建
6 j+ |% y( W' Y  R194-Card(9-21)
7 R* n% g7 I* b195-给大家录制BUG过程3 y/ |; F& K) K3 l! K$ L
196-GameServer(9-23)
1 h; U' o$ k0 J' m4 V* J" y197-开始处理抢地主的响应
" a$ O& J" a9 k/ a: [6 E198-发送抢地主请求和抢地主成功的处理
5 Q9 J6 S( W1 x( h5 P199-自身的玩家添加三张底牌的处理
& _# ?/ l! X5 l3 }4 q9 ^# ]# d200-抢地主成功的处理完毕6 H; k; Q$ d2 m9 b# a
201-测试抢地主并修改BUG
* L9 v* [. ?4 K: C4 s+ |# T6 C202-Card(9-24)
& c) x! H6 }: Y- l; o) v3 G203-GameServer(9-24)' X  L; u: s8 C: R
204-接收来自服务器的出牌命令
# f& S9 a/ W! C$ H* o- X205-客户端出牌的处理
  {9 Z+ N/ S3 k206-向服务器发送不出的请求6 G. c9 \$ F$ ?  \
207-GameServer(9-25)4 a0 n$ z$ l; H9 C
208-Card(9-25)
1 H  d- c) v7 P* K209-给卡片添加碰撞器让他能点击
3 j9 a/ O- X3 \+ n% N7 c210-解决出牌BUG
$ h9 X& T$ ^! M1 Q7 k8 z211-移除出完的手牌* k3 b5 x) {* S) k* o, j
212-管理桌面的牌显示! y! g. q6 F; ~& g) L
213-出牌特效声音的播放# I  t( g! O& @
214-GameServer(9-27)/ }5 s% u! k' u; K
215-Card(9-27), }2 k2 S  k; }' w8 z
216-测试出牌BUG 上部
! d% m$ V3 o' q, y6 r217-测试BUG 下部
. U2 p) J# m1 Q218-客户端+服务器(9-28)
2 m8 k$ R) _7 F. u3 t( S219-创建OverPanel代码脚本
' f( A! V+ Z4 U+ s# [: ^0 @* c220-通过消息机制表现客户端的结束/ S5 c7 N" a3 e; h
221-测试游戏结束
( d9 ~  @# i$ j7 n% [0 Q, A; \222-创建背景音乐播放控制脚本7 _+ D& d$ l1 v+ t1 s+ K$ k
223-给前两个场景添加背景音乐
3 J9 v1 |; `' x2 U9 K224-完结与未完
' Y* P; J8 _1 R  m. c$ B4 G225-Card(9-30)
) d1 A+ O$ m0 y5 h* u- r- Y, n226-GameServer(9-30)3 I4 k- N9 S% F  U
227-扩展课之ProtoBuf- Z6 y7 f& d# r5 p& {! e
228-扩展课之ProtoBuf(10-15)下载地址:
& r4 l, U) |, V, J# h4 f9 [
6 U6 q' q* U2 p
游客,如果您要查看本帖隐藏内容请回复
; \0 e! O5 Y. |6 t* c

7 K, {4 p) r; g
回复

使用道具 举报

1

主题

501

帖子

1821

积分

VIP会员

积分
1821
发表于 2018-8-18 17:14:05 | 显示全部楼层
多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

0

主题

148

帖子

1259

积分

VIP会员

积分
1259
发表于 2018-8-23 14:39:08 | 显示全部楼层
感谢飞雪团队分享如此好的资源。
回复 支持 反对

使用道具 举报

0

主题

756

帖子

1728

积分

VIP会员

积分
1728
发表于 2018-8-24 05:12:38 | 显示全部楼层
实在是难得一见的好贴啊!
回复 支持 反对

使用道具 举报

0

主题

220

帖子

1463

积分

VIP会员

积分
1463
发表于 2018-8-26 10:15:01 | 显示全部楼层
感谢飞雪团队分享如此好的资源。
回复 支持 反对

使用道具 举报

0

主题

218

帖子

1391

积分

VIP会员

积分
1391
发表于 2018-8-26 22:13:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

246

帖子

2156

积分

VIP会员

积分
2156
发表于 2018-8-28 17:51:06 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

199

帖子

1404

积分

VIP会员

积分
1404
发表于 2018-8-29 00:24:38 | 显示全部楼层
感谢飞雪团队分享如此好的资源。
回复 支持 反对

使用道具 举报

57

主题

235

帖子

1372

积分

VIP会员

积分
1372
发表于 2018-10-25 21:23:29 | 显示全部楼层
感谢飞雪团队分享如此好的资源。
回复 支持 反对

使用道具 举报

0

主题

995

帖子

3805

积分

VIP会员

积分
3805
发表于 2018-11-4 16:36:46 | 显示全部楼层
) I$ M! g7 q' I$ f+ J( [: w+ I, a
多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|飞雪团队

GMT+8, 2024-4-26 19:10 , Processed in 0.095436 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表