Files
GaCy-GO/tools/gacha_owned_prefab_tree.lua
T
2026-10-28 18:54:43 +07:00

38 lines
1.8 KiB
Lua

-- Only the owned single-banner tab: bounded visual hierarchy/binder read.
do local function capture()
local s=_G.__gacOwnedPrefabTree1 or {queue={},index=1,started=false};_G.__gacOwnedPrefabTree1=s
if s.done then return end
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_OWNED_TREE] '..tostring(v))end
if not s.started then
local page=_G.__gacWarpCreateTrace1 and _G.__gacWarpCreateTrace1.page
local state=_G.__GAC_GACHA_PRESENTATION_STATE
if not page or not state then return end
for _,tab in pairs(page._gacha_tab_items or {})do
local pool=tab._gacha_pool_data
if pool and state.installed[pool.GachaID] and state.installed[pool.GachaID].pool==pool then
local content=tab._binder.node_content
s.queue={{t=content.transform,path='content',depth=0}};s.started=true
for k,v in pairs(tab._binder)do log('BINDER '..tostring(k)..' '..type(v))end
break
end
end
if not s.started then return end
end
for n=1,12 do
local node=s.queue[s.index]
if not node then s.done=true;log('END');return end
s.index=s.index+1
local t=node.t
local image=t.gameObject:GetComponent(typeof(CS.UnityEngine.UI.Image))
local text=t.gameObject:GetComponent(typeof(CS.RPG.Client.LocalizedText))
log(node.path..' active='..tostring(t.gameObject.activeSelf)..' image='..tostring(image and image.sprite and image.sprite.name)..' text='..tostring(text and text.text))
if node.depth<5 then
for i=0,math.min(t.childCount-1,31)do
if #s.queue>=192 then break end
local child=t:GetChild(i)
if child.name~='GaCCharacterBanner'then s.queue[#s.queue+1]={t=child,path=node.path..'/'..child.name,depth=node.depth+1}end
end
end
end
end local ok,e=pcall(capture);if not ok then _G.__gacOwnedPrefabTree1={done=true};CS.UnityEngine.Debug.Log('[GAC_OWNED_TREE] ERROR '..tostring(e))end end