飞雪团队

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

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

[复制链接]

9168

主题

9256

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29834
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。
& v% m7 B0 W$ q0 d7 n! d! h服务器采用:c# 开发    N$ K# Q5 `+ b! g; ~
客户端采用:Unity2017
  i* [& u$ z0 b- U# ~) {9 t
2 P! X# H% i# ^  J' r学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。7 I; Y6 l1 X/ @! {: u" F% p
课程每天会有更新,难免有一些特殊情况望理解。1 Y6 |- {% ]5 b5 x: E) N
个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。
8 s9 y  y2 b" t" b, M5 Z9 B# `- c' g0 A6 k4 z& [* e
严格意义上来说,本课程应该是两个课程合二为一了。" D- R0 [4 H2 K
第一个课程就是《从计算机网络都服务器编程》。
+ P" y9 h3 K( j: k% y- W" _关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:! ?8 P6 W/ J: t
什么是因特网?& j: q# V9 g+ C3 H
什么是协议?- D* X; _. H/ {. g) [
什么是应用层?应用层协议?
8 K9 X# M! V3 S7 g什么是运输层?运输层协议?
, J5 L+ q1 L  I* @% F8 u; S  Q什么是TCP协议?什么是UDP协议?( A9 G- p1 b- c# C
等等···
8 h/ E6 H; e) r(很深层次的知识,大家根据兴趣来进一步自己学习)0 X  n- {: L3 R: K) S
知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。, d9 f2 N2 q! J5 O  N, H1 m+ o

) q0 c/ Y  s6 a3 ~1 g7 i: m第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。
6 X0 i* O5 u0 q# H; _/ Y& |: b斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。
: M+ N* k% a% L7 o3 ?3 P& F6 ~* _; f% j6 e: A4 X  h

