飞雪团队

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

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

[复制链接]

8917

主题

9005

帖子

2万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
29081
发表于 2018-8-18 15:58:40 | 显示全部楼层 |阅读模式
下载地址
下载地址: 加入VIP查看下载地址!
本课程会带领大家从0到1的开发一款强联网卡牌游戏:斗地主,不容错过哦。
3 b- t- _! d: b0 ^0 h+ a服务器采用:c# 开发  ' b* Z. E" c# e2 R9 o/ d
客户端采用:Unity2017
' n$ `# I" {; {  ^' p
2 s0 _  ]; O6 E/ U" \& _学完并熟悉掌握本课程会熟悉网游开发模式,独立设计并开发出一款不错的网游。
4 B: R) c& G7 V. Q课程每天会有更新,难免有一些特殊情况望理解。9 |/ X9 I& f# k1 r- S) l4 m- i: @% t+ D
个人独立开发,素材都是从网络上搜集,如果瑕疵,请见谅。7 ]7 q1 U  X( P; q, ^/ F
  p9 C6 P1 @$ x
严格意义上来说,本课程应该是两个课程合二为一了。1 l+ t, o) K" p; ]' \5 [
第一个课程就是《从计算机网络都服务器编程》。) E. K. {4 k$ U+ `1 T7 D
关于服务器,很多初学者都不了解,就觉得它很神奇,而且一接触它的代码就会发蒙,就是看不懂。为什么呢?因为不了解,所以我觉得应该从计算机网络这一层次开始说起,比如:3 W4 q, {# U" w. f) n
什么是因特网?2 M! C' [4 D6 u. n* F: c
什么是协议?7 u$ f  p6 T4 @
什么是应用层?应用层协议?1 k. r5 g. ]: f9 {
什么是运输层?运输层协议?( z/ u8 z& E* |$ q0 E$ m- y
什么是TCP协议?什么是UDP协议?6 F! }" Y) T3 m& P1 U+ z7 n
等等···' w+ j" A# b$ e# C# ?& m
(很深层次的知识,大家根据兴趣来进一步自己学习)
. n, l! p: b9 l知道了这些之后,就可以开始进行服务器编程了,包括协议订制,数据传输等等。其实大部分.Net都给封装好了,我们只是调用一下而已。最后做出来的使用方式和Photon Server基本一致,如果学过我之前课程的话那应该就会使用,不会配置一些乱七八糟的东西,而且调试错误可以直接断点,很方便。由于Photon Server适合某些特定的开发者使用,面试或者一些公司应用不广,而这个socket就很通用了。5 P# A  F5 z0 p& q

* E1 ~# q* r2 c# C) Z+ g6 M  e第二个课程就是《斗地主》的游戏开发部分了,通过实战来教大家服务器怎么使用,怎么实现多客户端的同步。
7 z% b* s; H+ {, S6 h( Z/ P, L斗地主大家应该都不陌生,所以这一部分就不用过多介绍了。客户端的架构是使用的之前的课程《基于消息机制的框架》,采用消息中心的思想,开发类似发邮件、收邮件的机制,来彻底杜绝脚本之间强耦合现象。
# {3 s: P8 n: B1 K/ p5 S: M5 h# Q5 q( b0 ^0 _
& H* F) a0 p0 S9 \
001-课程介绍
- h% |0 I, S" L$ f% `003-因特网和协议
% K+ @2 h0 x. w% `% l/ `004-分层体系结构5 A9 Z. D, z$ }+ ^: }# J, G( M
006-进程和套接字+ {, t; t+ g6 m2 p8 K7 h
007-运输层协议TCP和UDP
; d% H9 F. W5 L. E8 h( e008-应用层协议HTTP
2 Z. ]3 P1 k* O( z1 Z; x( E( {009-socket服务端
  J8 F) x: T3 B. s( X& A010-socket客户端9 L, L( C9 _* x; n
011-验证连接
" j4 S! }% E0 `) e4 U& _  o$ ]012-SocketDemo( C& o1 Q, J6 V8 O) z
013-实现接收连接的异步事件) d$ K3 s' X% \# k* E
014-添加限制连接数的信号; r* A0 r' I. U9 Q7 \/ a( ~
015-封装客户端连接对象和编写连接池
3 w% |& _; W. b6 c; W: f016-GameServer(8-1)5 j8 {! R% M+ L+ ~. n" D- U
017-粘包拆包问题介绍  x  o$ S$ }7 J6 I
018-采用包头+包尾的方式解决粘包和拆包
- B( C2 z. Q, C5 W; s019-GameServer(8-3)
8 j# `: Y& K# W" |/ z020实现异步网络接受数据8 D, B0 u" C8 |$ B% e7 K0 R
021-客户端对自身接收的数据进行解析
  W: z2 Y" H  r5 G022-构造SocketMsg负责网络消息的传递2 f" {  d) e: J; |, z' }* O6 o( n
023-实现soceketMsg与byte[]的转化2 k8 E5 R# O( N1 v/ g# q
024-对象的序列化和反序列化
( A2 u; ~- Z1 S% v4 @1 @025-GameServer(8-3)_2) V8 V, G" P2 T1 I2 M+ i8 ]
026-实现客户端断开连接5 j4 |, G% w; c/ l3 P
027-实现发送数据, k  _( P% y2 U% u- [
028-助学篇:带大家回忆一下所开发的内容2 o8 m' ?& j# B( e- J* }% T3 k' M
029-抽象出应用层
9 I% F# m# `! y. h' ?: m. G# A& u030-GameServer(8-4)
2 w1 B) M' x8 x3 I) ~, c5 V031-开发定时任务功能(计时器),编写任务模型  D1 I6 Q: ~% E% E0 F* W" H4 N
032-创建计时器管理类,监听到达间隔触发的事件
7 O! f- W! F9 _033-控制定时任务(计时器)的触发时间
, f/ @' F9 P- \$ `( M! b034-开发线程安全的INT类型
+ G7 H% h% @) p0 ~035-GameServer(8-6)7 \# |' t7 e9 d) y8 W4 D2 Z
036-实现单线程池
2 T+ }3 C. |6 {/ P037-Unity2017下载
! W$ U% y0 L% r& Z038-创建工程导入素材
3 M1 G- D+ l4 s+ _$ b' ~039-Res4 I& I: k/ P& C" t. |5 \. D
040-Card(8-7)6 Y$ Q- t+ i; M1 b+ V0 O
041-GameServer(8-7)
* Y  B* ?7 H. ^' J; _4 \, Z7 V043-根据策划创建面板
) q& u1 V- ~4 {) `. K044-导入客户端框架,创建PlayPanel脚本
2 ^) B# ~4 z1 C% E045-完成开始面板
/ A1 Z& n# Q7 I, r' J" G, t046-完成注册面板
* U+ B6 Z7 e) W& r( d047-Card(8-8)
- s7 m$ v, D$ X" M049-服务器架构介绍, f6 Y0 v* g& [6 j; F
050-按照架构实现服务器# [, d4 J% n1 S5 m6 Z1 h7 _, H
051-在客户端封装Socket,使其连接到服务器
. q" T. l) i2 W052-测试客户端服务器的连接
( h* g. j6 `, B' R053-解决BUG
& K3 [) |3 {6 ~2 T1 y054-Card(8-9), L: m" e0 ?4 S5 ]
055-GameServer(8-9)1 P. f5 d7 j, h% v- B
056-修改客户端的链接方法7 d; E& l' W5 ~- ~: ]; M
056-修改客户端的链接方法_20171124142335
! |9 h) D0 l* M057-定义操作码、子操作码,演示客户端如何给服务器发送请求4 O- Q# J: _# I& @5 c
058-测试数据传输是否正确. F0 n+ a# A6 g1 o. n
059-Card(8-10)+ D4 m9 f  n) a  `( Z
060-GameServer(8-10)3 u5 x3 F! x2 O
061-创建账号缓存层,实现注册的一些方法- ?4 e9 e1 K7 t3 }& P' R
061-创建账号缓存层,实现注册的一些方法_201711241423344 ~& F) A# _/ `2 u# ]4 E* e
062-完成账号缓存的所有方法) y$ |: l9 \: F
062-完成账号缓存的所有方法_20171124142334
3 U+ C4 F% i2 L0 i2 _  M0 x0 U063-实现账号逻辑层3 R( X3 W- S! @# W; O
064-解决今日BUG
9 W5 u0 ?& ]/ h$ K. p065-Card(8-11)
+ L' I4 V) F/ j% h) t% |6 \. w( f066-GameServer(8-11)! t0 n% V9 P2 m8 i* L* }
067-开发提示面板
* r: k8 Z, X, W4 i- s# Z5 p7 |7 w* B068-给登录和注册面板添加提示$ |8 o1 }8 ]9 F- o4 Q  A
069-处理接收到的服务器发来的消息、优化发送网络消息的方法
6 s+ M. a' T5 H; _070-实现客户端的账号处理、怎样和服务器交互(后面调个bug)
0 j: w7 A  F( G- a$ H6 Z5 F: u071-优化服务器,改变传输结果
9 Z* L5 o! j- h" O072-Card(8-14)
% U+ K( F/ n8 Y% w0 r& W073-GameServer(8-14), g$ n+ G) U# t6 P
074-初步实现场景管理器,融入到框架中3 Q1 E1 O! Y6 X. s9 y6 q
075-增加当场景加载完成的时候调用的方法
: k4 g' {/ p5 J) `& Q076-实现登录成功跳转场景
; \) r! d# d% x4 w/ P  i077-设计UI之主界面的信息面板
7 l+ w. S, K7 r' S* ^078-设计UI之主界面的匹配面板1 a6 D: j4 ?/ ~" P' a. i7 T
079-设计UI之主界面的设置面板3 u, \& s7 A  R, N$ ?7 y
080-设计UI之主界面的创建面板
3 D1 t' r- ~0 f$ o081-Card(8-15), d6 h& q! \* d. f
082.编写信息面板+ x8 H5 A5 I8 @* N
083开发匹配面板
) u& k+ Z) }5 }084.修改默认创建的脚本' k, I: V* ~1 S9 F: t8 y+ r
085.开发设置面板( S9 |$ ?' P& I# I5 h( P
086.开发创建面板
% v1 Z$ `* M. v+ C. M087-Card(8-16)9 G  }# H. b8 D" A8 j% r
088.创建角色数据模型& u2 w( w. m1 i, v/ {1 a5 G
089.开发角色数据的缓存层
* E9 k& n' h9 `090.完成角色数据缓存层
% }; h# ?6 ^% d% {7 j4 e+ f0 @091-GameServer(8-17): b1 n+ B7 ~* l% s$ C7 @5 A% |
092创建有关角色的操作码& l# Q# J5 C. I) i
093.实现用户逻辑层7 M/ p5 t% D3 a1 ^
094.向服务器获取信息,在客户端创建用户处理类0 A2 C! _! @1 d0 l( c$ b
095.客户端处理获取角色信息的响应6 w/ c( K( A% g  m0 A1 y, y1 m+ n
096.保存接收到的角色信息并且处理角色上线响应
; @) I5 ]! @$ I' E9 f097.发起创建请求和处理创建响应
% w" }' A0 x/ N/ y  T+ _; s098.演示本日BUG6 t& X, _, E' P% I% `
099-GameServer(8-20)( g  [, }$ S. e& f' a# R# k
100-Card(8-20)
7 y) I2 ^7 B' b0 o, h$ j101.更新客户端视图. w5 v1 J2 l' j
102-编写匹配操作码
) g& z& ?% I  Z. I  ?103-定义匹配房间的数据模型0 D4 H6 C" V+ @' K. a: l; M- d, V
104-创建匹配缓存层,实现进入匹配队列# \- j7 A  L) Q- ]% W$ q2 ]
105-实现匹配缓存其他所有的功能( e' e& X$ c8 s! Q$ ~
106-创建匹配逻辑类,实现进入匹配房间功能, [3 e5 W8 J/ n3 J, e
107-优化服务器之群发消息7 e1 S3 b2 B* K% }# B+ u, r
108-创建匹配房间的传输模型,在逻辑层进行构造! }2 S  _' o# S6 z5 ], i4 x1 Q, x
109-实现离开匹配房间功能$ R. D" y" {6 ?5 z
110-GameServer(8-24)
: @/ L2 Q# Q) j* V$ r111-实现玩家准备
1 a9 _; [$ [1 R3 n9 t. l6 R0 K) y112-在客户端发起匹配请求: y5 g7 f! s$ T2 R+ j
113-GameServer(8-25)" ]; _+ Q1 s9 i0 E' V
114-Card(8-25)7 J, N8 P# C( {( W& b
115-创建MatchHandler,接收服务器的响应; j; y6 o4 B3 L* o, V- h5 q' e
116-保存房间信息,他人进入房间广播处理0 R  p7 A" v4 d. s  [* r: {5 }+ I) @' c
117-玩家离开! a% o! t5 t  i7 b' M
118-玩家准备和开始游戏的处理
3 j( y( T7 I8 B  h9 O119-GameServer(8-29)
$ ~) Y/ }3 ~2 L5 E120-Card(8-39) (1)
1 N7 N, ]# E$ g: R3 z121-搭建战斗界面的左、右角色状态面板
6 U, I& D3 S# E2 `3 g: G122-搭建战斗界面自我的状态面板2 \9 g3 n0 s3 c7 u8 K( A- V
123-搭建战斗界面上边的底牌面板" T8 ~% _+ x1 ]6 L) H
124-搭建战斗界面下边的快捷聊天面板
5 j( Q' Y' E# i125-搭建提示面板和结束面板
9 e) f1 u- ^. W" q126-Card(8-30)
! g/ d3 D1 Z  _3 O127-创建出牌点,实现进入房间按钮功能
3 ^5 C, v5 H; N2 x( U128-控制底牌显示,编写代码
  m# V+ R2 Z1 f129-在服务器工程内创建卡牌的传输模型类
) D, O5 s5 |; X) P4 K130-分析并创建状态面板的基类(有很强破音,别戴耳机,老师的麦又坏了)
4 P) K5 X, @# g: l1 \$ p131-分别创建左、右角色的状态类(有破音)) u7 f- ]8 U$ {6 x& l7 [
132-ard(9-2). g2 c+ ^5 L, n/ r) Y+ Z" _2 p! s
133-在匹配网络处理类里面和左、右角色的状态类互相相应(有破音)& p7 m6 O, U) f  I/ G% ], |
134-如何控制玩家左、右玩家位置?(有破音)
' l: e7 h5 Z+ I+ w135-进一步修改匹配处理类和左、右角色的相互响应(有破音、)
+ H, n/ K) Y' j% p; R8 |( D136-Card(9-4)% ?# n6 M1 G1 j
137-GameServer(9-4)( s/ U, O: T/ _! Y7 x; J' {
138-解决左、右的代码重复部分
9 ~! c. C; g4 L# d139-创建自身的状态面板(有破音)
6 m7 G) K, Z& T" K3 U# V140-完善自身进入更新状态面板  y7 v( b2 f/ r0 @* m
141-CardGame(9-5)
. y; v' I) j& q4 ^7 g' u+ R142-找之前的BUG(一)7 c  \% |) K3 Q8 D
143-找之前的bug(二)( T: E8 y2 p1 q8 Z' ]$ i5 u+ Q
144-Card(9-6)# V. l- c" `5 X: k1 t
145-GameServer(9-6)
% _* E2 {  i+ ~1 w2 i6 J146-发送自身准备的请求
* s: b4 S4 }5 P147-创建下边的面板的脚本
- }4 B5 m2 w$ y148-Card(9-7)
0 D* x: j! A' h/ l: g- H149-创建聊天操作码,在客户的发起请求
/ q- h1 F+ O0 T' Z! p150-服务器处理聊天的请求,创建聊天传输模型
! `% G5 k2 O& S. X151-创建聊天文字的常量类
' G5 ^, h+ n/ n* f  y152-Card(9-9)
8 d! S0 a' `5 o5 p8 x/ I6 `153-GameServer(9-9)+ p3 ~; R- n0 ^. x% i$ H# h( g
154-客户端接收响应,显示聊天文字) b' @& Y" q' i+ Q) o$ }' T* d
155-聊天声音的播放
. q2 P3 d% u- o1 T3 N4 ?2 `156-测试聊天BUG$ a8 W  M; u9 v. u: e4 g( W
157-Card(9-10): B1 [& G+ M9 R4 S1 q5 }; I' @  {4 v! H
158-GameServer(9-10)
% [: O: c: _. w159-所有人准备完毕开始游戏,使用中介者模式触发5 \+ Q6 J! d# Z. y
160-逐层分析,创建玩家数据的传输模型8 N# ]: i/ g) `8 h* X( a4 s- D
161-创建并初始化牌库,创建花色的常量类* Q4 z$ g" T% v6 ?( K
162-创建权值的常量类,完成创建牌库的过程
! s& \. [: M0 i" ^7 V, }163-洗牌算法,完成牌库类
$ U) b! n# v# ^5 j164-创建回合管理类  b9 H3 `% {( D# x+ P. E$ m
165-GameServer(9-12)
) d$ \2 i: h8 ?2 ], [8 c166-初始化战斗房间,添加第一个方法:转换出牌6 l4 K1 {7 R8 Q' o0 q1 `* I" ?9 x
167-创建出牌类型,判断能不能管牌8 r3 N* l1 g8 O. v+ M
168-如果出牌判断成功就移除玩家的手牌$ @/ t6 ^3 Y7 d% L$ v
169-增加倍数和更新回合信息. L0 C/ l7 o5 r9 c4 _
170-发牌
6 ]9 p+ l8 ^0 O171-设置地主身份,创建身份的常量类
' H2 f  ^3 c4 k/ ?- Q5 L172-补充一些辅助方法,完成战斗房间所有内容' q) {3 x  D( E! u3 T
173-GameServer(9-13)7 s( {" f: \9 M; w1 E: S, t9 z7 Q* [
174-创建战斗缓存层
( Q* v9 z# [1 Z5 n+ b175-定义战斗的一些操作码1 n# J4 d5 F; S7 H5 v6 {
176-编写开始战斗的逻辑" S9 `9 \- {5 G! E
177-关于发送卡牌集合还是卡牌id的解释
* h! p* C/ L, H4 n5 [% W& {178-GameServer(9-16)$ ^/ f; `% N% P: a! }
179-实现抢地主的方法* m5 k9 B+ x- p6 c% |
180-创建出牌的传输模型,获取选中牌的权值
. t$ o( x& g: l- I2 l181-判断各种卡牌类型
0 f8 {. R, ]+ ]6 h4 S' a5 R2 Q( D. K182-完成编写出牌的传输模型
) E2 E/ i  R( p183-GameServer(9-18)
+ [8 X7 u) }# `9 F& N) z: P184-玩家出牌在服务器的处理7 o# P  ^! t) T+ h: |
185-转换出牌的实现7 O8 e# R: h: o6 q
186-游戏结束的处理
  D. G+ M: u* ?) N' F$ m" D9 ]187-不出的处理
9 M% J/ y& j5 d. n3 u$ D1 H* S188-玩家掉线的处理/ i' \1 N0 I7 x# Q8 t' b7 w9 V
189-GameServer(9-20)1 y) f* u2 O1 l+ I$ ~- ~
190-在客户端创建战斗的处理类,编写获取卡牌的处理
" I: `* ]: o* Y# e" m9 [* T$ N5 n% l191-创建客户端的卡牌控制类- I1 l9 H) T5 x8 R; Y3 I
192-创建自身角色控制类,管理卡牌的创建9 c" w& G2 u5 g. F% k
193-创建左、右玩家的控制类,管理卡牌的创建
. \  E- p* A7 i* Y. P5 q194-Card(9-21)
& o) g  S5 ^# W! b/ u195-给大家录制BUG过程# o8 r1 ?4 X; ~4 A$ ?! ?; S; B
196-GameServer(9-23)4 T  G  A' a6 k' u
197-开始处理抢地主的响应
3 A* w: ?/ w% \( A2 q( Y' b4 D; C198-发送抢地主请求和抢地主成功的处理
5 Z: E2 d' a$ l! B7 E8 e: R199-自身的玩家添加三张底牌的处理, [* X/ C/ m! i+ C  t. e
200-抢地主成功的处理完毕
( V6 Y% v+ n2 a7 @8 k3 a201-测试抢地主并修改BUG. M: n5 e4 U/ d
202-Card(9-24)3 C) g# T2 Z7 c( Z
203-GameServer(9-24)4 u, b  c) b) e* z4 c
204-接收来自服务器的出牌命令
: ^+ H- B$ q7 z205-客户端出牌的处理" k! l. t6 i, f+ a% `
206-向服务器发送不出的请求5 u; S7 ?( I2 @$ a9 r
207-GameServer(9-25)1 S1 q. p6 r+ d2 T' l' ^$ e: L
208-Card(9-25)
& l, s6 ]$ ~0 ?/ v% v1 Z/ J$ t209-给卡片添加碰撞器让他能点击7 }4 e7 P- ~8 S- t/ ?# b
210-解决出牌BUG
$ ?* H/ J8 v! {* S% R- N211-移除出完的手牌8 N5 Z; D. h/ v6 Y) V3 G: U- y
212-管理桌面的牌显示* _% {: f  p; |9 |% M; _8 k
213-出牌特效声音的播放9 |+ g5 Z. v' L, Y: Y3 y
214-GameServer(9-27)( Z# d* N5 z5 F8 ]
215-Card(9-27)
; Q& A+ v: c% o, y8 x+ V1 M! J216-测试出牌BUG 上部
: u3 }( q$ b$ d; ]217-测试BUG 下部
1 y( A: a3 A, a$ f# s# |218-客户端+服务器(9-28)$ M! J# I* Q" @( _
219-创建OverPanel代码脚本
; E2 d6 U/ y* u; Q' c# J220-通过消息机制表现客户端的结束
. q% G$ e8 s& c8 y$ D( [% U221-测试游戏结束) `2 ]& {4 @# z1 i6 U' q- D
222-创建背景音乐播放控制脚本
5 g* K* q/ @7 \% t# F7 X2 |223-给前两个场景添加背景音乐" W" V7 Q+ I5 n* ~1 b
224-完结与未完
9 f" U* O; ?1 }7 F( f225-Card(9-30)
9 _( O. l8 a$ L/ ^5 C1 v, }226-GameServer(9-30)# Q" l4 _+ N$ f- V1 _
227-扩展课之ProtoBuf
; d: d. ~3 ]# e$ R6 q6 u228-扩展课之ProtoBuf(10-15)下载地址:8 o0 s, f5 B/ U& ]
, ]: h/ c  g& O  f3 m4 [, |7 S
游客,如果您要查看本帖隐藏内容请回复

! u( g. R" ]$ |& y7 X$ p% ^9 j! X# j
回复

使用道具 举报

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 | 显示全部楼层
4 R  n) j( J; f' z: a3 T5 b( o/ `% p
多人网络斗地主开发实战基于(Unity2017)
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|飞雪团队

GMT+8, 2026-7-2 20:33 , Processed in 0.190983 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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