From afac34d7b596c54911684f31d6c17918ad42649b Mon Sep 17 00:00:00 2001 From: gahusb Date: Wed, 17 Jun 2026 08:15:44 +0900 Subject: [PATCH] =?UTF-8?q?fix(deck):=20UIGroup=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?=ED=9B=84=20=ED=99=94=EB=A9=B4=20=ED=91=9C=EC=8B=9C=20=EB=B3=B5?= =?UTF-8?q?=EA=B5=AC=20(=EA=B7=B8=EB=A3=B9=20=ED=99=9C=EC=84=B1=ED=99=94?= =?UTF-8?q?=20+=20.Enable=20=ED=86=A0=EA=B8=80=20ClientOnly=20+=20?= =?UTF-8?q?=EB=B6=80=ED=8A=B8=20=ED=8F=B4=EB=A7=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 메이커가 UI를 6개 UIGroup으로 분리하면서 발생한 2개 버그(시작이 MainMenu가 아니라 로비·NPC 상호작용 무반응) 근본 수정. 메이커 MCP 플레이테스트로 확정: - 원인1: 새 UIGroup(Select/Lobby/Run/Deck)이 DefaultShow=false라 시작 시 비활성. → ActivateUIGroups(ClientOnly)로 그룹 :SetEnable(true) 활성화. - 원인2: 컨트롤러의 중첩 self:SetEntityEnabled(.Enable 토글)가 비-DefaultGroup 스코프를 잃음(ExecSpace 6 RPC 재디스패치). → SetEntityEnabled를 ClientOnly(2)로 바꿔 인라인 실행 → 모든 UIGroup 해석. (.Text/RectSize/ImageRUID 등 다른 속성은 중첩에서도 정상이라 SetText/SetHpBar는 무변경.) - 원인3: OnBeginPlay가 UI 로드 전 실행 → DeckUIGroup 로드까지 폴링 후 ActivateUIGroups + ShowMainMenu. 검증(플레이테스트): 부트→MainMenu·시작→로비+LobbyUIGroup·run NPC→charselect 전부 정상. Co-Authored-By: Claude Opus 4.8 (1M context) --- tools/deck/cb/boot.mjs | 13 ++++++++++++- tools/deck/cb/charselect.mjs | 2 +- tools/deck/cb/state.mjs | 8 ++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/tools/deck/cb/boot.mjs b/tools/deck/cb/boot.mjs index e3627e7..7e8dd7c 100644 --- a/tools/deck/cb/boot.mjs +++ b/tools/deck/cb/boot.mjs @@ -10,7 +10,18 @@ ${luaCharsTable()} ${luaSoulShopTable(SOUL_UNLOCKS)} self.SoulUnlocks = {} self.SoulPoints = self.SoulPoints or 0 -self:ShowMainMenu() +local uiTries = 0 +local uiInit = 0 +uiInit = _TimerService:SetTimerRepeat(function() + uiTries = uiTries + 1 + if _EntityService:GetEntityByPath("/ui/DeckUIGroup") ~= nil then + self:ActivateUIGroups() + self:ShowMainMenu() + _TimerService:ClearTimer(uiInit) + elseif uiTries > 80 then + _TimerService:ClearTimer(uiInit) + end +end, 0.1) local lp = _UserService.LocalPlayer if lp ~= nil then self:ReqLoadAscension(lp.PlayerComponent.UserId) diff --git a/tools/deck/cb/charselect.mjs b/tools/deck/cb/charselect.mjs index da07c2c..25ad80c 100644 --- a/tools/deck/cb/charselect.mjs +++ b/tools/deck/cb/charselect.mjs @@ -66,5 +66,5 @@ if e ~= nil then end`, [ { Type: 'string', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'path' }, { Type: 'boolean', DefaultValue: null, SyncDirection: 0, Attributes: [], Name: 'enabled' }, - ]), + ], 2), ]; diff --git a/tools/deck/cb/state.mjs b/tools/deck/cb/state.mjs index 7e3c865..c85bddc 100644 --- a/tools/deck/cb/state.mjs +++ b/tools/deck/cb/state.mjs @@ -21,6 +21,14 @@ self:SetEntityEnabled("/ui/DeckUIGroup/DeckAllHud", false) self:SetEntityEnabled("/ui/LobbyUIGroup/LobbyHud", false) self:SetEntityEnabled("/ui/LobbyUIGroup/BoardHud", false) self:SetEntityEnabled("/ui/LobbyUIGroup/SoulShopHud", false)`), + method('ActivateUIGroups', `local function grp(n) + local g = _EntityService:GetEntityByPath("/ui/" .. n) + if g ~= nil then g:SetEnable(true) end +end +grp("SelectUIGroup") +grp("LobbyUIGroup") +grp("RunUIGroup") +grp("DeckUIGroup")`, [], 2), method('ShowState', `self:HideGameHud() self:SetEntityEnabled("/ui/DefaultGroup/MainMenu", state == "menu") self:SetEntityEnabled("/ui/SelectUIGroup/CharacterSelectHud", state == "charselect")