5 _5 B0 F  M& Y$ Z: B* {, r5 }001-课程介绍
3 x$ x0 P4 V' m0 Y003-因特网和协议5 G" g# Y. D) J
004-分层体系结构
$ Q+ i' O3 w, u1 o$ ^4 W% t006-进程和套接字
# n/ r# k8 t4 t9 i' l/ C& G007-运输层协议TCP和UDP
+ e0 k6 s$ C1 ~1 I  B+ P, c7 B9 G: m008-应用层协议HTTP7 ^0 W+ Y: j/ d; i0 ?$ ~
009-socket服务端
$ S* Z  h3 S$ ^9 t# V, w% _010-socket客户端- W% O8 ?- Y# \3 F
011-验证连接
9 Q' k3 B. Z; h7 n3 H/ M; ?8 y012-SocketDemo
: h7 v" `6 k- z- k0 f7 H# K! k9 F* u013-实现接收连接的异步事件* O! x' m, N3 @4 V& C- r
014-添加限制连接数的信号
$ ~0 y2 C# q$ @6 m: v9 X- ^015-封装客户端连接对象和编写连接池
2 h: n9 Z% `; `5 I' N0 V016-GameServer(8-1)
9 B/ h$ G7 E4 B  @8 S/ b. |" R% P017-粘包拆包问题介绍
  B% w& w% \* F9 R3 t, `* q018-采用包头+包尾的方式解决粘包和拆包
5 r' ]8 ^% L& b- M- k019-GameServer(8-3)5 d8 D9 M; l) B+ j( ]0 y6 I, p/ ^$ i
020实现异步网络接受数据: v3 P; B$ C. m: E
021-客户端对自身接收的数据进行解析; h% s. w( F. h) A  a: U
022-构造SocketMsg负责网络消息的传递! p: T. a( Q/ j# D
023-实现soceketMsg与byte[]的转化
/ u/ _# q4 x; }4 G$ n4 U024-对象的序列化和反序列化9 w# v8 d* |! Q) E" e9 g: p3 c. M
025-GameServer(8-3)_2' |# p7 j8 R1 ?: e* Q" G$ \- t5 H
026-实现客户端断开连接
/ Z2 n3 }$ u" A( u1 e027-实现发送数据
& a- f. _( Z( [3 {$ W! \028-助学篇:带大家回忆一下所开发的内容
: t6 U3 G( }+ {3 X0 V1 N# U, R; a( J029-抽象出应用层" Q6 W2 i$ x8 |3 n" y
030-GameServer(8-4)' y, g8 S  k1 P4 G7 Q5 u  c
031-开发定时任务功能(计时器),编写任务模型
* q# }( F. w. b+ X032-创建计时器管理类,监听到达间隔触发的事件; \8 @2 h* F4 `; v( N
033-控制定时任务(计时器)的触发时间
7 E* F) c: D9 x& g; q* G5 a034-开发线程安全的INT类型
( \6 L( s" y# ]* p, ^035-GameServer(8-6)
1 N4 o! {6 j! W/ H( A5 z6 t036-实现单线程池
1 D) G# l2 X$ n037-Unity2017下载
6 E4 ^7 H2 Z$ x- Y+ p; i038-创建工程导入素材
% \8 A0 i3 z* G039-Res
! `8 n( q+ ^2 j' `0 n040-Card(8-7)
. q) c. `- B4 m; K4 Q+ ]9 W5 t0 L041-GameServer(8-7)
7 n1 p$ C9 J2 [- h# A043-根据策划创建面板0 Z: H% y: F/ h8 n9 ], C" G7 o- B9 F
044-导入客户端框架,创建PlayPanel脚本
; G$ b" {% O9 O1 W: Y# K045-完成开始面板, p; R! N$ d9 L8 O! z! F
046-完成注册面板
# ~. p* H+ Z( M& v/ F6 O5 a3 M% _047-Card(8-8)5 @0 J; j3 e$ E7 V( j: v8 |4 e
049-服务器架构介绍0 X3 d4 _4 b  O& {
050-按照架构实现服务器
' K9 }( u* f7 z$ Z/ N) O# \4 ^6 x051-在客户端封装Socket,使其连接到服务器
, D+ L' O$ P5 H3 l052-测试客户端服务器的连接
' Z; J" ^: G2 J3 _053-解决BUG" c  Y4 [7 T' v' W5 h4 G) M; c7 }
054-Card(8-9)4 _2 p7 O3 v1 N8 K+ b) k6 _# [
055-GameServer(8-9)
% v3 L$ l- v8 h  R, y7 I056-修改客户端的链接方法; u" l3 L  I0 P$ D
056-修改客户端的链接方法_201711241423356 M( \) w7 n3 k7 i6 Z
057-定义操作码、子操作码,演示客户端如何给服务器发送请求
- @& ~9 B6 W. Q6 e0 c: ^' P$ \- t" Q! R058-测试数据传输是否正确- w) C# r9 Z5 [. t( S4 B
059-Card(8-10)9 a7 h' m4 ?& l$ T
060-GameServer(8-10)
( V. n* t  Z6 m" Y1 M8 Y061-创建账号缓存层,实现注册的一些方法  A+ U! w1 ]- w9 B. c$ D- a8 V" U3 o
061-创建账号缓存层,实现注册的一些方法_20171124142334
5 B$ f/ p/ T- h/ o062-完成账号缓存的所有方法
* n, r& I7 f$ j, z8 d2 X062-完成账号缓存的所有方法_201711241423348 k! }8 l) z7 L8 t" U
063-实现账号逻辑层3 D! z) U2 B- c9 Y
064-解决今日BUG
! R: U$ |: m: x# v8 c065-Card(8-11)
) [0 e% t- x$ q) n. w0 V$ K066-GameServer(8-11)
1 k% I" ~# X% v# B# A6 Y; C067-开发提示面板1 S8 P  a! G! _1 E8 E$ B0 u  X
068-给登录和注册面板添加提示% l8 u1 f4 _1 K1 a
069-处理接收到的服务器发来的消息、优化发送网络消息的方法
6 P* E% I3 ]* b% p+ C4 O5 l070-实现客户端的账号处理、怎样和服务器交互(后面调个bug)5 J- g% \' Y5 Q& Z0 m( X
071-优化服务器,改变传输结果
1 p5 E3 a) U6 v072-Card(8-14)2 K2 b, x9 E) J/ g. _' D$ S* z
073-GameServer(8-14)
; y! @5 Y& ^# z* E074-初步实现场景管理器,融入到框架中! F7 B3 L4 d/ Y( R: S, V
075-增加当场景加载完成的时候调用的方法8 }$ X% q. U, P5 `) F
076-实现登录成功跳转场景
# U5 C: o" t1 G/ f6 r3 Y: `: y077-设计UI之主界面的信息面板
0 N  n. j: {. I2 }- C. \1 c078-设计UI之主界面的匹配面板
3 p5 c/ w# X; ~( \079-设计UI之主界面的设置面板
& c& }2 S* E: c080-设计UI之主界面的创建面板
& p+ }( {6 N) p0 A- M* p081-Card(8-15)' R  F1 a. ^  }0 v/ H; |
082.编写信息面板5 M- V% T# c4 G0 Q( O* z
083开发匹配面板1 E) K+ @% j) }4 w- w! a/ q$ x
084.修改默认创建的脚本
- X0 S& ?3 t+ a  U, t9 {085.开发设置面板. w% ~- \. j5 @
086.开发创建面板) L, V' R9 P; d, `
087-Card(8-16), W& @8 M/ @. L
088.创建角色数据模型
# v2 y4 m- q  w089.开发角色数据的缓存层, H$ L4 c/ Y' @1 z) q
090.完成角色数据缓存层
) ]5 y3 ~$ z  K0 J, v091-GameServer(8-17): {7 [* v( _: l7 W. _9 |
092创建有关角色的操作码( Z7 v! m- E5 Y3 p+ J
093.实现用户逻辑层; p+ r# b6 R* ?: n/ \
094.向服务器获取信息,在客户端创建用户处理类  b" R& X0 c' ^
095.客户端处理获取角色信息的响应
" G4 k' @  n" {% A! G096.保存接收到的角色信息并且处理角色上线响应
9 X, O2 ~* B+ U8 N) N/ P$ t$ X097.发起创建请求和处理创建响应
$ {" k# g, \8 V098.演示本日BUG
" m7 ?, X( q# `! l099-GameServer(8-20)  d# n! J; X% C( h+ U& k; f
100-Card(8-20)
) e6 c, v9 ~! H* A101.更新客户端视图% Y) o! F1 R' A5 ]
102-编写匹配操作码# y5 C: p8 S# L! y
103-定义匹配房间的数据模型( V* p) u4 C% |0 e
104-创建匹配缓存层,实现进入匹配队列
3 |% N" P! Z% {1 N" c105-实现匹配缓存其他所有的功能
& {: z$ n0 d# A106-创建匹配逻辑类,实现进入匹配房间功能
$ Z, j& T; m/ ~; M  V, p- d107-优化服务器之群发消息
( f# ^( ~( N4 I6 V/ c, }  T) t108-创建匹配房间的传输模型,在逻辑层进行构造
* L+ l! J0 E' M2 X  f8 k% l109-实现离开匹配房间功能7 h2 p4 r: F$ X, N8 m
110-GameServer(8-24)
& d1 D' v' {3 A, \" Z' L3 f9 C111-实现玩家准备7 F2 I0 y1 e; W# `# H
112-在客户端发起匹配请求
' S5 W, V! l0 r( X8 Z1 `113-GameServer(8-25)
  \) M) s, ^/ I9 `6 ]. A114-Card(8-25)
4 a- I" ^+ ^$ ~115-创建MatchHandler,接收服务器的响应
" s% l0 [& D) {) A3 ?116-保存房间信息,他人进入房间广播处理0 a5 I/ s6 m3 g, B
117-玩家离开& v0 e" {% O( X3 g& ?5 D
118-玩家准备和开始游戏的处理4 ^& {! G* C4 U8 }& O% w9 T+ z
119-GameServer(8-29)% h, Q* N6 h: b( T9 w+ `
120-Card(8-39) (1)
9 N3 j& L% K$ r0 \1 H9 y121-搭建战斗界面的左、右角色状态面板, ?6 P5 f6 f0 [2 H7 I9 r3 ]
122-搭建战斗界面自我的状态面板
3 ]% j+ ~' Q3 t( H123-搭建战斗界面上边的底牌面板5 X4 o+ W( b; x1 \- E  E
124-搭建战斗界面下边的快捷聊天面板  l. N1 Y" [( J1 L: S
125-搭建提示面板和结束面板
# C1 H2 i7 S# I4 o' C( t126-Card(8-30)# x9 r& M# C. R0 f
127-创建出牌点,实现进入房间按钮功能5 o( f1 p4 f& q( k+ l5 c+ C* u: L/ T
128-控制底牌显示,编写代码
3 T" g1 U  j2 X129-在服务器工程内创建卡牌的传输模型类' v2 ^' g# h- b& j3 U
130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了)) J7 L, T. Q/ R5 t9 O% ?1 X" l. i& Z
131-分别创建左、右角色的状态类(有破音)
) w( z' D) j+ e4 t" s4 Q132-ard(9-2)
3 ^- }% w4 I' @133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音)
3 P6 n* L: t* z0 u134-如何控制玩家左、右玩家位置?(有破音), o. z* D! V9 }$ y
135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)
, \) L6 A  u' Z5 u7 x; t136-Card(9-4)
: n+ t( ?* P) |0 ~0 a; c137-GameServer(9-4)
  s- L+ b8 P, H% v& u5 o138-解决左、右的代码重复部分
