飞雪团队

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

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

[复制链接]

8135

主题

8223

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
26735
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。: e# @& m  h  n
服务器采用:c# 开发  
3 r" B# i+ b; \" _1 P客户端采用:Unity20172 ?/ R: Q4 b4 U( g- o  Y# }! t

! V/ @8 M+ g" P! w9 J学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。
' B8 e2 _6 L4 p, a课程每天会有更新,难免有一些特殊情况望理解。' S0 Z3 _# y% u
个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。% n5 |" s- a" x/ C

6 q& p- |$ B6 E4 N& N. x* ~8 |2 i/ L- i严格意义上来说,本课程应该是两个课程合二为一了。
5 N6 [' A( p& C3 p, K5 p第一个课程就是《从计算机网络都服务器编程》。
$ S% l  k! z9 @8 _  d8 M关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:
5 t% e/ k% h! K. n, U1 j  [( x什么是因特网?8 A3 c2 B2 o  y, `! {
什么是协议?
! n2 ^5 n. @( f3 S% B: [什么是应用层?应用层协议?
# x8 _2 j4 m% |# H, Y# H8 Z  x) n" Q什么是运输层?运输层协议?' X5 c) Q3 s6 @0 H; X
什么是TCP协议?什么是UDP协议?, s2 E: Q5 \7 |
等等···0 g0 P3 Z6 x# S6 E3 D; }
(很深层次的知识,大家根据兴趣来进一步自己学习)/ n$ b2 \( Z: U/ p. D1 x
知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。& g2 A8 w; g. O

) `* ]) ]: B8 m( h第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。/ L. S  q2 L3 @
斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。  q6 j& f; l5 ?  C6 o; \
' @' k3 j# F9 Y+ F
. a& E/ U2 [  {  t; H
001-课程介绍
+ m6 s3 m# M% ^! {4 S) W& }3 w& k003-因特网和协议
' F2 q6 I5 m; n004-分层体系结构
$ y1 w+ O! }/ v6 e006-进程和套接字+ h& G7 W6 g$ V% W6 {. h( f3 F
007-运输层协议TCP和UDP
& {2 U; Z  f$ p( n/ u9 t' n5 Z008-应用层协议HTTP6 M* e% X6 E8 @( p& @! `
009-socket服务端! {$ Q% c1 b9 w
010-socket客户端5 P& c4 d6 `  X1 u, G1 b3 E- r
011-验证连接
8 Z  A) Z) u5 @8 U: Q8 `1 i) H% F* @012-SocketDemo9 \' P$ _4 C4 b
013-实现接收连接的异步事件7 Z5 o0 P0 G9 h2 K- [& l
014-添加限制连接数的信号$ G. J, T6 w6 s% K" s
015-封装客户端连接对象和编写连接池) f! u; K0 P# u, C
016-GameServer(8-1)* l  [, ]8 i& l3 ]% q. j
017-粘包拆包问题介绍" U, Z# j+ B% }* v# Q+ e
018-采用包头+包尾的方式解决粘包和拆包) }2 Q" M; @9 f1 N) [/ L, n
019-GameServer(8-3)( X  W0 i; i4 ~
020实现异步网络接受数据
9 x( D6 M& p9 R$ j5 S* e021-客户端对自身接收的数据进行解析4 A% Q4 \) k* l
022-构造SocketMsg负责网络消息的传递
+ M7 f% A& \: v1 T0 Y* a023-实现soceketMsg与byte[]的转化  N8 ^( A$ `6 l0 I6 v! s' I
024-对象的序列化和反序列化
2 P; O) e; n4 {( }/ k1 p# i025-GameServer(8-3)_2
2 ~; k. f$ J8 E2 F! U8 l7 E) x026-实现客户端断开连接8 J8 [  m; I. j: d; i
027-实现发送数据8 `' N# `; y; i& s: l
028-助学篇:带大家回忆一下所开发的内容
) r$ D) ~4 p$ D029-抽象出应用层, f$ F* i$ z3 O4 T0 T
030-GameServer(8-4)
0 k- R* @0 _% |9 f/ p. m/ \7 n+ f031-开发定时任务功能(计时器),编写任务模型
; _1 l. d  {- f. D+ i  k( T032-创建计时器管理类,监听到达间隔触发的事件' m7 h& s/ a% r7 Y4 b
033-控制定时任务(计时器)的触发时间% I( k: I1 L* i9 m- W# ]+ s
034-开发线程安全的INT类型0 h5 A) Y& J% }4 Z! g  A) \
035-GameServer(8-6)
# c5 f) z5 Y' m" J$ H036-实现单线程池' I7 {1 s/ L9 N
037-Unity2017下载
9 P1 G! A8 \; f1 _; h# X% W038-创建工程导入素材) x3 l0 u7 p; E  ^  i* v; K
039-Res
) g3 ~9 A0 Y. n8 C8 ~8 Y' I' o040-Card(8-7)
. ~3 M# [+ i5 I) |& x& ?041-GameServer(8-7)
8 g' R% i$ C/ m9 X* S043-根据策划创建面板+ i$ p5 r) M* h1 H# {7 [
044-导入客户端框架,创建PlayPanel脚本$ e: z) O, A, J. v- C8 D8 m( i0 f2 }
045-完成开始面板
) O- i: [$ e- a+ ?046-完成注册面板
, m0 [7 r$ Y! `0 }9 `047-Card(8-8)
% g3 O2 k- O0 V8 Y- ~049-服务器架构介绍" {$ x$ u0 G" L1 a4 m3 v: m
050-按照架构实现服务器
/ v( T' J  M2 P051-在客户端封装Socket,使其连接到服务器: T" u) Q0 w  x% O: M- |
052-测试客户端服务器的连接8 z8 D1 S% N" G* d) R
053-解决BUG
) B  @  H0 B0 i1 Z2 E; X054-Card(8-9)
9 j! ^8 t# I+ z* J5 _055-GameServer(8-9)+ p+ z- c) a$ c- t7 [+ p! e
056-修改客户端的链接方法8 m, e* @4 k0 g# F' x4 u
056-修改客户端的链接方法_20171124142335
  Y: [, x: {9 G- p0 u057-定义操作码、子操作码,演示客户端如何给服务器发送请求
. K; k" q& ]' g5 M, l058-测试数据传输是否正确
, V, R# U6 c/ P  @, D059-Card(8-10)0 q$ d1 e4 g: _0 K! B; z- D1 F
060-GameServer(8-10)
3 l3 ^& e0 z3 M061-创建账号缓存层,实现注册的一些方法
9 Q' F: a6 J4 p' f* C* z, \, K061-创建账号缓存层,实现注册的一些方法_20171124142334, `2 `6 k' y3 K, W/ G  ~) d. X: H$ T
062-完成账号缓存的所有方法5 ~% M+ {( b; v( U
062-完成账号缓存的所有方法_20171124142334/ x3 g+ m/ Y6 r+ ?
063-实现账号逻辑层6 q/ \8 I/ F% D5 f1 F
064-解决今日BUG) Y( q; V* t$ d4 i$ i, y1 B
065-Card(8-11)
+ N2 B/ H* W7 d! q. |2 d066-GameServer(8-11)3 F) C# \( W3 P3 W0 u
067-开发提示面板
# I5 m) D' K: ]068-给登录和注册面板添加提示3 E, H5 v8 M* q$ T! j/ J. w8 S& u
069-处理接收到的服务器发来的消息、优化发送网络消息的方法
. W! ~3 C) G: r) d: C070-实现客户端的账号处理、怎样和服务器交互(后面调个bug)5 C+ g9 q+ t+ D" t
071-优化服务器,改变传输结果1 R" u9 [3 Y- p; N: Q, ?
072-Card(8-14)
: J$ F! }5 w! W7 m* e$ V073-GameServer(8-14)
, }, Z; n0 M1 K; c* x  y% A5 v6 s074-初步实现场景管理器,融入到框架中3 ~* U6 F6 f( \3 U$ E
075-增加当场景加载完成的时候调用的方法
( C3 Q$ l- r6 n' i0 I076-实现登录成功跳转场景
( Q& W2 H) b5 A. e& e% \* ?1 i077-设计UI之主界面的信息面板# K1 G. V# ]0 r1 T: V
078-设计UI之主界面的匹配面板$ u  C9 l) D. H$ v
079-设计UI之主界面的设置面板7 J% `1 l' y" o
080-设计UI之主界面的创建面板/ G& n( C$ F( I- x1 S3 ^
081-Card(8-15)
9 U3 B. y7 Q7 s0 v* z082.编写信息面板6 S! I5 K9 m6 f$ h
083开发匹配面板* Q+ N) T$ r0 S
084.修改默认创建的脚本) N; |+ ^8 k' |0 U9 L  O
085.开发设置面板
2 y6 N( o8 G  V086.开发创建面板2 [" J7 ^; [7 V% O! K$ j. m
087-Card(8-16)
' R' b9 g$ p% s* R3 m! a; j# W088.创建角色数据模型& A. Y+ `8 o. s* r3 E
089.开发角色数据的缓存层
# w9 \: y# {2 M* w$ Q3 t3 m8 y090.完成角色数据缓存层4 |! L+ h" d+ P+ r4 D  g
091-GameServer(8-17)$ F+ Z' h" u: S9 x) w, [
092创建有关角色的操作码# r7 W/ _& y# J8 z9 G# h0 q* o) m
093.实现用户逻辑层
3 f2 T7 d  i9 u1 i- k* Z$ [094.向服务器获取信息,在客户端创建用户处理类
% r5 [1 ^! h# q9 P095.客户端处理获取角色信息的响应4 }: q" c! R: b
096.保存接收到的角色信息并且处理角色上线响应
1 s8 i# i* ~4 q. h$ o097.发起创建请求和处理创建响应. g  v3 _% k$ M
098.演示本日BUG
# n( ^7 ]8 H- q/ d, j1 \4 f- Q099-GameServer(8-20)9 t2 a* H' f3 w; P3 b8 q* Z2 B- v  ^; m
100-Card(8-20). E$ V6 j% Q% r
101.更新客户端视图
. n$ C9 k8 _5 F- E; z102-编写匹配操作码+ y9 W2 W8 w& Z2 g) w7 X- ^
103-定义匹配房间的数据模型. N) A  E3 I5 V: A2 ^$ G
104-创建匹配缓存层,实现进入匹配队列
8 R% Y; G( v' k# V! \105-实现匹配缓存其他所有的功能5 V. _; R* ~4 b& W
106-创建匹配逻辑类,实现进入匹配房间功能7 c7 ^. \6 x% L: J8 T
107-优化服务器之群发消息
$ z1 y' b$ j+ R" s9 {4 C( \  p108-创建匹配房间的传输模型,在逻辑层进行构造
+ U% q8 O9 W: P109-实现离开匹配房间功能7 c" K- O! J& j$ s: i9 z
110-GameServer(8-24)* L1 S3 h* y9 h9 k9 e
111-实现玩家准备
( Q! J$ ~& |8 D  c112-在客户端发起匹配请求
* H: @0 h9 {$ D0 Y113-GameServer(8-25)
9 z' L( _$ \; D- c, ~) j. E114-Card(8-25)* u6 [  H2 v+ W; s- u- ]
115-创建MatchHandler,接收服务器的响应
+ d" x7 D% ]1 \) M1 s3 \0 I116-保存房间信息,他人进入房间广播处理; }% _) y3 ^- _! f* T6 |
117-玩家离开6 [; J9 _+ k  h
118-玩家准备和开始游戏的处理' y" l* |: _! \. w7 W) M/ Q/ Z
119-GameServer(8-29)
$ J8 J/ e1 {7 W120-Card(8-39) (1)
) O, P9 S) G$ }0 U( w& s6 m121-搭建战斗界面的左、右角色状态面板
5 Q, r& r* l6 W. w! C122-搭建战斗界面自我的状态面板
; P; w2 D. D, s' y123-搭建战斗界面上边的底牌面板
+ k- s" ^0 T/ T; G124-搭建战斗界面下边的快捷聊天面板
& Z' D4 P! A1 R8 K" E125-搭建提示面板和结束面板' \- B  |5 s& M+ U1 _! z0 K/ H0 l
126-Card(8-30)9 G- G; i. p/ H2 _* m, V; @( ]
127-创建出牌点,实现进入房间按钮功能1 i/ o+ D6 S% p
128-控制底牌显示,编写代码
! ~( s3 x5 a1 `3 l  y5 M" j- M. x  \129-在服务器工程内创建卡牌的传输模型类/ {5 ]2 ]' l6 Z- p/ n5 K5 w& B
130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了)
! z; f7 A0 p( [0 L2 Z& U/ \" _. {131-分别创建左、右角色的状态类(有破音)# j# z/ a/ r. E2 X4 Z& c1 G/ J
132-ard(9-2)- k4 e( |) E1 a. n/ Z
133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音)* J! x  V! f5 v) F
134-如何控制玩家左、右玩家位置?(有破音)0 L  ~. H' L8 Q- s* I. P: d) j. |
135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)4 b8 G8 {) J" G
136-Card(9-4)
& d% d* d5 [2 R7 B8 A% I) ?+ a137-GameServer(9-4)
: Q- C, q7 b7 }- z138-解决左、右的代码重复部分
8 g) M- I. @& I  H139-创建自身的状态面板(有破音): y" B  ]3 v' Z* \& a3 ~+ v. n
140-完善自身进入更新状态面板
/ T* p! B1 L3 i( E2 A141-CardGame(9-5)9 B0 ]; A$ n) V" [1 T! h! I
142-找之前的BUG(一)
' F2 K' F$ t$ ?143-找之前的bug(二)
& e, d- ?2 h% z$ T1 C3 R144-Card(9-6)
( c$ o2 m3 A+ R8 ]. h1 U$ O% a145-GameServer(9-6)( f4 [8 j5 V7 Y: C. n6 a
146-发送自身准备的请求7 w4 |5 P- ]% n% I4 O
147-创建下边的面板的脚本+ c; U: T* h; c  F  A. a7 {
148-Card(9-7)
1 I& O1 @$ o0 h8 i2 p. V149-创建聊天操作码,在客户的发起请求1 |. N- \$ l, Y" O
150-服务器处理聊天的请求,创建聊天传输模型8 Q  ^) C. F9 \. W9 A9 F+ e: N
151-创建聊天文字的常量类6 h1 m: J6 o( v! `: j
152-Card(9-9)$ V# Y; q, i' L  e4 U+ Y
153-GameServer(9-9)
- K& z* n% ]9 T# O, ~154-客户端接收响应,显示聊天文字# p; A2 b, D2 |! j  c. C
155-聊天声音的播放1 X  M: c3 Y' o4 b/ e- M! j" B4 x2 t
156-测试聊天BUG
' y  k& O" E3 T8 e" G157-Card(9-10)) r& `! Q% z( @. f) |
158-GameServer(9-10)
' i& n: y3 s7 [+ F4 `' A159-所有人准备完毕开始游戏,使用中介者模式触发
( ^) Z, C2 ]) h; E' t  R4 g2 X160-逐层分析,创建玩家数据的传输模型6 p6 V! R! h$ W9 c, ^, Q
161-创建并初始化牌库,创建花色的常量类
7 ?, u5 Y$ Q; B! l, v) f* ?162-创建权值的常量类,完成创建牌库的过程
9 W( R% d; T: `% w5 @/ a163-洗牌算法,完成牌库类
1 P  }- r# ?9 T  U+ A: o- Z164-创建回合管理类
$ e. V) ~4 n, a- T165-GameServer(9-12)
2 S4 W2 ?0 ]8 i7 t/ a5 F166-初始化战斗房间,添加第一个方法:转换出牌$ C2 ~- v4 H8 q+ E( z
167-创建出牌类型,判断能不能管牌, A6 `" Q% ?$ p5 t+ W
168-如果出牌判断成功就移除玩家的手牌6 l# A$ i) E) H1 I1 T7 O+ h* _4 q
169-增加倍数和更新回合信息5 H- \9 f* e' h1 [: `* Q: y
170-发牌/ D$ i! k. w0 W' O2 C
171-设置地主身份,创建身份的常量类
* W, c; L" I7 T' X& ]0 F4 R  D9 F172-补充一些辅助方法,完成战斗房间所有内容9 `; ^5 w5 m+ x" X
173-GameServer(9-13); h# J! J. n4 S6 q7 n* q8 O
174-创建战斗缓存层
8 W/ _# {5 y/ @; K- t3 p3 G9 s175-定义战斗的一些操作码
/ m  h2 O9 H+ F" Q* i0 h& \0 ^176-编写开始战斗的逻辑, h1 I. [) u: P( {0 N
177-关于发送卡牌集合还是卡牌id的解释) U$ C" R' E1 P5 g
178-GameServer(9-16)
. Z+ @* Q  \, u179-实现抢地主的方法" A, i0 m2 Z) V. l# M% o5 U
180-创建出牌的传输模型,获取选中牌的权值
4 B6 p, ]. d0 M( s$ O181-判断各种卡牌类型
/ L. m6 D, }- o; T  {0 k$ Y8 \182-完成编写出牌的传输模型
: ]! y; E1 X# v& O183-GameServer(9-18)
2 h5 A- w1 g& i1 X184-玩家出牌在服务器的处理4 a/ n6 U: x* J. x- F. J$ ^% E
185-转换出牌的实现
2 U0 O) U4 O$ C, R186-游戏结束的处理5 _6 w- R( U# r6 e2 l
187-不出的处理" s) m+ E; c9 e# S2 k- @  ^/ i
188-玩家掉线的处理, P0 R' B$ i) A3 {( f$ v8 U
189-GameServer(9-20)
1 |7 g3 ?* W5 Y190-在客户端创建战斗的处理类,编写获取卡牌的处理/ g2 ?! s& R6 d: f# ~/ A; v* n; m
191-创建客户端的卡牌控制类6 ^3 k0 g" d  u6 p+ Z
192-创建自身角色控制类,管理卡牌的创建9 x3 q6 H6 ~9 Y7 W" l# K* \3 H' M# S
193-创建左、右玩家的控制类,管理卡牌的创建
5 r# L9 u9 B& ?. k9 G9 h194-Card(9-21)
) _3 w+ X: a* ^# V# Y* G195-给大家录制BUG过程; V! O8 v+ I" w2 G! |9 _8 _" y" V
196-GameServer(9-23)
+ i/ U! t5 C# z8 u" _1 r* r, }197-开始处理抢地主的响应
& S* X: n+ G, h4 b198-发送抢地主请求和抢地主成功的处理
6 j5 E* h+ q  T  \199-自身的玩家添加三张底牌的处理/ N! i/ p, ^8 }& v0 Q
200-抢地主成功的处理完毕# ]' i0 B9 B4 @8 B
201-测试抢地主并修改BUG  Y; X3 i9 H6 F
202-Card(9-24), P" p9 ]4 z" F  D$ O, p# l
203-GameServer(9-24)
" C' S) K" I. e; Q8 b1 X6 E  G204-接收来自服务器的出牌命令
0 H1 s* {- ^# J5 F$ Z) c' F205-客户端出牌的处理1 \6 m! p+ x: x( u7 s! K3 e
206-向服务器发送不出的请求
! U; F* I4 k$ C: H% ^207-GameServer(9-25)+ |* n/ l/ p  l+ r0 |
208-Card(9-25)
) [) t3 _' y/ P7 b% S6 u209-给卡片添加碰撞器让他能点击
& M5 J: m2 s+ ^- o9 j* D210-解决出牌BUG: }4 U2 k2 H7 w3 |
211-移除出完的手牌/ f7 E- X0 A/ [. Q  H* y
212-管理桌面的牌显示
$ R) u9 ^# ^% v& [. b213-出牌特效声音的播放
$ o( Y- o8 S, r1 ^  i214-GameServer(9-27)
  ~& ]2 N+ h* ~4 N- k1 V215-Card(9-27)
