2012-03-07 71 views
6

我想在LibGDX中使用AssetManager類,我理解它是如何工作的,但我試圖實現一個加載屏幕。我遵循AssetManagerTest.java文件here, ,但我很難找出如何使其正常工作。有人能指引我朝着正確的方向嗎?我的目標是加載資源(紋理,聲音,字體等),並在屏幕上更新完成百分比的條形圖。我不明白我提供的鏈接中的ResolutionFileResolverResolution[]。他們是爲了什麼?我的目標是支持一個靜態類,它可以讓我在任何屏幕上訪問我在遊戲中需要的所有資源。有沒有一個首選的方法來做到這一點?謝謝。AssetManager在LibGDX

回答

7

在查看ResolutionFileResolver以及其他「解析器」的源代碼後,我認爲這只是加載最適合屏幕分辨率的紋理的一種方式,但匹配僅基於文件名模式。

因此,在AssetManagerTest中,他獲得了屏幕尺寸爲320x480,480x800和480x854的紋理。看起來每組紋理都應該放在名爲「.320480」或「.480800」或「.480854」的目錄中(儘管名稱可以是任何你想要的,比如「低」,「高」和「寬」如果這些是您的目錄),並且在測試的line 56上創建解析器數組時指定所有這些信息。

做所有這些事情的好處是,當他撥打manager.load()時,他只是選擇了一個像「data/animation.png」這樣的文件名。然後解析器找到最接近當前屏幕分辨率的紋理包,並加載該紋理包。

我認爲這個例子的其餘部分應該很清楚,至少在AssetManager的基礎上。創建一個經理,設置加載器,調用load(),調用get()來使用它,然後在完成時調用unload()

對於更新進度條,您只需在每次加載調用後手動執行此操作。

而使用靜態類進行資產管理肯定是一種可能性。另一個類似的選擇是隻使用一個單例。它有它的仇敵,但我認爲在垃圾收集環境中的一個簡單項目中應該沒問題,儘管它與公共靜態一樣。

另一種選擇 - 可能是最好的 - 是使用一個基類,它具有遊戲全局變量的靜態副本,然後所有其他遊戲類都從它繼承。這是Replica島使用的方法。請參閱base classobject registry。 Replica Island評論很好,值得一試Android版& Java遊戲。

+1

非常感謝,清除了很多東西。我得到它的工作,我用你的建議,並做了一個基礎班,我真的很喜歡這樣,似乎更乾淨。謝謝您的幫助! – 2012-03-08 13:50:28