簡體   English   中英

如何在 roblox 中刪除所有克隆的 gui

[英]How to remove all cloned gui in roblox

我正在創建一個舞蹈表演游戲,我想在每一輪之前在列表中顯示玩家的姓名和他們的順序。 我正在使用克隆,它為每個玩家創建一個新的 label。 我的問題是在第 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)

您的問題是,當您清理內容時, nameListseqno變量僅指向您添加到列表中的最后一個項目,它不會刪除您添加的所有項目。

有幾種不同的方法可以刪除它們,但我推薦的方法是

  1. 創建一個空容器,如 Frame。
  2. 創建新的 TextLabel 時,將其作為該 Frame 的子項。
  3. 當您准備好清理時,只需刪除 Frame 即可立即刪除所有子項。

看起來像這樣:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM