for every new message, it looks like the old message disappears before they can overlap and stack like the effect you want.
the actual hierarchy/setup looks fine to me and it should give you the effect that you want. reply frame goes in, uilistlayout stacks them.
does your script make it so that there is only one reply frame allowed under the main frame? maybe show an excerpt from your dialogue system script if you can!
I had a similar issue a month back. I solved it by changing the ExtentsOffset on each chat bubble once a new one appeared.
local function onEvent(player, text)
local count = 0
local ch = player.Character
local head = ch.Head
-- Searches the players head for any other chat bubbles and offsets each one as a new bubble appears
if head:FindFirstChild("Bubble") then
for _, bubble in pairs(head:GetChildren()) do
if bubble.Name == "Bubble" then
count += 1
bubble.ExtentsOffset += Vector3.new(0, 0.5, 0)
end
end
-- Removes the extra bubbles if there's more than 3
for _, bubble in pairs(head:GetChildren()) do
if bubble.Name == "Bubble" then
if count > 2 then
count -= 1
bubble:Destroy()
end
end
end
end
-- Code to create your new text bubble here
end
event.OnServerEvent:Connect(onEvent)