隨着我的研究遍佈世界各地,我們應該只使用每個實例一個精靈。但是如果我在控制遊戲的類(調用不同的屏幕等)中將sprite批量設置爲靜態,該怎麼辦?靜態sprite批處理?
當我嘗試過這樣的工作就像魅力,但是這是一個很好的做法或將來可能會導致一些問題。那麼如果可以做到,我還可以分享舞臺和形狀渲染器嗎?
記:爲什麼我試圖去與「靜態一批技術」的主要原因是Java崩潰當我嘗試部署階段,精靈批量或形狀渲染
隨着我的研究遍佈世界各地,我們應該只使用每個實例一個精靈。但是如果我在控制遊戲的類(調用不同的屏幕等)中將sprite批量設置爲靜態,該怎麼辦?靜態sprite批處理?
當我嘗試過這樣的工作就像魅力,但是這是一個很好的做法或將來可能會導致一些問題。那麼如果可以做到,我還可以分享舞臺和形狀渲染器嗎?
記:爲什麼我試圖去與「靜態一批技術」的主要原因是Java崩潰當我嘗試部署階段,精靈批量或形狀渲染
我這樣做的,以及和到目前爲止,我沒有遇到任何問題。
您需要注意SpriteBatch.begin()
和SpriteBatch.end()
調用,因爲您可能永遠不知道它已經啓動的位置,以及共享時停止的位置。
同樣適用於Camera
/ProjectionMatrix。如果您正在使用着色器,也可用於當前使用的ShaderProgram
。
請確保您始終完全知道您的所在位置SpriteBatch
否則您可能會在一天內面臨奇怪的錯誤。
Stage
不應該被共享,因爲它可能用於不同的目的。對於不同的UI,僅使用一個Stage
沒有任何意義。
ShapeRenderer
可以共享,因爲它的作用類似SpriteBatch
,但可能你只想在一個地方使用它。
dispose()
實際上應該沒有任何問題。您必須確保以正確的順序處理所有內容,以免最終遺漏任何內容並導致異常。
好吧,那很棒。 對於我在哪裏使用我的批次,將不會有任何問題,因爲它一次只能使用一次。我將批處理傳遞給需要渲染的對象,這樣我就可以將所有東西都放在同一個地方 非常感謝評論 – raco
作爲@noone已經表示,不應該導致任何問題,如果你照顧。 但我只想指出另一件事:在某些Screen
s(MenuScreen
,OptionScreen
,...)中,您可能會使用Scene2dUi
來處理某些UI。因此,您將使用Stage
s,它們屬於Screen
並且不共享。所以在這種情況下,您應該記住,每個Stage
都有自己的SpriteBatch
和Camera
。所以它可能是,你只需要在 GameScreen
附加SpriteBatch
。如果是這種情況,我不會讓它變成靜態的,只有在GameScreen
。 由於沒有人說dispose()
應該工作,如果您使用正確的順序,所以也與更多然後1 SpriteBatch
應該不會造成任何問題。 所以我認爲這兩種方式都可以工作,而且是很好的方法。這取決於您的設計以及您想要如何/在哪裏使用SpriteBatche
s和Camera
s。
謝謝。我不知道舞臺。 – raco
沒問題。祝你好運! – Springrbua
使這種靜態似乎不是正確的方法。而不是嘗試傳遞spritebatch分享 –
感謝評論。好想法! – raco