2017-06-08 24 views
0

何時應該處理聲音效果?Libgdx - 如何正確處理聲音文件

我對音效與音效有點混淆。有了音樂,我只需在音量完成時處理它,因爲我已經重複音樂直到音量結束,然後不再使用音樂。有了聲音效果,他們會播放很短的時間,所以我不確定當完成一個並且新的一個播放相同的聲音時會發生什麼。

例如,玩家角色可以拍攝槍並且每次拍攝聲音播放。因此,如果播放器發射了6次,那麼這種聲音效果就像是需要處理的6個獨立聲音一樣處理,或者是一個聲音文件,只要在不再需要時處理一次,無論它使用了多少次?

+0

你是什麼意思6個獨立的聲音?它是不同的聲音文件的'聲音'像'x1.mp3','x2.mp3','x3.mp3' ...? – Aryan

+0

我正在使用一個正在播放6次的聲音文件的示例。 – ace106

回答

1

每次播放時都不需要處理它。只要在處理其他遊戲資產時進行處理(即在遊戲處置時從Game dispose方法中調用它)。

當玩家發射6次時,聲音將同時播放6次。 來自javadoc:

播放聲音。如果聲音已經播放,則會同時播放。

但是沒有6種不同的聲音你應該處置或類似的東西。

所以要回答你的問題:是一個聲音文件只有在不再需要時被丟棄一次,無論它使用了多少次?

是的。

0

對於小型項目/遊戲:

  1. 你使用的播放屏幕的任何聲音,在遊戲中的create()方法創建一次,並用你的遊戲裏面沒有處理掉。

    Sound sound = Gdx.audio.newSound(Gdx.files.internal("data/mysound.mp3")); 
    

    處置聲音的ApplicationListenerdispose()方法,當您退出遊戲時調用。

  2. 在屏幕界面的show()方法創建您的聲音,並處理他們在屏幕的dispose()但屏幕的dispose()不是由框架調用,所以你需要自己打電話,以便調用Dispose()方法,從屏幕的hide()方法。

  3. 使用AssetManager和裝載管理您的資源,你需要卸載和處置您的AssetManager在處置中ApplicationListener。

對於大項目對接洽談/遊戲在資源明智

,因爲您對管理資源的大量的,必須使用AssetManager。

+0

我有一個特定的資產類,其中有我的AssetManager以及與聲音,音樂和紋理相關的所有內容。我在Game的create()中創建該類的靜態對象,當遊戲運行pause()時,我調用assets類dispose()。當遊戲重新加載時,我遇到了主鍵被按下並且紋理消失的問題,所以現在我在調用pause()時處理紋理,並在遊戲重新加載時重新加載紋理。家庭/重新加載的內存使用量仍有增加,但我不確定它與此有關。仍在努力。 – ace106

+0

內存增加的問題是爲什麼我問這個關於聲音效果的問題,因爲我一次只處理它們,而我只是不知道自己是否做錯了,這可能會導致我的其他問題。 – ace106

+0

@ ace106我不認爲你有內存問題,如果你創建一次,並在遊戲的最後/末尾處置。 – Aryan