如何删除 roblox 中所有克隆的 gui
How to remove all cloned gui in roblox
我正在创建一个舞蹈表演游戏,我想在每一轮之前在列表中显示玩家的姓名和他们的顺序。我正在使用 clone 为每个玩家创建一个新标签。我的问题是克隆列表在第 1 轮后没有被删除并且玩家姓名重复。这是我的代码
contList.OnClientEvent:Connect(function(Contestants) ---Remote event in local script
for i=1,#Contestants do
nameList = script.Parent.List.plrsList.nameList:Clone()
nameList.Parent = script.Parent.List.plrsList
nameList.Name = Contestants[i].Name
nameList.nList.Text = Contestants[i].Name --players name
seqNo = script.Parent.List.sequence.seqNo:Clone()
seqNo.Parent = script.Parent.List.sequence
seqNo.Name =i --sequence number
seqNo.sequence.Text = i
List = script.Parent.List
end
List.Visible = true
wait(10)
List.Visible = false
for i=1,#Contestants do
nameList:Remove()
seqNo:Remove()
end
end)
你的问题是,当你清理东西时,nameList
和 seqno
变量只指向你添加到列表中的最后一个项目,它并没有删除所有项目你添加的。
有几种不同的方法可以删除它们,但我推荐的方法是
- 创建一个像框架一样的空容器。
- 创建新的 TextLabel 时,将其作为该框架的子项。
- 当您准备好清理时,只需删除框架,这将立即删除所有子项。
看起来像这样:
contList.OnClientEvent:Connect(function(Contestants) ---Remote event in local script
-- find some UI elements
local list = script.Parent.List
local playersList = list.plrsList
local playerNameList = playersList.nameList
local sequence = list.sequence
local sequenceNumber = sequence.seqNo
-- 1. create an empty container for all players
local container = Instance.new("Frame")
container.Size = UDim2.new(1, 0, 1, 0)
container.Position = UDim2.new(0, 0, 0, 0)
container.BackgroundTransparency = 1.0
local layout = Instance.new("UIListLayout", container)
layout.SortOrder = Enum.SortOrder.Name
-- 1a. create a container for player names
local playerContainer = container:Clone()
playerContainer.Parent = playersList
-- 1b. create a container for player numbers
local sequenceContainer = container:Clone()
sequenceContainer.Parent = sequence
-- 2. create an entry for every player, and put them into their containers
for i = 1, #Contestants, 1 do
local nameList = playerNameList:Clone()
nameList.Name = Contestants[i].Name
nameList.nList.Text = Contestants[i].Name
nameList.Parent = playerContainer
local seqNo = sequenceNumber:Clone()
seqNo.Name = tostring(i)
seqNo.sequence.Text = tostring(i)
seqNo.Parent = sequenceContainer
end
-- momentarily show the list
list.Visible = true
wait(10)
list.Visible = false
-- 3. clean up by deleting the containers
playerContainer:Destroy()
sequenceContainer:Destroy()
end)
我正在创建一个舞蹈表演游戏,我想在每一轮之前在列表中显示玩家的姓名和他们的顺序。我正在使用 clone 为每个玩家创建一个新标签。我的问题是克隆列表在第 1 轮后没有被删除并且玩家姓名重复。这是我的代码
contList.OnClientEvent:Connect(function(Contestants) ---Remote event in local script
for i=1,#Contestants do
nameList = script.Parent.List.plrsList.nameList:Clone()
nameList.Parent = script.Parent.List.plrsList
nameList.Name = Contestants[i].Name
nameList.nList.Text = Contestants[i].Name --players name
seqNo = script.Parent.List.sequence.seqNo:Clone()
seqNo.Parent = script.Parent.List.sequence
seqNo.Name =i --sequence number
seqNo.sequence.Text = i
List = script.Parent.List
end
List.Visible = true
wait(10)
List.Visible = false
for i=1,#Contestants do
nameList:Remove()
seqNo:Remove()
end
end)
你的问题是,当你清理东西时,nameList
和 seqno
变量只指向你添加到列表中的最后一个项目,它并没有删除所有项目你添加的。
有几种不同的方法可以删除它们,但我推荐的方法是
- 创建一个像框架一样的空容器。
- 创建新的 TextLabel 时,将其作为该框架的子项。
- 当您准备好清理时,只需删除框架,这将立即删除所有子项。
看起来像这样:
contList.OnClientEvent:Connect(function(Contestants) ---Remote event in local script
-- find some UI elements
local list = script.Parent.List
local playersList = list.plrsList
local playerNameList = playersList.nameList
local sequence = list.sequence
local sequenceNumber = sequence.seqNo
-- 1. create an empty container for all players
local container = Instance.new("Frame")
container.Size = UDim2.new(1, 0, 1, 0)
container.Position = UDim2.new(0, 0, 0, 0)
container.BackgroundTransparency = 1.0
local layout = Instance.new("UIListLayout", container)
layout.SortOrder = Enum.SortOrder.Name
-- 1a. create a container for player names
local playerContainer = container:Clone()
playerContainer.Parent = playersList
-- 1b. create a container for player numbers
local sequenceContainer = container:Clone()
sequenceContainer.Parent = sequence
-- 2. create an entry for every player, and put them into their containers
for i = 1, #Contestants, 1 do
local nameList = playerNameList:Clone()
nameList.Name = Contestants[i].Name
nameList.nList.Text = Contestants[i].Name
nameList.Parent = playerContainer
local seqNo = sequenceNumber:Clone()
seqNo.Name = tostring(i)
seqNo.sequence.Text = tostring(i)
seqNo.Parent = sequenceContainer
end
-- momentarily show the list
list.Visible = true
wait(10)
list.Visible = false
-- 3. clean up by deleting the containers
playerContainer:Destroy()
sequenceContainer:Destroy()
end)