2014-01-10 40 views
0
Assets{ 
     static Assets instance; 
     AssetGamePlay play; 
     class AssetGamePlay{ 
      AtlasRegion block2; 
      -----code----- 
     } 
} 

這是我的課程的簡化外觀。LibGDX:如何優化Android遊戲中的資產處理?

我被Assets.instance.play.block2

調用可變塊2我打電話許多變數像這樣圍繞40-60倍在第二(渲染功能)。

所以我的問題是(Android遊戲):

  1. 這是要做到這一點是非常昂貴的辦法嗎?如果是,那我該如何改進?
  2. 我的課程流程實際上是節省了一點RAM,所以我實施了。
+0

請問你遇到了什麼問題?我無法想象這種處理資產可能會導致任何性能瓶頸。你應該編程你想要的,然後運行它。當它運行良好時,請保留它,否則,您只會分析並更改導致問題的部分。你不應該從微觀優化開始,你永遠不會注意到。 – noone

+0

@noone我knw先生這是一個微型優化。但爲LDPI製作遊戲我必須考慮到這種優化。無論如何,我發現我的方法非常有效率。對你們來說... ... – Vineet

回答

0

你不應該這樣做,而應該使用AssetManager來代替,它已經提供了以這種方式訪問​​,但更多的功能。

我通常不喜歡這樣:

public class YourGame { 

    public static AssetManager assets = new AssetManager(); 

    // load all necessary assets via the manager in advance 

    // use the manager like this anywhere in your code: 
    YourGame.assets.get("block2", Texture.class); 

} 
+0

我正在製作AssetManager .Sry,我在這裏提到了它(認爲它很明顯)。謝謝你的幫助... – Vineet

-2

如果這是Java,類,外表面(Assets)將只能訪問內(AssetGamePlay)的靜態成員。 但是,如果你有一個實例,屬性是公共的內部,你可以做一個getter方法:

Assets{ 
    static Assets instance; 
    AssetGamePlay play; 
    class AssetGamePlay{ 
     AtlasRegion block2; 
     //-----code----- 

    public AtlasRegion getBlock2(){ 
     return Assets.instance.play.block2; 
    } 
} 
+0

我不明白這是如何添加有用的東西在這裏。你基本上只是重複了他在問題中已經說過的話。 – noone

+0

我改正了,有一個'}'。而是使用'Assets.instance.play.block2',他將使用'Assests.getBlock2()' – lauksas

+0

他說:「這是我的課程的簡化外觀。」。他的問題不是如何訪問他的領域,而是關於通過libgdx在android上進行資產處理。你的回答對他沒有幫助。 – noone

0

我不明白這一點在做內部資產的內部類。你爲什麼不讓它直接,所以這樣的:

Assets.instance.play.block2; 

變爲這樣:

Assets.instance.block2; 

如果您有通過邏輯使用(播放,菜單等)劃分資產,然後使用方法來加載/卸載它們(使用Assetmanager,如noone suggests)。另外,如果您使用的是單例,您可能希望有一個獲取該實例的方法,如果該方法不存在,則創建該實例。

public static Assets getInstance(){ 
    if(instance==null) instance = new Assets(); 
    return instance; 
} 

所以你可以使用它像這樣:不必擔心靜態實例丟失不管出於什麼原因

Assets.getInstance().block2; 

最後:

這是一個非常昂貴的方式做到這一點?

Nop,它不是。我一直這樣對待它。

+0

先生,我做了getinstance(),但在這裏發佈我只是做了最低限度的線路。這是我的錯,Sry。 – Vineet

+0

我正在讓內部課程使我的Assest類更加分離.n m也在做動態加載。因此當用戶在播放btn時會創建AssetGAMEPLAY的對象,並在用戶返回主菜單時釋放該對象。 – Vineet

+0

然後你很好。不要擔心性能,這不會影響很多@Vineet – Lestat