飞雪团队

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

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

[复制链接]

7583

主题

7671

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
25079
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。
) K5 o$ l' t& Z1 D  p4 a6 x5 Y+ D服务器采用:c# 开发  
+ e$ X$ L9 k3 R: p& M客户端采用:Unity2017
! p1 k1 v. D6 K& p" x; g: G! m  ^
, P8 b% v9 s* K/ B* x学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。
  J" [* i! `; H0 c# a, F/ h, \课程每天会有更新,难免有一些特殊情况望理解。
, [- l# l& [0 h3 y' l- ~个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。
" V- R8 S; }" G& F4 u& `
/ _& J$ ]0 p4 Z1 F/ i( B严格意义上来说,本课程应该是两个课程合二为一了。2 s) w; h/ y0 ^7 m! @  M' U
第一个课程就是《从计算机网络都服务器编程》。
! `0 `4 ^1 s" _. v4 W! a关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:
3 I5 m5 E& [% c9 F5 s; G什么是因特网?0 }) D' ^* w+ e, A8 }
什么是协议?7 }4 {& d2 g. B: S; F# h' b
什么是应用层?应用层协议?
+ Q) V- \6 j7 j4 t! E( g; W什么是运输层?运输层协议?
5 z( x. j* y% M; S什么是TCP协议?什么是UDP协议?
) g% S/ s) V' R等等···1 v4 O3 P+ ~$ k, H2 Q/ R
(很深层次的知识,大家根据兴趣来进一步自己学习)
5 V% J' i: _2 W% q知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。
/ A: E# M5 ^6 Y. U" R1 }2 N( f# s# b/ M9 p
第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。
  r. W4 e3 U8 B% |* t- \斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。
6 l$ ~1 O) x8 S6 r5 T
9 e; {2 O% M2 d4 m4 Z4 e! F. Y  f: D2 N2 E+ Z
001-课程介绍
; K! m& A2 }/ E- X% T2 ^  n. q# [% x, |003-因特网和协议
" Z/ c1 F& s/ {  {004-分层体系结构% b$ K0 h# V# X# o
006-进程和套接字5 f- Z9 a; H9 }7 N* A' K* @" e/ i2 d- k
007-运输层协议TCP和UDP7 r# o' H" O, ]' N
008-应用层协议HTTP
( X9 N: l- m  c+ u7 i009-socket服务端
9 F6 y1 B$ T# a( ^% ?+ E010-socket客户端
: n! `' k; v' r( [011-验证连接
3 V% P2 |1 t4 ?2 }012-SocketDemo. m  q, S1 X1 ]7 k9 G, i5 {4 n
013-实现接收连接的异步事件7 {5 g% E% _( r$ C0 n8 S
014-添加限制连接数的信号
% k. v8 T6 e  Z) J; B& t# j015-封装客户端连接对象和编写连接池  M4 u# {. P+ o, A3 j
016-GameServer(8-1)
% ^. X9 Z5 [, D5 t017-粘包拆包问题介绍
; y3 q/ E, I' E+ Z& A018-采用包头+包尾的方式解决粘包和拆包
" p3 k4 g- u& I019-GameServer(8-3)7 O8 K, O# }" D
020实现异步网络接受数据2 D/ l' x8 K) B8 S  W" |
021-客户端对自身接收的数据进行解析
5 O  M1 Q, W& h( k" P" |022-构造SocketMsg负责网络消息的传递
, @9 ?$ r7 E! ~* Y$ h  m023-实现soceketMsg与byte[]的转化
- [- Q* h* |) C: g, I7 J024-对象的序列化和反序列化8 I% E! J8 y7 p. E0 X9 L
025-GameServer(8-3)_2
% i) _/ @0 b. C! B7 A  O026-实现客户端断开连接- U. w7 u' C& I
027-实现发送数据
6 h# b; q. j4 a8 o028-助学篇:带大家回忆一下所开发的内容
: ]* ?% C$ [3 Z" p7 t8 A029-抽象出应用层
! r) [0 e8 b) a# o/ ~7 F' P030-GameServer(8-4): J8 ~- n1 U3 ~' d: y2 T6 c7 a
031-开发定时任务功能(计时器),编写任务模型, h6 [3 T  i+ w# M# E' l$ |0 q$ \
032-创建计时器管理类,监听到达间隔触发的事件
/ P: h# t2 t; T+ \4 G033-控制定时任务(计时器)的触发时间$ @# Y. I- Q$ f7 U/ p% C1 a- E" G
034-开发线程安全的INT类型
, m! n" C) U& p8 p035-GameServer(8-6)2 X) S2 g8 E, s0 g2 M4 L) T- }9 U6 e
036-实现单线程池- K! G1 T9 y& N0 _3 d  V& n
037-Unity2017下载+ {. ]& m+ ~; I6 R
038-创建工程导入素材
% b" u1 s, N! }, F) }, M. K& p039-Res
1 c* S. h! S$ K/ x" w7 c040-Card(8-7)
( J( s# _3 d1 b  i- f041-GameServer(8-7)
$ y$ R( u0 U6 V/ [043-根据策划创建面板. f6 r& m+ G$ p9 J9 D
044-导入客户端框架,创建PlayPanel脚本9 O0 N% Y9 n7 v" Y; A
045-完成开始面板
+ e; Z2 w3 B! w4 J$ r1 W5 w046-完成注册面板
* n. b: j# b) s0 u% |047-Card(8-8)
% {- ?0 m6 }2 R% y049-服务器架构介绍* T9 v7 e+ h, \3 [  d& @4 J
050-按照架构实现服务器
# n1 o  |9 y% i1 r+ O5 S051-在客户端封装Socket,使其连接到服务器
( K' V' x( H. x7 s052-测试客户端服务器的连接/ w+ P+ @- Y+ K$ o( g4 {: s
053-解决BUG% z/ k$ }2 `3 f: C
054-Card(8-9)
2 G4 v$ ]+ {+ l055-GameServer(8-9)+ n: j1 Y5 c& G& h
056-修改客户端的链接方法) P" b8 n% b' e) Z, v
056-修改客户端的链接方法_20171124142335
9 u' O" Z* I5 e057-定义操作码、子操作码,演示客户端如何给服务器发送请求) ~- d- T& Z  U! h
058-测试数据传输是否正确
; C/ b7 _/ n  [059-Card(8-10)
! I% d! E! b6 O% X# E8 N4 S- L* g060-GameServer(8-10)
( ^1 _. N* N5 w0 q6 Q3 z061-创建账号缓存层,实现注册的一些方法1 r2 i2 g! \) i# ?. ~' n! \' x
061-创建账号缓存层,实现注册的一些方法_20171124142334- N# E- f9 V" c
062-完成账号缓存的所有方法/ @! E! h/ o5 N! g
062-完成账号缓存的所有方法_201711241423342 V/ C. T9 D4 h: Z
063-实现账号逻辑层
0 b* j4 w( w3 Z0 y' S; F8 O1 e* p  ~( b064-解决今日BUG
) N, I5 L" w' e* h1 @/ l% w2 m065-Card(8-11)0 h4 b: I! z- k7 R2 b7 l, y4 N; e
066-GameServer(8-11)4 z) C: t2 W" p- `
067-开发提示面板
5 y) h4 h9 q+ `' g3 {' Y3 \068-给登录和注册面板添加提示
  r4 w' q1 ]( }3 Y* Q: b; s9 s069-处理接收到的服务器发来的消息、优化发送网络消息的方法
$ E5 y5 o, A  O% V8 s1 K070-实现客户端的账号处理、怎样和服务器交互(后面调个bug)
2 M% ]: W' B6 L! F0 t071-优化服务器,改变传输结果
0 H- R1 S9 a7 N& ^- E  p072-Card(8-14)
3 G7 w5 x- g+ Z  L9 D$ P073-GameServer(8-14)
9 z# P/ w7 J2 P+ @074-初步实现场景管理器,融入到框架中
* s3 S, L" \* `9 c4 g, c) x3 w( e) c075-增加当场景加载完成的时候调用的方法
1 T* X0 s* }9 y* t1 e076-实现登录成功跳转场景
: y: ]$ X& V1 i4 D077-设计UI之主界面的信息面板
. s* k7 v, H! s3 }9 c( N078-设计UI之主界面的匹配面板8 E) V2 Q. A7 u2 z# ]8 I) l0 A/ ]. [
079-设计UI之主界面的设置面板7 P, W, R0 {. B+ b0 ~4 z- X
080-设计UI之主界面的创建面板: Z/ y9 a& a- `
081-Card(8-15)% f6 x: ~, k# K. E  K) H1 B  \
082.编写信息面板
' m" [! g- [& m6 j) ]5 ^083开发匹配面板3 b% F: n- z6 J0 t! U9 s
084.修改默认创建的脚本1 L  b: a6 |* P- C# O
085.开发设置面板, V4 o" W- j' J+ x) j# R
086.开发创建面板8 O! Z" d% x+ H
087-Card(8-16)2 Z' o6 F0 N( g% J/ t  ?
088.创建角色数据模型9 K* i: ?; P% C4 r( @
089.开发角色数据的缓存层
$ y. ~: O( q9 e8 n( z" q8 g090.完成角色数据缓存层
. A8 G  p* M$ L1 B4 ~4 E7 x* E091-GameServer(8-17)
3 u% z% R' m& C" X9 r- M8 }092创建有关角色的操作码
2 a+ J9 ^& ~0 D+ H- S+ ]093.实现用户逻辑层
. |4 K, @! r+ |, }% r7 Z; v% y' {094.向服务器获取信息,在客户端创建用户处理类$ s; \+ {& |( J# x5 v
095.客户端处理获取角色信息的响应
+ F1 ~: ]" t0 d9 J* B. D096.保存接收到的角色信息并且处理角色上线响应
3 L0 V+ l; v) H* A2 L097.发起创建请求和处理创建响应9 n" t* U9 E, K7 Y6 c
098.演示本日BUG. p* h% |2 C" C& s, R$ ~% T6 |7 I
099-GameServer(8-20)7 l/ b! F% W0 j
100-Card(8-20)4 k" a# N+ R+ O& ~  N
101.更新客户端视图
. Z+ W% w( m- l102-编写匹配操作码
) K. p; g( K4 ^103-定义匹配房间的数据模型
7 |- Z4 Y. O- w( [- m5 F104-创建匹配缓存层,实现进入匹配队列
% e- k4 h7 v: c( |  G105-实现匹配缓存其他所有的功能9 b/ n4 i: x& G$ I& H! f
106-创建匹配逻辑类,实现进入匹配房间功能
* e; @/ Y. K! h5 d+ B: G( w0 l107-优化服务器之群发消息
% Y' s* o, ], _8 B; V4 K108-创建匹配房间的传输模型,在逻辑层进行构造2 q) P4 k$ H+ U; S2 e
109-实现离开匹配房间功能
( X4 y1 j# {, R" k6 \110-GameServer(8-24)
+ z6 }& @0 P7 K7 O. S111-实现玩家准备
' I. X  B8 u7 e; B5 P4 b112-在客户端发起匹配请求
7 A" Z  e2 C& M# {113-GameServer(8-25)
  k& l7 Y" A. h( y2 o) ^& q114-Card(8-25)8 A8 X- E6 A$ K& K
115-创建MatchHandler,接收服务器的响应0 }: i* z' u7 |; J
116-保存房间信息,他人进入房间广播处理
) @2 l2 ]* y3 F5 n: @; n117-玩家离开- M4 K6 e% J- f+ g: X8 x
118-玩家准备和开始游戏的处理
$ t! Q  b0 N* B" T$ I# _9 W119-GameServer(8-29)
8 E0 q1 S) |9 H$ F  c% [120-Card(8-39) (1)# [1 l0 W! `" h, C: ~
121-搭建战斗界面的左、右角色状态面板$ |3 K' ~0 a% Y, w9 k
122-搭建战斗界面自我的状态面板: V; q( Z9 T( C" P' ^+ ], P- d3 {, W
123-搭建战斗界面上边的底牌面板
" w& g$ _3 }7 D1 f124-搭建战斗界面下边的快捷聊天面板# {8 G# M# P' k9 d+ U# @7 J7 I
125-搭建提示面板和结束面板+ g, F! G  Q0 t" _
126-Card(8-30): @* S- u, v9 R: t
127-创建出牌点,实现进入房间按钮功能
: k9 |4 n4 D! r9 z: n  F128-控制底牌显示,编写代码! y2 o' f  c4 O# ^" G
129-在服务器工程内创建卡牌的传输模型类
9 Y# N$ w* o/ R0 f( m, i* K' B130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了): m  ~# H+ c5 c8 ~& x
131-分别创建左、右角色的状态类(有破音)
0 D- X/ v2 S; q# |- D+ V132-ard(9-2)
  a- Y; [' ~+ f# A9 [- H133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音)% Y) C7 k# f1 e7 C& K
134-如何控制玩家左、右玩家位置?(有破音)
* O. |1 z  R6 X1 m135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)
8 ?2 W+ P- b! }% E% ^4 _1 P136-Card(9-4)+ [" Y7 R. ~) P1 Z9 c
137-GameServer(9-4)" N. |* X8 w7 `( [" O7 R: O
138-解决左、右的代码重复部分. ~! |' t* u7 `3 j) ]
139-创建自身的状态面板(有破音)
* B5 C- r8 y) n+ r  L140-完善自身进入更新状态面板
% ^2 S9 X% X; _* Y4 W- j! Z141-CardGame(9-5)
0 T- ^4 b$ D+ D142-找之前的BUG(一)
+ {9 w7 ~( O: z+ r2 g% N143-找之前的bug(二)1 P6 @- j, t0 y/ Y
144-Card(9-6)9 B. m3 `3 w7 c/ z* O* R8 u
145-GameServer(9-6)4 a8 M1 z1 `+ G6 f& Z/ t1 v8 [
146-发送自身准备的请求
. `5 V  U- Y( k+ k147-创建下边的面板的脚本. n# {7 W( d0 e, t5 p+ J) D
148-Card(9-7)9 K' d8 k& h! n; ?
149-创建聊天操作码,在客户的发起请求
, A5 c+ o0 M% ~* ^" T! q/ ~% t150-服务器处理聊天的请求,创建聊天传输模型
. O3 K' S4 D( [3 D6 y. X151-创建聊天文字的常量类$ P3 b9 u  F! e' {( }
152-Card(9-9)' S/ G1 i+ {) w! T
153-GameServer(9-9)
# a" a. q5 ]& v, E8 _. d1 _8 Z154-客户端接收响应,显示聊天文字2 f: S, q! K% I/ k, T6 b3 `# u
155-聊天声音的播放
  j7 T  P% w$ l156-测试聊天BUG
; z& o* _" Z/ ]157-Card(9-10)
5 C( c: h) \6 Q+ g4 ^158-GameServer(9-10)% i1 @, \5 T% f" O% B5 z5 h. w5 U
159-所有人准备完毕开始游戏,使用中介者模式触发2 {4 b, c/ B' ~' j
160-逐层分析,创建玩家数据的传输模型
) N* V6 ^6 D# `5 a161-创建并初始化牌库,创建花色的常量类# K+ K- W5 c  O
162-创建权值的常量类,完成创建牌库的过程
( m/ O, K9 N# I163-洗牌算法,完成牌库类* O6 `- A  q" F
164-创建回合管理类
0 e2 q# P- n$ ?5 z2 Q/ T3 v: S& z165-GameServer(9-12)
3 L8 D& {, h1 U- z, s  a1 [- }166-初始化战斗房间,添加第一个方法:转换出牌! J% o" J2 ]7 u5 L
167-创建出牌类型,判断能不能管牌$ L3 }- q) H3 L
168-如果出牌判断成功就移除玩家的手牌
% Y, Y. `. w: W. G' r% O; P169-增加倍数和更新回合信息, s# j& i  H% R, j  G" k* M& F( T5 y$ }
170-发牌
7 J7 H' E" Y# I( |171-设置地主身份,创建身份的常量类% h/ k* u/ ^9 V& a9 `& v7 p. Q
172-补充一些辅助方法,完成战斗房间所有内容  `; ~, F3 z. u+ \# A: |; ?! d
173-GameServer(9-13)
" u/ b. h  z. d174-创建战斗缓存层
1 S9 B# \: u  ^5 Q175-定义战斗的一些操作码
* P* t$ @: K* J) R% Y, Z0 g176-编写开始战斗的逻辑
/ P3 H7 F4 S. D7 x177-关于发送卡牌集合还是卡牌id的解释
9 l' d9 t/ C7 E" Z! f( D5 y178-GameServer(9-16)
# q1 x* _* h' i% J179-实现抢地主的方法
, c! O% V0 r4 t* u180-创建出牌的传输模型,获取选中牌的权值% S1 H% r6 Y. `% n& j# ~: o% w5 B7 F
181-判断各种卡牌类型
/ C) p/ [2 ~4 G0 V182-完成编写出牌的传输模型
! P; H, R! T, F) ?2 |' T, l# D  A1 d183-GameServer(9-18)
' b) I5 r" z) G6 C# N184-玩家出牌在服务器的处理$ r& V" j' p) I
185-转换出牌的实现
! L4 L9 N/ c  G  q* I: Q8 f# I) M186-游戏结束的处理
1 {( R- \2 A* B4 u5 i* e" i187-不出的处理; D: [7 V1 J- o! o9 z0 g7 s7 }' F
188-玩家掉线的处理
. Z7 l" u) z6 l( s3 v! P189-GameServer(9-20)5 i5 @' B% @7 u' j. {+ p1 e
190-在客户端创建战斗的处理类,编写获取卡牌的处理3 n- m  f& a0 B/ o/ a0 ^
191-创建客户端的卡牌控制类1 ?% Z# Z7 P$ k% X1 t
192-创建自身角色控制类,管理卡牌的创建
) l$ G& ^" r- z$ ^3 r( p. R193-创建左、右玩家的控制类,管理卡牌的创建/ F& a6 H+ J* ?8 H
194-Card(9-21)
, d, j+ l3 r- g" U195-给大家录制BUG过程8 Q. `2 s6 l( o
196-GameServer(9-23)
& \; D: G; ^7 I' i# h5 E7 I197-开始处理抢地主的响应
" M* J+ o2 y: k, q; C9 M! V' m, A198-发送抢地主请求和抢地主成功的处理" W. v1 Z0 ~( s. r: B8 M0 B
199-自身的玩家添加三张底牌的处理
8 U2 T% ^( v; o" l. _* }  Y9 {200-抢地主成功的处理完毕
2 L* G/ T7 K" z# @8 A  M& H201-测试抢地主并修改BUG
- O6 L2 q/ b/ c202-Card(9-24)
* s$ \$ Z3 {. _! [# q  R- R203-GameServer(9-24)
1 u/ |  N( h3 D2 B: y7 s& J204-接收来自服务器的出牌命令
0 C6 U( L( G9 h5 Z; p5 k( L205-客户端出牌的处理( _( |- ~9 y& ?" a. l3 t
206-向服务器发送不出的请求3 G! g+ q9 a! w) E% {
207-GameServer(9-25)$ ^* _$ Y* A, a/ {+ Q; @, a2 E
208-Card(9-25)5 v# x( _( \0 |! x# _" A
209-给卡片添加碰撞器让他能点击
, r0 W. }. [* T# n210-解决出牌BUG' U9 s5 ~  c% @" Z1 n  V
211-移除出完的手牌/ o! X; ?: C; ]  n, W
212-管理桌面的牌显示
" I! N! h( L2 L4 S6 r* D: B) d213-出牌特效声音的播放& {" Z2 N* ~! |) R
214-GameServer(9-27)
) t8 j+ c3 w- e: h# h/ S$ t215-Card(9-27)
. }! H/ h$ \: K' r! G8 ?4 K* |216-测试出牌BUG 上部
0 Z& N6 @  K' T: S  k0 g7 ~8 @: v217-测试BUG 下部
9 Y% ]* X; O- W  Q1 d218-客户端+服务器(9-28)
# K9 f8 u" n% `. ~' E) ?# B219-创建OverPanel代码脚本
& l+ X# G5 \/ m4 j0 k0 K220-通过消息机制表现客户端的结束: e' w% C# g0 n% y3 E; o6 I, P- A) S
221-测试游戏结束
3 H, Q+ h1 t9 [' S8 }222-创建背景音乐播放控制脚本, ^/ ]9 R' O0 s# V0 |' ]
223-给前两个场景添加背景音乐
) i) S7 H4 {4 w( [# H5 D6 m. \224-完结与未完
' Z& p' F8 }1 I0 o8 y( h, ^225-Card(9-30)
, T  _+ w5 l0 p: n2 ^3 Q6 |226-GameServer(9-30)0 Y3 Y2 i# b9 e) B; X  O- }
227-扩展课之ProtoBuf
! h! k  W" z/ z8 s4 P  ~228-扩展课之ProtoBuf(10-15)下载地址:
0 P$ r2 A$ n4 O" @; L

9 }+ k, m3 J& J- L
游客,如果您要查看本帖隐藏内容请回复

+ Q5 g# s; U, c2 w
& G4 ~5 U; c# h7 v
回复

使用道具 举报

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

主题

243

帖子

1553

积分

VIP会员

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

: I5 J* l- N' h2 [. v4 d多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2025-9-17 17:42 , Processed in 0.085699 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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