【问题标题】:Why does my list clear/lose its contents? [ROBLOX]为什么我的列表会清除/丢失其内容? [机器人]
【发布时间】:2021-09-16 13:00:06
【问题描述】:
local sounds = {
    877986525;
    2734549871;
}

local PrimaryQueue   = {} -- Player Chosen Songs. 
local SoundObj = workspace.MusicSystem
function PlaySoundAndWait(SoundId)
    SoundObj.SoundId = "rbxassetid://"..SoundId
    print("Loading Sound...")
    repeat wait() until SoundObj.IsLoaded
    print("Loaded")
    SoundObj:Play()
    repeat wait() until not SoundObj.Playing -- Wait till over.
end
local PlaySecondary = sounds
while wait(0.1) do
    if #PrimaryQueue ~= 0 then
        print("Play primary disregard current")
        -- Play primary, disregard current.
        PlaySoundAndWait(PrimaryQueue[1])
        table.remove(PrimaryQueue,1) -- Remove from queue (played)
    else
        -- Refill Secondary Queue if empty.
        if #PlaySecondary == 0 then
            print("REFILL")
            PlaySecondary = sounds
            print(#sounds)
            continue
        end
        print(PlaySecondary[1])
        PlaySoundAndWait(PlaySecondary[1])
        table.remove(PlaySecondary,1)
    end
end

当我提到“REFILL”时,我指的是刷新列表的第 26 行。 此脚本无限期地检查 PrimaryQueue 中是否有任何内容,如果有播放则将其删除。如果没有,它会检查 SecondaryQueue 是否为空,如果是,则用“声音”重新填充它。如果不是,它会播放第一个声音,然后将其删除。 因此,所有这些都应该创建一个音乐系统,但由于某种原因,在重新填充时,声音列表显示为空。即使它不应该并且只被分配了一次值。

谢谢。

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    您正在执行table.remove(PlaySecondary, 1),这等于table.remove(sounds, 1),因为它们都指向同一个表,因为PlaySecondary = sounds,所以它回来是空的,因为您自己之前删除了它的所有元素!

    我假设你想create a copy of the table:

    PlaySecondary = {unpack(sounds)}
    

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多