# A9 c% d7 \5 w216-测试出牌BUG 上部
1 T: g% v' n+ D217-测试BUG 下部: y7 p0 E& a) G% Y* [% o2 |
218-客户端+服务器(9-28)5 n: e1 O  \7 \7 y2 R
219-创建OverPanel代码脚本
) q' C7 F* O: O! I- K+ `, A220-通过消息机制表现客户端的结束8 }+ c1 `6 Z% \' Z$ Y: n% y, Z
221-测试游戏结束
7 w6 l4 G* W5 O( a; q8 ^4 E222-创建背景音乐播放控制脚本
, ^" u; q( A; p# _4 k& F( j- E+ r- J. h223-给前两个场景添加背景音乐1 ~, ^8 Y, P" M! Z& [
224-完结与未完
6 s  v# b0 P* g3 a. U225-Card(9-30)+ P% k" v2 M  e2 M) \
226-GameServer(9-30)
3 J6 [: `% S5 I. e' F$ u227-扩展课之ProtoBuf
0 ^  t) l6 n) U, @: b- A228-扩展课之ProtoBuf(10-15)下载地址:  D' h" \8 ]$ d$ c* g+ R% u
% h: U7 @0 J6 R' p* b1 E/ S
游客,如果您要查看本帖隐藏内容请回复
. J; j! H$ O6 v$ b& d1 A/ h7 E

8 ]0 L+ r) C& w( o
回复

使用道具 举报

1

主题

501

帖子

1827

积分

VIP会员

积分
1827
发表于 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 | 显示全部楼层
: U& P1 V* ?& w7 q) c6 R
多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-1-2 20:07 , Processed in 0.089700 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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