From 0bf2a76718921494cb5c9aca6f38b13c46723775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Tue, 11 Nov 2025 22:13:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=A4=9A=E4=BA=BA=E6=B8=B8=E6=88=8F):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=8E=A9=E5=AE=B6=E5=90=8D=E7=A7=B0=E5=86=B2?= =?UTF-8?q?=E7=AA=81=E9=97=AE=E9=A2=98=E5=B9=B6=E9=87=8D=E6=9E=84=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将玩家加入逻辑拆分为两个函数,joinPlayer处理玩家加入,mutexPlayer处理名称冲突检测。当检测到重复名称时自动生成唯一名称。同时确保名称变更后再次检查冲突。 --- scripts/Contents/Panels/Starter.gd | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/scripts/Contents/Panels/Starter.gd b/scripts/Contents/Panels/Starter.gd index a7fa2b7..065bf34 100644 --- a/scripts/Contents/Panels/Starter.gd +++ b/scripts/Contents/Panels/Starter.gd @@ -18,15 +18,19 @@ var historyStack @onready var players: VBoxContainer = $"%players" @onready var playersList: VBoxContainer = $"%list" +@rpc("any_peer") +func mutexPlayer(player: String): + if multiplayer.is_server(): + if getPlayerNames().count(player) > 1: + var newName = player + str(randi_range(1000, 99999999999)) + setPlayerName.rpc(player, newName) + setPlayerName(player, newName) @rpc("any_peer") func joinPlayer(player: String): if multiplayer.is_server(): addPlayerName(player) rebuildAllPlayers.rpc(getPlayerNames()) - if getPlayerNames().has(player): - var newName = player + str(randi_range(1000, 99999999999)) - setPlayerName.rpc(player, newName) - setPlayerName(player, newName) + mutexPlayer(player) @rpc("any_peer") func leavePlayer(playerName: String): if multiplayer.is_server(): @@ -96,6 +100,7 @@ func _ready(): func(newText): setPlayerName.rpc(getLast.call(1), newText) setPlayerName(getLast.call(1), newText) + mutexPlayer.rpc(newText) ) setState(MultiplayerState.ConnectionState.DISCONNECTED) func _physics_process(_delta):