为什么我的列表 clear/lose 它的内容? [罗布乐思]
Why does my list clear/lose its contents? [ROBLOX]
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 是否为空,如果是,它会用“声音”重新填充它。如果不是,它会播放第一个声音,然后将其删除。
结果,所有这些都应该创建一个音乐系统,但由于某种原因,在重新填充时,声音列表显示为空。尽管它不应该并且只被赋值一次。
谢谢。
你正在做的 table.remove(PlaySecondary, 1)
等于 table.remove(sounds, 1)
因为它们都指向同一个 table 由于 PlaySecondary = sounds
,所以它回来是空的因为你自己删除了之前的所有元素!
我假设你想要 create a copy of the table:
PlaySecondary = {unpack(sounds)}
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 是否为空,如果是,它会用“声音”重新填充它。如果不是,它会播放第一个声音,然后将其删除。 结果,所有这些都应该创建一个音乐系统,但由于某种原因,在重新填充时,声音列表显示为空。尽管它不应该并且只被赋值一次。
谢谢。
你正在做的 table.remove(PlaySecondary, 1)
等于 table.remove(sounds, 1)
因为它们都指向同一个 table 由于 PlaySecondary = sounds
,所以它回来是空的因为你自己删除了之前的所有元素!
我假设你想要 create a copy of the table:
PlaySecondary = {unpack(sounds)}