From d190c2edf8df67784835017d18704dc447526f74 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 23 Mar 2026 11:39:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E7=9A=84=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=AF=B9=E8=B1=A1=E4=BD=BF=E7=94=A8=E5=86=85=E5=AD=98?= =?UTF-8?q?=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/player_data.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 76cc5139..901ee5ad 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -82,6 +82,17 @@ type PlayerMsg struct { B []byte } +var playerDataPool = sync.Pool{ + New: func() interface{} { + return &PlayerBackUp{} + }, +} + +func (pd *PlayerBackUp) Reset() { + pd.Data = msg.ResPlayerBaseInfo{} + pd.PlayMod = nil +} + func (p *Player) Stop() { p.wg.Wait() p.signalDispatcherStop() @@ -201,10 +212,10 @@ func (p *Player) ProcessTrigger() { // 接口请求之前备份数据 func (p *Player) BackUp() *PlayerBackUp { - BackUp := PlayerBackUp{} - p.PlayMod.BackUp(&BackUp) + BackUp := playerDataPool.Get().(*PlayerBackUp) + p.PlayMod.BackUp(BackUp) BackUp.Data = p.GetPlayerBaseMod().BackUp() - return &BackUp + return BackUp } // 接口发生错误时 还原数据 @@ -212,6 +223,8 @@ func (p *Player) Recover(backUp *PlayerBackUp) { // p.GetPlayerBaseMod().Data = backUp.Data p.PlayMod.Recover(backUp) p.Msg = make([]PlayerMsg, 0) + backUp.Reset() + playerDataPool.Put(backUp) } func (p *Player) InitPlayer(UserName string) error {