: @$ @. w$ R0 P/ V# w6 C139-创建自身的状态面板(有破音)2 d* ~! J$ E) M9 I6 [+ T+ }
140-完善自身进入更新状态面板$ ]: m& ]1 L  C' k0 V
141-CardGame(9-5)
  E+ u! S/ X8 y  S6 S1 L142-找之前的BUG(一)
" \9 R# ~/ h# ?! N5 R. v0 S/ Z143-找之前的bug(二)+ X( [. {( n$ \
144-Card(9-6)
0 b% u8 w3 |( y+ v+ g% N" i145-GameServer(9-6)
! A: l" n6 i, E. S( ^146-发送自身准备的请求# k. n/ g* C9 G8 k
147-创建下边的面板的脚本
( M& B7 O8 {4 N$ A148-Card(9-7)
+ l' k5 U5 f0 K/ X- [7 ^149-创建聊天操作码,在客户的发起请求
/ j+ O" Q7 \# _" W150-服务器处理聊天的请求,创建聊天传输模型
: y8 {2 t7 Y3 x- @151-创建聊天文字的常量类
, }  S1 K; q# e! o' A. B" i152-Card(9-9)% q; b) A3 D) k% z/ W' D2 M
153-GameServer(9-9)- T* n# B7 U1 e, m0 ~8 D
154-客户端接收响应,显示聊天文字
( S  y& D( z' T5 p9 t$ g/ D155-聊天声音的播放
( h* W0 L$ J8 Y; |6 r7 D( L& _, E7 [156-测试聊天BUG" u( V$ n  \! D2 T7 ^
157-Card(9-10)+ a; P7 ~$ k3 V# Y
158-GameServer(9-10)+ F2 c1 L! J# |
159-所有人准备完毕开始游戏,使用中介者模式触发
6 X. ~* P3 p3 \6 T160-逐层分析,创建玩家数据的传输模型( X  C) X5 j1 H9 h
161-创建并初始化牌库,创建花色的常量类9 s) ]9 ?. w' O" K
162-创建权值的常量类,完成创建牌库的过程
9 i) K( O+ P% V163-洗牌算法,完成牌库类
3 q: P( A/ K2 I164-创建回合管理类
& E: V1 L; M3 S( `/ U165-GameServer(9-12)
9 ^" \& _+ \& o+ B5 X1 @0 C0 Q166-初始化战斗房间,添加第一个方法:转换出牌( `3 L$ J& M2 @$ z% T% `& D" i
167-创建出牌类型,判断能不能管牌! P" Q1 d# z& m2 m9 K+ J' t* y
168-如果出牌判断成功就移除玩家的手牌+ W% n7 ]! z3 u0 p2 O4 H: W
169-增加倍数和更新回合信息# W7 x3 k3 U( V" z' w9 g
170-发牌
) y" Y4 j( {4 n# j. V2 G171-设置地主身份,创建身份的常量类& c7 C9 u* C" `6 U9 ^
172-补充一些辅助方法,完成战斗房间所有内容4 j( E- r0 x9 E" `6 J& H
173-GameServer(9-13)8 \4 F) _* H: c3 r$ `$ n
174-创建战斗缓存层
1 Z. G/ q+ ~' \! p, }4 P175-定义战斗的一些操作码
7 y6 h0 v3 R: Y4 @5 ~! q176-编写开始战斗的逻辑
! h# u6 E5 T3 {+ N  P6 z, i1 ]: ]177-关于发送卡牌集合还是卡牌id的解释# o4 S. q. ^# O9 K( q) g1 f- G
178-GameServer(9-16), E! G$ T4 S  ^" @/ U
179-实现抢地主的方法% B  p9 Z" Q' U' |& D; ]
180-创建出牌的传输模型,获取选中牌的权值
6 o- j! X1 I1 w. t3 {- E181-判断各种卡牌类型
, U2 a0 R; }5 Z) z& w% `1 v& L# A6 h182-完成编写出牌的传输模型
& y! r2 G) w1 k; Y$ P7 A& |4 P183-GameServer(9-18)
6 O0 w/ F3 U( Q1 w* p$ ^4 L184-玩家出牌在服务器的处理# n9 Y; q/ m: I* z# Q8 T
185-转换出牌的实现
3 }3 d* f1 B! H, Y! P' i! y! j186-游戏结束的处理) _7 V* `# k- K4 z
187-不出的处理) S$ g- _' s. h" a
188-玩家掉线的处理1 M+ L3 x( A4 a( h- t& a- Y
189-GameServer(9-20)* t4 c  f- E1 i- t2 z5 h
190-在客户端创建战斗的处理类,编写获取卡牌的处理
+ V! Q. `; p! h: r/ s% |191-创建客户端的卡牌控制类
& K- t; e  q. Y9 k192-创建自身角色控制类,管理卡牌的创建0 a2 I8 N7 y/ @
193-创建左、右玩家的控制类,管理卡牌的创建
% u$ o. O& F3 f6 l) X194-Card(9-21)
0 O/ T8 F  z& Q8 e1 I195-给大家录制BUG过程% y$ N* |0 ]7 ?0 W4 I4 M( s" Q+ l
196-GameServer(9-23)( g, O% ^% e- J/ j: M, p, m
197-开始处理抢地主的响应; u+ F* |6 _* b. x
198-发送抢地主请求和抢地主成功的处理
# J" |( ?! H; g& C' D199-自身的玩家添加三张底牌的处理2 {  K& Q* k% Z+ d. v( L
200-抢地主成功的处理完毕
7 c5 v" H: \9 [0 h; K201-测试抢地主并修改BUG2 Y# I7 f# p9 p' |3 w% F
202-Card(9-24)
8 v. ]9 I0 f+ H& s203-GameServer(9-24)- G% i0 J1 n2 H* N, q0 v
204-接收来自服务器的出牌命令0 n  h4 a( e0 c4 r; R  u
205-客户端出牌的处理
- t5 b) s0 C9 S) E3 F206-向服务器发送不出的请求
0 S. `, f+ z) H. x/ |6 [207-GameServer(9-25)  d5 C0 I2 \% m/ b& ?  z
208-Card(9-25)
7 Y" P3 Q9 T9 Q0 k+ x209-给卡片添加碰撞器让他能点击# u, i4 t6 \/ J& f8 c. q
210-解决出牌BUG
3 {9 L& N- l2 b$ Z; ]211-移除出完的手牌
% x2 B' Z$ A, \: g9 ]$ F6 _' r+ D212-管理桌面的牌显示" a& `  p& e( X
213-出牌特效声音的播放
* @+ v* f& q9 B' H# t. w$ F9 M" u214-GameServer(9-27)3 S/ V! w8 s8 m9 v8 v* [
215-Card(9-27)
- L5 W( d8 C* H- {3 n216-测试出牌BUG 上部) R1 G% o6 ]8 p8 L  F/ ]6 E
217-测试BUG 下部/ \, b" i# J  J5 A" S+ u
218-客户端+服务器(9-28), z! p% Y* i  o* y% K) `9 L' {$ M
219-创建OverPanel代码脚本$ v2 ^& l" {( o' H
220-通过消息机制表现客户端的结束
3 V% c7 E) r9 E! w221-测试游戏结束
$ M3 n+ \" }+ w222-创建背景音乐播放控制脚本
2 O: Q0 H8 ]- u$ H9 `! e) u$ G223-给前两个场景添加背景音乐- m- c& w, W7 z! M# r8 H
224-完结与未完
8 a" u2 @6 w3 A% J6 p2 T225-Card(9-30)0 E* n5 r+ X; M6 F9 Y
226-GameServer(9-30); S" L5 B* V/ a& b
227-扩展课之ProtoBuf
' M( q1 c+ n9 l2 K7 O% q4 g# o228-扩展课之ProtoBuf(10-15)下载地址:
, q, Q+ M% l" U( y
- v# u, `* \4 ]
游客,如果您要查看本帖隐藏内容请回复

" H$ S' q; U  t' Z, b# ?
" q/ f* `( P* [& s: a" o  |' h1 N% Z
回复

使用道具 举报

1

主题

501

帖子

1837

积分

VIP会员

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

主题

243

帖子

1557

积分

VIP会员

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

使用道具 举报

0

主题

218

帖子

1391

积分

VIP会员

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

使用道具 举报

0

主题

247

帖子

2170

积分

VIP会员

积分
2170
发表于 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 | 显示全部楼层

- X) {8 L8 @2 O多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-9-1 23:44 , Processed in 0.136828 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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