Libgdx-如何正确处理声音文件

Libgdx-如何正确处理声音文件,libgdx,Libgdx,什么时候应该处理声音效果 我对音效和音乐有点困惑。对于音乐,我只是在一个关卡完成后处理它,因为我让音乐重复到关卡结束,然后音乐就不再使用了。有了音效,它们播放的时间很短,所以我不确定当一个音效完成后,一个新的音效播放相同的声音时会发生什么 例如,玩家角色可以射击一支枪,每次射击声音播放时。因此,如果播放机拍摄了6次,那么该音效是否像6个需要处理的独立声音一样处理,或者是一个声音文件,在不再需要时只处理一次,而不管它被使用了多少次?您不需要每次播放时都处理它。只需在处置其他游戏资产时处置它(即在处

什么时候应该处理声音效果

我对音效和音乐有点困惑。对于音乐,我只是在一个关卡完成后处理它,因为我让音乐重复到关卡结束,然后音乐就不再使用了。有了音效,它们播放的时间很短,所以我不确定当一个音效完成后,一个新的音效播放相同的声音时会发生什么


例如,玩家角色可以射击一支枪,每次射击声音播放时。因此,如果播放机拍摄了6次,那么该音效是否像6个需要处理的独立声音一样处理,或者是一个声音文件,在不再需要时只处理一次,而不管它被使用了多少次?

您不需要每次播放时都处理它。只需在处置其他游戏资产时处置它(即在处置游戏时从游戏处置方法调用它)

当玩家射击6次时,声音将同时播放6次。 从javadoc:

播放声音。如果声音已经在播放,将同时再次播放

但是没有6种不同的声音是你应该处理的或类似的

因此,为了回答您的问题:声音文件是否只在不再需要时处理一次,而不管它使用了多少次


是。

对于小型项目/游戏:

  • 您在PlayScreen上使用的任何声音,请在游戏的
    create()
    方法中创建一次,并在游戏中使用,不要丢弃它们

    Sound sound = Gdx.audio.newSound(Gdx.files.internal("data/mysound.mp3"));
    
    在退出游戏时调用的
    ApplicationListener
    Dispose()
    方法中释放声音

  • 在Screen界面的
    show()
    方法中创建声音,并在Screen的
    dispose()
    中进行处理,但是Screen的
    dispose()
    不是由框架调用的,所以您需要自己从Screen的
    hide()
    方法调用dispose()方法

  • 使用AssetManager并通过根据需要加载、卸载和在ApplicationListener中的dispose中处置
    AssetManager来管理资源

  • 资源方面的大型项目/游戏


    您必须使用AssetManager,因为您必须管理大量的资源。

    您所说的6种不同的声音是什么意思?这是6种不同声音文件的
    声音
    吗,比如
    x1.mp3
    x2.mp3
    x3.mp3
    ?我使用了一个声音文件播放6次的例子。我有一个特定的资产类,我有我的AssetManager和所有与声音、音乐和纹理相关的东西。我在游戏的create()中创建该类的静态对象,当游戏运行pause()时,我调用assets类dispose()。我有一个问题,当游戏重新加载时,按下home键,纹理消失,所以现在我在调用pause()时处理纹理,并在游戏重新加载时重新加载纹理。在home/reload中的内存使用量仍然有所增加,但我不确定这是否与此相关。还在研究中。内存增加的问题就是为什么我问这个关于音效的问题,因为我只处理了一次,我只是不知道我是否做得不对,这可能会导致我的另一个问题。@ace106我不认为你有内存问题,如果你在游戏的最后/结束时创建一次并进行处理。