Libgdx-如何正确处理声音文件
什么时候应该处理声音效果 我对音效和音乐有点困惑。对于音乐,我只是在一个关卡完成后处理它,因为我让音乐重复到关卡结束,然后音乐就不再使用了。有了音效,它们播放的时间很短,所以我不确定当一个音效完成后,一个新的音效播放相同的声音时会发生什么Libgdx-如何正确处理声音文件,libgdx,Libgdx,什么时候应该处理声音效果 我对音效和音乐有点困惑。对于音乐,我只是在一个关卡完成后处理它,因为我让音乐重复到关卡结束,然后音乐就不再使用了。有了音效,它们播放的时间很短,所以我不确定当一个音效完成后,一个新的音效播放相同的声音时会发生什么 例如,玩家角色可以射击一支枪,每次射击声音播放时。因此,如果播放机拍摄了6次,那么该音效是否像6个需要处理的独立声音一样处理,或者是一个声音文件,在不再需要时只处理一次,而不管它被使用了多少次?您不需要每次播放时都处理它。只需在处置其他游戏资产时处置它(即在处
例如,玩家角色可以射击一支枪,每次射击声音播放时。因此,如果播放机拍摄了6次,那么该音效是否像6个需要处理的独立声音一样处理,或者是一个声音文件,在不再需要时只处理一次,而不管它被使用了多少次?您不需要每次播放时都处理它。只需在处置其他游戏资产时处置它(即在处置游戏时从游戏处置方法调用它) 当玩家射击6次时,声音将同时播放6次。 从javadoc: 播放声音。如果声音已经在播放,将同时再次播放 但是没有6种不同的声音是你应该处理的或类似的 因此,为了回答您的问题:声音文件是否只在不再需要时处理一次,而不管它使用了多少次
是。对于小型项目/游戏:
create()
方法中创建一次,并在游戏中使用,不要丢弃它们
Sound sound = Gdx.audio.newSound(Gdx.files.internal("data/mysound.mp3"));
在退出游戏时调用的ApplicationListener
的Dispose()
方法中释放声音show()
方法中创建声音,并在Screen的dispose()
中进行处理,但是Screen的dispose()
不是由框架调用的,所以您需要自己从Screen的hide()
方法调用dispose()方法AssetManager来管理资源
您必须使用AssetManager,因为您必须管理大量的资源。您所说的6种不同的声音是什么意思?这是6种不同声音文件的
声音
吗,比如x1.mp3
,x2.mp3
,x3.mp3
?我使用了一个声音文件播放6次的例子。我有一个特定的资产类,我有我的AssetManager和所有与声音、音乐和纹理相关的东西。我在游戏的create()中创建该类的静态对象,当游戏运行pause()时,我调用assets类dispose()。我有一个问题,当游戏重新加载时,按下home键,纹理消失,所以现在我在调用pause()时处理纹理,并在游戏重新加载时重新加载纹理。在home/reload中的内存使用量仍然有所增加,但我不确定这是否与此相关。还在研究中。内存增加的问题就是为什么我问这个关于音效的问题,因为我只处理了一次,我只是不知道我是否做得不对,这可能会导致我的另一个问题。@ace106我不认为你有内存问题,如果你在游戏的最后/结束时创建一次并进行处理。