Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio 如何使用Garry的mod从文件夹中选择random.wav/.mp3文件?_Audio_Lua_Garrys Mod - Fatal编程技术网

Audio 如何使用Garry的mod从文件夹中选择random.wav/.mp3文件?

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声音效果,没有重叠,并且是随机选择的 我在互联网上找不到足够有用的资源来帮助我,所以我求助于堆栈溢出。 如果您能在本主题中提供帮助,我将不胜感激。您

我最近开始编写一个程序,在源引擎游戏Garry's Mod中替换默认目录中的音效

这是当前代码:

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
资料来源: