飞雪团队

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

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

[复制链接]

6737

主题

6825

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
22539
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。
2 x5 g( W$ H7 O8 a0 g( D9 f8 m9 R- o服务器采用:c# 开发  
: Y' A/ B  P6 H) B/ u客户端采用:Unity2017: Z, Y( d& X- B. ?
* h0 r' d- p, v& a5 ?
学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。( y4 n! L3 Q# Q  D' c) X
课程每天会有更新,难免有一些特殊情况望理解。
  h' y0 Z- X- K/ f个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。
  {6 ^  {8 K1 H5 N8 _
* p8 D9 h4 s2 H1 f! y. B$ i. Q严格意义上来说,本课程应该是两个课程合二为一了。
0 `" r" z" ]. \/ ~  D第一个课程就是《从计算机网络都服务器编程》。
: R; |4 d# o- |' Y  N, e+ s' A; B关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:
5 `" P3 I5 D0 G/ I5 c/ F什么是因特网?
4 e* [2 c9 v! O/ K/ n什么是协议?8 g; b& I; d* @7 [$ s, A3 E8 }
什么是应用层?应用层协议?; Y+ U$ ]# T4 W% G+ V3 L, A$ k
什么是运输层?运输层协议?% \$ ~, c! `0 S) A8 r
什么是TCP协议?什么是UDP协议?
8 U* F, S. I1 B等等···5 @- c1 p2 s& [9 t+ m
(很深层次的知识,大家根据兴趣来进一步自己学习), b/ h6 e: o/ r& j; I( D
知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。; q- G, l, h" @% Z8 Z: ~6 a+ P
) J* E' C* f1 j
第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。& B0 Z6 f; Z5 U6 e; r
斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。+ I1 k. B& ]+ C8 z& T
" j  O1 |5 b' f& F8 S1 U4 P

7 @- m7 U/ {% |) a' c; U! L% S001-课程介绍
1 v1 f1 R* x% b003-因特网和协议4 j' I; m- z" M5 [
004-分层体系结构1 W/ P8 y# }/ i% b& T* O6 a
006-进程和套接字- \3 ^* D7 @+ h$ a; f
007-运输层协议TCP和UDP
8 H  B$ F5 {  R/ x+ z6 h008-应用层协议HTTP4 j" g5 i! Z6 N" o
009-socket服务端+ O2 ]0 E% Y) K& t& w' `
010-socket客户端+ H0 X  M% q" H6 k. \
011-验证连接
1 G$ b3 h, s. O012-SocketDemo8 p- D. u3 R! X5 G
013-实现接收连接的异步事件
7 e) Y/ ~$ G; `014-添加限制连接数的信号& d; n9 \( T- F8 S0 v  x
015-封装客户端连接对象和编写连接池* l0 W8 w( L! O% }
016-GameServer(8-1)  p* o% j5 ~+ g4 r! G
017-粘包拆包问题介绍
* G4 {; R5 z, ^. Y5 z) D, w018-采用包头+包尾的方式解决粘包和拆包
0 c" b) K; D  e( b* f, A# B019-GameServer(8-3)7 g$ U6 J% S, U8 f4 D
020实现异步网络接受数据6 `) S0 a. K4 Q9 I
021-客户端对自身接收的数据进行解析6 L6 o! E) D9 l' m
022-构造SocketMsg负责网络消息的传递+ i6 K$ i9 c9 |. J
023-实现soceketMsg与byte[]的转化/ Q- {1 E! ]* b  n( ]( K  n
024-对象的序列化和反序列化9 I. z( C: s. n: `
025-GameServer(8-3)_2
) v5 x( e& D1 g. O# d026-实现客户端断开连接
% J( q! z7 ?; {8 p# }6 o027-实现发送数据
" B$ l* n* U% M$ U  q* o+ m028-助学篇:带大家回忆一下所开发的内容) I4 ]. m9 v  d- o8 t' t1 Q
029-抽象出应用层
  t. {9 E* G: }; r( }$ q3 U030-GameServer(8-4)
' G6 Q" w: E0 p+ w8 P- f031-开发定时任务功能(计时器),编写任务模型
6 C. _; e3 X# }6 ?032-创建计时器管理类,监听到达间隔触发的事件* ]! v' C; g+ s. x! V3 k$ m
033-控制定时任务(计时器)的触发时间1 y; \0 S  f7 F
034-开发线程安全的INT类型
5 A3 \0 |8 B  X2 f9 d/ U( F035-GameServer(8-6). Z/ ~! w: m; U) N6 v+ H. }) @$ C
036-实现单线程池) n1 W' [1 l: ?' w1 ?6 ^
037-Unity2017下载* D: @, y4 n  [0 e9 j
038-创建工程导入素材9 J; u3 \$ O6 E7 Z+ n! q
039-Res
7 u: l2 u" f2 k' W5 \8 R040-Card(8-7)
/ t! w/ R% }  Q) F' B& `1 C5 l041-GameServer(8-7), m# z+ e6 Q% t0 g3 ^' y& Y9 ~
043-根据策划创建面板  b+ g1 n& W6 K+ e
044-导入客户端框架,创建PlayPanel脚本8 `, d$ K3 m+ X3 c
045-完成开始面板
: Q$ F: g$ R; }8 F& b046-完成注册面板' _7 e9 ?# X( c' A/ F
047-Card(8-8)2 E  [* W, P3 L! n2 u0 H. f
049-服务器架构介绍
1 ?. X0 s. E5 n050-按照架构实现服务器1 ]7 k; L: [: T9 D
051-在客户端封装Socket,使其连接到服务器) R  g4 r$ R) c3 S7 C7 [
052-测试客户端服务器的连接
" y$ \; T/ j* `; \! x8 E053-解决BUG
1 F, s0 F: O% s' b6 a054-Card(8-9)& x1 E* W* D1 X/ ^* J
055-GameServer(8-9)( |2 y5 h( u+ U' W9 h2 V" m- z1 }
056-修改客户端的链接方法6 y& X; y$ ?0 u% ]/ A, ^
056-修改客户端的链接方法_20171124142335
' K5 W" {( J; N; @0 r1 I  `057-定义操作码、子操作码,演示客户端如何给服务器发送请求1 u' _' o1 h2 l
058-测试数据传输是否正确
2 _9 \8 X  i4 F; s+ O059-Card(8-10)$ s& T* y) F0 |! I3 c0 G5 x( [- M
060-GameServer(8-10)
' A4 V+ w/ v. a) B! [0 C061-创建账号缓存层,实现注册的一些方法
4 J$ F- y" `$ K& B  S- }061-创建账号缓存层,实现注册的一些方法_20171124142334
1 a1 |  A/ s3 f: {9 k- r5 N062-完成账号缓存的所有方法
1 x" m4 l% {  x( C' F8 ?062-完成账号缓存的所有方法_20171124142334
' c9 k) l6 q1 A+ f063-实现账号逻辑层2 S' R$ s! r  c* y! N$ C; R
064-解决今日BUG
6 I3 K( G0 [  i3 O( {! F% ]065-Card(8-11)
$ s) }; H4 Z9 d066-GameServer(8-11)
9 U2 \, v6 N: E7 g/ X6 Z067-开发提示面板
& S( g7 ]2 ]9 ^# n8 x: e068-给登录和注册面板添加提示
" T. ~; c" T. D; j069-处理接收到的服务器发来的消息、优化发送网络消息的方法
1 c9 L3 A# e5 J2 |1 B& r070-实现客户端的账号处理、怎样和服务器交互(后面调个bug)
8 B7 I' b- s7 R071-优化服务器,改变传输结果
6 f' z  O! K1 U; U; ~! n072-Card(8-14)8 s: A9 `9 o- p7 l
073-GameServer(8-14)
- Q! h- X7 B$ N074-初步实现场景管理器,融入到框架中  s9 G& ]# Z$ I6 [. s
075-增加当场景加载完成的时候调用的方法
0 w9 [$ @$ L; n, U. g$ k076-实现登录成功跳转场景
: r1 H! Z( S5 K) O2 a7 B- a, S, M077-设计UI之主界面的信息面板
7 y/ M0 i1 @* D( D078-设计UI之主界面的匹配面板5 Z! n; w) }1 H' |
079-设计UI之主界面的设置面板4 J5 `8 }4 k" n* r5 ]0 R
080-设计UI之主界面的创建面板; G% t$ @! N: @% @! V" Z/ D
081-Card(8-15)  y4 T* s! j* I
082.编写信息面板5 a: N( |5 j" ]4 ^0 [3 @
083开发匹配面板" L. s+ v- g5 f2 g% E) s0 S* ]
084.修改默认创建的脚本
1 m! W& b/ I7 O5 \# v7 y- r, l085.开发设置面板7 X5 Q5 N! w' Z+ O' E9 [
086.开发创建面板
* ]: h. R. M( f0 ]( B0 V" _087-Card(8-16)
$ N/ p5 ?0 g% Y088.创建角色数据模型
% A6 B, H) u- t) j" X, _0 q3 i1 S089.开发角色数据的缓存层" k2 x" S9 m1 ?# O
090.完成角色数据缓存层/ \8 ]  P* d! K) }( O0 r
091-GameServer(8-17)5 [  S0 l% S/ F) L  u
092创建有关角色的操作码, t  F! W2 }% T* A& e/ e
093.实现用户逻辑层3 C# ?& \- u8 _/ E
094.向服务器获取信息,在客户端创建用户处理类
- g" _1 m3 k3 e2 ?% }+ W$ S095.客户端处理获取角色信息的响应5 R2 y# ?$ U) n) c$ z
096.保存接收到的角色信息并且处理角色上线响应# j% v4 Y: Y6 h* i. r
097.发起创建请求和处理创建响应
- R, }- {( y$ }! T- p2 y+ i098.演示本日BUG( ~+ r# F7 v, w& I: Z) E5 Q: S
099-GameServer(8-20)
# s+ [6 y0 X. p! S- `7 z100-Card(8-20)
6 }. i! O. a1 b8 A1 \101.更新客户端视图8 Q1 B6 D( y, t, J9 v: x) \# `- }
102-编写匹配操作码
% T* g3 [: y- T, g0 y5 h103-定义匹配房间的数据模型" h) g; ]6 l1 _) C- @8 {& A; Q& o
104-创建匹配缓存层,实现进入匹配队列
+ E/ i4 r( a1 ^9 [5 }2 F: P105-实现匹配缓存其他所有的功能* l1 s% \1 }8 l7 M& k( R6 p
106-创建匹配逻辑类,实现进入匹配房间功能
& u+ i9 C$ O/ d9 o107-优化服务器之群发消息: t% d/ D" n7 j/ f; w  O9 ~4 S
108-创建匹配房间的传输模型,在逻辑层进行构造# }& ~: a$ f5 w4 G# I
109-实现离开匹配房间功能
- O" s- y( y5 j8 c: z6 Y8 Z# s110-GameServer(8-24)/ C0 W# |& m3 F% D
111-实现玩家准备
3 O3 {1 Y& f; \112-在客户端发起匹配请求; L. Z2 A* j" _8 h
113-GameServer(8-25)
. d9 Z& I- N% l5 R1 s+ Z  i- e114-Card(8-25)
# B5 G1 v6 n5 w9 W, q8 K115-创建MatchHandler,接收服务器的响应
+ {+ G, m" }; ]& d$ {116-保存房间信息,他人进入房间广播处理
7 N$ [% u2 n; ]$ D$ k: V117-玩家离开1 g! B8 q3 V! q# E
118-玩家准备和开始游戏的处理0 C8 s6 A; H, O3 [% c- o3 X
119-GameServer(8-29)$ `* Y5 W7 h- t. s! Z8 T
120-Card(8-39) (1)
& x" m8 {% a3 d7 o+ C4 C8 ?121-搭建战斗界面的左、右角色状态面板7 J  n& x* f# k. a0 z8 t
122-搭建战斗界面自我的状态面板' f- O- V! A' }
123-搭建战斗界面上边的底牌面板. i: [. ]' {* E+ n1 G/ l7 W
124-搭建战斗界面下边的快捷聊天面板
! i2 X5 w8 v0 b1 \% C3 Z* }  O125-搭建提示面板和结束面板
  |) L# _( {. V126-Card(8-30)) I' x7 Q* Q2 x& _
127-创建出牌点,实现进入房间按钮功能
0 e! V/ M, {2 k8 a128-控制底牌显示,编写代码! k- ~8 [- z, ^' D) @+ X+ l
129-在服务器工程内创建卡牌的传输模型类
! G3 C, a+ k' s7 x2 v" N130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了)
+ o: C1 f) q# ]9 v5 u131-分别创建左、右角色的状态类(有破音)- }3 Z% j0 u% F  l& P
132-ard(9-2)
" P; |1 O  M9 s133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音), v. z. [! Q& e/ v, H
134-如何控制玩家左、右玩家位置?(有破音)/ ?& e( M' \: {  R
135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)# G0 o$ {0 E: ]; T) p9 q& m9 v
136-Card(9-4)
3 Q2 [- s8 y% r6 _. {137-GameServer(9-4)
8 |; B% r. I5 ^6 I. K: a138-解决左、右的代码重复部分/ G; X. Q4 Z! X) N- a
139-创建自身的状态面板(有破音)7 r  @. T7 R9 w
140-完善自身进入更新状态面板8 v2 M# g) v  L; j1 Z. E* _
141-CardGame(9-5)
; P1 o$ C0 o" y) A# }% Q# ^142-找之前的BUG(一)4 v3 \; Q( i" {8 y5 P
143-找之前的bug(二)) Z# e1 y) m9 n) V/ b
144-Card(9-6)9 W9 W8 F+ E% b+ h1 Q% |
145-GameServer(9-6)
, C3 V; c* N- l) O- s  b% Y146-发送自身准备的请求  L! E0 n2 M  u4 U1 d) H
147-创建下边的面板的脚本
' E9 ?7 K9 T( W& n1 O/ N: ?148-Card(9-7)
) @$ [4 ]3 y$ o% j" y. t8 X5 s( K' G149-创建聊天操作码,在客户的发起请求
! p* T4 p& |' B0 T1 ^150-服务器处理聊天的请求,创建聊天传输模型% f* H! D1 O. n: ]1 p
151-创建聊天文字的常量类
  D! X9 G, _0 d6 G/ F" e: t" I152-Card(9-9)" ^' b# C6 f, G4 f; f9 P
153-GameServer(9-9)
- x" O8 o: i. r! o- m: D# z4 c, Z154-客户端接收响应,显示聊天文字( O8 l6 q2 B* D% m, z
155-聊天声音的播放
4 N3 ^) \" ^) f( _7 n8 c156-测试聊天BUG8 B; K  W3 x" ^: q
157-Card(9-10)% j* f' m* O; P# Y" j" a& W
158-GameServer(9-10)$ u5 C! [2 R% X) W9 q+ s7 T$ \
159-所有人准备完毕开始游戏,使用中介者模式触发
7 v: p; F: @2 ?7 i160-逐层分析,创建玩家数据的传输模型1 z  u  m) v" t5 r. D
161-创建并初始化牌库,创建花色的常量类$ s) ]. q' ^5 A; x. h- S4 i
162-创建权值的常量类,完成创建牌库的过程' r9 M7 N" b; B; j1 G
163-洗牌算法,完成牌库类. p( K0 h8 e& l+ F7 _% Q- M( L' w
164-创建回合管理类/ Y+ i- r# [  L& m* R
165-GameServer(9-12)
0 G: R# Q8 H* Q166-初始化战斗房间,添加第一个方法:转换出牌
2 t) b  r7 K6 O, ^) z6 e  e- W* |" h167-创建出牌类型,判断能不能管牌2 Y) r5 X6 r, s
168-如果出牌判断成功就移除玩家的手牌1 ?5 S, ?0 B) K3 Y9 G  r
169-增加倍数和更新回合信息+ u4 _8 P8 c* Y" g
170-发牌  V% b5 p2 Q! c# x' h8 a( P
171-设置地主身份,创建身份的常量类
* E" ]) P, ~7 w5 J9 W/ X172-补充一些辅助方法,完成战斗房间所有内容
$ k0 a; R3 W$ Q4 ]173-GameServer(9-13)
6 L) r) J5 g& f% |/ F174-创建战斗缓存层  p4 B# Z# ~( E9 R
175-定义战斗的一些操作码- C0 b7 U( A! i$ j9 G( x1 c
176-编写开始战斗的逻辑
( m3 j$ R9 o7 z8 G- m' g177-关于发送卡牌集合还是卡牌id的解释
4 F0 {' B7 s( l1 K178-GameServer(9-16)0 W% `& q5 I! }& W
179-实现抢地主的方法) I$ r( U/ g) t, L' h
180-创建出牌的传输模型,获取选中牌的权值
! H6 ]* K8 A# j% [# @  q2 G/ V. }3 a181-判断各种卡牌类型6 r" w4 T% P% R6 g: k2 k
182-完成编写出牌的传输模型% d- V; K) n# r8 L/ J0 O4 `
183-GameServer(9-18)* W2 Y4 M3 O3 M* R+ O" p) J4 U
184-玩家出牌在服务器的处理
1 @, p  o2 j. z9 a: W/ n- }185-转换出牌的实现* `8 p6 f: z1 J9 g! Z
186-游戏结束的处理/ c2 c1 ?3 |$ O" D
187-不出的处理
( V" z) f# [. |188-玩家掉线的处理3 k+ B1 C: h; N
189-GameServer(9-20)
, @+ P7 ^$ ^' m: u; h190-在客户端创建战斗的处理类,编写获取卡牌的处理" I6 ]. ]3 A6 M) Z/ v
191-创建客户端的卡牌控制类( i" e, \1 B) n' z* `/ A+ Q
192-创建自身角色控制类,管理卡牌的创建1 x; S$ S8 K5 ?  _. r$ \  O8 M  Y. k
193-创建左、右玩家的控制类,管理卡牌的创建
  B, r8 a# J8 @. G: q# r; ]194-Card(9-21)
) I; Y) t- M% W) ?. v9 E/ D195-给大家录制BUG过程
4 z1 @9 r# ?. Z4 ~7 ^- f196-GameServer(9-23)6 W9 p; e& y' t2 H. b" f# A
197-开始处理抢地主的响应
# g) C; j8 \: [7 ~* _+ x! K0 N198-发送抢地主请求和抢地主成功的处理* X# A2 B1 Q; @
199-自身的玩家添加三张底牌的处理8 }* }0 ?) A$ U9 J4 L; w8 n
200-抢地主成功的处理完毕
& g5 x' `, q3 a1 s# W201-测试抢地主并修改BUG9 L. E3 ^+ ]& N5 E
202-Card(9-24)# A; i# c6 y, f1 e2 @
203-GameServer(9-24)
- D% t( d: x) j7 f8 g204-接收来自服务器的出牌命令) {6 [0 c& w, m7 N6 X7 E, u
205-客户端出牌的处理
) r. f( L* |' q206-向服务器发送不出的请求
5 P' F% V& d9 t0 L1 ^207-GameServer(9-25)
: v% x# ~8 p( b2 ]/ q* ~) |, f208-Card(9-25)% ^; f4 ^% Q: l4 ?; `3 G" R
209-给卡片添加碰撞器让他能点击
3 F# b% i! m0 {0 \; ^210-解决出牌BUG7 X' s2 f3 f- }3 S) R$ C$ I
211-移除出完的手牌2 z! q( |8 ~: q' @& w: u
212-管理桌面的牌显示6 Y1 Y" `4 T, v9 O! a
213-出牌特效声音的播放
5 d$ z' v. C) a" `; I/ R/ k214-GameServer(9-27)# I! `. V. O6 _/ [1 V5 B* |
215-Card(9-27)# P3 b9 ]# Y' c- }4 n
216-测试出牌BUG 上部
/ [) G- s0 U! @( N1 q217-测试BUG 下部1 `! P8 ~0 {/ _
218-客户端+服务器(9-28)2 g5 L: k, g+ e* d- B) X
219-创建OverPanel代码脚本8 ~8 p  N1 H4 a  {
220-通过消息机制表现客户端的结束9 A5 x8 o# ^3 o! n4 A9 `6 R
221-测试游戏结束3 @4 j+ z, p" v
222-创建背景音乐播放控制脚本
: s. K& {( U) V/ b- _223-给前两个场景添加背景音乐# P: n* X# ]3 U
224-完结与未完. o6 _/ c% e! |0 D
225-Card(9-30)( H8 x" j1 I/ s: X4 l
226-GameServer(9-30)
6 }% A: |4 [$ ]$ j9 j227-扩展课之ProtoBuf  E& l4 F3 l& X0 h
228-扩展课之ProtoBuf(10-15)下载地址:
/ |8 A, p& e+ {: S4 S. c
* H/ c" _/ Q; Y
游客,如果您要查看本帖隐藏内容请回复

7 K* h1 F7 O7 _% V. y+ y/ F' y* \3 |+ V0 \
回复

使用道具 举报

1

主题

501

帖子

1825

积分

VIP会员

积分
1825
发表于 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

主题

235

帖子

1519

积分

VIP会员

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

使用道具 举报

0

主题

218

帖子

1391

积分

VIP会员

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

使用道具 举报

0

主题

247

帖子

2166

积分

VIP会员

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

使用道具 举报

0

主题

199

帖子

1404

积分

VIP会员

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

使用道具 举报

57

主题

236

帖子

1376

积分

VIP会员

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

使用道具 举报

0

主题

995

帖子

3805

积分

VIP会员

积分
3805
发表于 2018-11-4 16:36:46 | 显示全部楼层
: p( x* B9 W/ [& W: t8 a. H* L' i
多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-6-14 22:44 , Processed in 0.084529 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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