您需要查看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
来源:个人经历