你會想看看file.Find函數。
我建議有一個自定義文件夾,如sound/customsteps/
,您可以在其中放置所有自定義聲音。我也建議使用.wav
格式的聲音文件,但其他一些工作(.mp3
和.ogg
,如果我沒記錯的話)。
在你的代碼,只需調用local snds=file.Find("sound/customsteps/*", "GAME")
,讓你的表,那麼你可以簡單地選擇使用local snd=snds[math.random(1,#snds)]
列表中隨機一個,發揮它作爲你在上面的代碼做 - ply:EmitSound(snd)
。
請確保您創建了GM:PlayerFootstep
函數以外的聲音表,以便它只運行一次。我也建議預先傳播所有的聲音。您可以通過表循環,並呼籲他們util.PrecacheSound(path)
,像這樣做:
for k,v in pairs(snds) do
util.PrecacheSound(v)
end
因此,所有考慮到這一點 - 你的最終代碼應該是這個樣子:
local snds=file.Find("sound/customsteps/*", "GAME")
for k,v in pairs(snds) do
util.PrecacheSound(v)
end
function GM:PlayerFootstep(ply, pos, foot, sound, volume, rf)
ply:EmitSound(snds[math.random(1,#snds)])
return true
end
來源:personal experience