2012-11-10 22 views
6

我正在爲Android遊戲創建一個UI系統,該系統將有一個大的(高達4096x4096)背景區域,其中菜單可以放置在該屏幕內的任何位置,並且相機將在不同的菜單是需要的。我希望能夠輕微製作動畫,而不是擁有大量的靜態圖片。我想知道的是如何有效地做到這一點,而不會滯後設備。這是我想出來的,到目前爲止的方法,但也許有更好的東西..使用Libgdx的動畫背景

1)有背景3個獨立的4096×4096的靜態層,1是天上,一個是地形,一個是雲朵和樹木之類的東西。每層都放置在彼此的頂部,Z空間略有不同,以便在相機移動時產生一點視差效果。

2)有一個很大的固定背景圖像,其上有一層雲層,樹木和其他應該動畫的特定精靈。我認爲這可能是最有效的途徑,因爲我可以選擇不使動畫不可見的部分動起來,但它也會限制可重用性,因爲每個不同的對象都必須手動放置在空間中。我的目標是能夠簡單地改變資產並且能夠有一個全新的遊戲。

3)有1個大的背景層,幾個幀幾乎像一個視頻播放。我覺得這將是性能最差的(加載幾個4096x4096幀,並每秒繪製一個不同的幀),但會給我這個場景,我完全不知道如何直接從After Effects中取出它。我懷疑這個問題甚至是可行的,不僅僅是因爲繪圖,而且android設備上的存儲空間僅僅用於菜單用戶界面不會允許多個6MB幀。

這些方向是否正確?我已經看到一些類似的問題,但沒有一個足夠接近我需要的東西(一個大的,不是由瓷磚組成的背景)。

任何幫助表示讚賞。

+1

我想,我是最好的,但我不是很瞭解libgdx – jcw

+0

確保只繪製可見項。跟蹤所有項目,但只繪製當前查看的項目。 –

+0

我想我可能會將#1用於實際的遊戲玩法,以及類似於#2的菜單系統。仍然對更好的建議感興趣! – ABlankenship

回答

3

只要你的問題被標記爲Android,我會推薦第二個解決方案。

主要原因是解決方案#1和#3涉及加載衆多4096x4096紋理。 快速計算:具有這種分辨率的三個32位紋理將使用至少200MB的視頻RAM。這意味着你可以立即丟棄很多Android設備。

另一方面,解決方案#2只涉及兩個大紋理:一個大的固定背景圖像和一個紋理地圖集,其中包含特定的雲霧,樹木紋理... 這種解決方案實際上對記憶更加友好,會導致相同的音樂輸出。

TL; DR:3個解決方案,將工作的偉大,但只有#2將適合嵌入式設備