我正在構建一個20級的遊戲,並有大約15個音樂文件。目前,我在遊戲開始時使用cocos denshion預載所有15種聲音。然而,遊戲在幾個級別後崩潰。我收到一個'節目接收信號:「0」。數據格式化程序暫時不可用「錯誤。我認爲這是因爲缺乏運行遊戲的內存。在遊戲開始之前預裝所有聲音文件會更好嗎?
這是由於預加載聲音文件嗎?什麼是好的做法?在每個級別之前預先加載聲音會更好嗎?
您的建議非常感謝。
感謝 AC
我正在構建一個20級的遊戲,並有大約15個音樂文件。目前,我在遊戲開始時使用cocos denshion預載所有15種聲音。然而,遊戲在幾個級別後崩潰。我收到一個'節目接收信號:「0」。數據格式化程序暫時不可用「錯誤。我認爲這是因爲缺乏運行遊戲的內存。在遊戲開始之前預裝所有聲音文件會更好嗎?
這是由於預加載聲音文件嗎?什麼是好的做法?在每個級別之前預先加載聲音會更好嗎?
您的建議非常感謝。
感謝 AC
這取決於文件(以及它們是如何存儲在內存中)的大小,以及任何額外的緩衝器。你可能在任何特定的時間只需要一些手頭上的東西 - 你可以加載一些你需要的給定級別的數據,然後在關卡末尾卸載它們嗎?
甚至更好:AudioToolbox.framework還具有增量讀取文件以供回放的例程。如果內存非常稀少,您可以通過實時(緩衝)的磁盤讀取操作。再次,它取決於聲音文件在加載時的消耗內存量以及如何使用它們(例如,它們可能很短並且循環 - 信息不在描述中)。
運行儀器以瞭解正在使用多少內存,您應該能夠確定是否存在這個問題,然後在那裏用一種時間方法測試一個或兩個負載。您也可以在收到內存警告時卸載聲音。
樂器幫助不大。我正在尋找一個良好的聲音引擎,可以讓我控制在需要時加載卸載。有什麼建議麼? – abhinav 2010-10-12 00:43:29
嗨賈斯汀,聲音文件是每個約190kb。這是一個循環的小文件。現在我一開始就加載這些聲音文件。我正在使用緩衝區來存儲它們。我只是不知道cocos是否爲聲音文件和單獨的紋理緩衝區使用單獨的緩衝區。有時候它崩潰時會給我一個Level2內存警告,然後釋放所有的紋理。我不確定這是否也可能是由於聲音文件造成的。無論哪種方式,我只是想知道預加載聲音的最佳做法。 只是爲了澄清:我每次只需要一個聲音。 – abhinav 2010-10-08 19:15:00
190k對音頻不重要。我假設該文件是lpcm。如果它被壓縮,那麼您的音頻引擎可以在加載時將其轉換爲本地lpcm(並消耗內存的幾倍)。如果它是lpcm(並且消耗的內存大約是文件本身的內存),那麼我不會擔心從磁盤流式傳輸 - 我只會在級別更改時加載/卸載。找出實現實際使用的數量是一個好主意,特別是如果您繼續達到內存上限。這應該會減少你的內存消耗幾MB,並且應該非常快 - 包括更快的啓動 – justin 2010-10-08 19:29:21