Audio 如何使用Garry的mod从文件夹中选择random.wav/.mp3文件?
我最近开始编写一个程序,在源引擎游戏Garry's Mod中替换默认目录中的音效 这是当前代码:Audio 如何使用Garry的mod从文件夹中选择random.wav/.mp3文件?,audio,lua,garrys-mod,Audio,Lua,Garrys Mod,我最近开始编写一个程序,在源引擎游戏Garry's Mod中替换默认目录中的音效 这是当前代码: function GM:PlayerFootstep( ply, pos, foot, sound, volume, rf ) ply:EmitSound("gear1") return true end 我想发射多个.wav声音效果,没有重叠,并且是随机选择的 我在互联网上找不到足够有用的资源来帮助我,所以我求助于堆栈溢出。 如果您能在本主题中提供帮助,我将不胜感激。您
function GM:PlayerFootstep( ply, pos, foot, sound, volume, rf )
ply:EmitSound("gear1")
return true
end
我想发射多个.wav声音效果,没有重叠,并且是随机选择的
我在互联网上找不到足够有用的资源来帮助我,所以我求助于堆栈溢出。
如果您能在本主题中提供帮助,我将不胜感激。您将需要查看此主题的函数 我建议你有一个自定义文件夹,比如sound/customsteps/你可以把所有的自定义声音放在那里。我还建议对声音文件使用.wav格式,但如果我没记错的话,其他一些文件可以使用.mp3和.ogg 在您的代码中,只需调用local snds=file.Find sound/customsteps/*,游戏将为您提供一个表格,然后您只需使用local snd=snds[math.random1,snds]从列表中随机选择一个,并按照您在上述代码中所做的操作进行播放-ply:EmitSoundsnd 确保在GM:PlayerFootstep函数之外创建声音表,以便它只运行一次。我还建议对所有声音进行预处理。您可以通过在表中循环并对其调用util.PrecacheSoundpath来实现这一点,如下所示:
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
资料来源: