第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

內(nèi)存泄漏。不斷上升直至游戲崩潰

內(nèi)存泄漏。不斷上升直至游戲崩潰

斯蒂芬大帝 2023-09-27 10:18:33
我是 Android 開發(fā)新手,我在游戲使用的內(nèi)存方面遇到了問(wèn)題。它不斷上升,直到崩潰。如果您能幫助我,我將不勝感激。謝謝。另外,關(guān)于Spritebatch,我是否需要在擴(kuò)展為游戲的java類中調(diào)用this.dispose才能將其釋放?如果可以的話我可以在哪里調(diào)用它?謝謝public class Pmacgame extends Game {    SpriteBatch batch;    BitmapFont font;    @Override    public void create () {        batch = new SpriteBatch();        font = new BitmapFont(Gdx.files.internal("r.fnt"));        this.setScreen(new Zero(this));    }    @Override    public void render () {        super.render();    }    @Override    public void dispose() {        font.dispose();        batch.dispose();    }}爪哇
查看完整描述

1 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

我正在閱讀字里行間,但看起來(lái)您必須在 Bullet/Target/Explosion 的構(gòu)造函數(shù)中加載紋理,因?yàn)槲覜](méi)有看到您將紋理或紋理區(qū)域引用傳遞給它們的構(gòu)造函數(shù)或方法render。


您應(yīng)該在單個(gè)類中加載所有紋理,并傳遞對(duì)游戲?qū)ο蟮囊?,以便它們“借用”和繪制。否則,您將無(wú)緣無(wú)故地加載相同圖像的許多副本。


此外,紋理是一次性的,這意味著它使用本機(jī)內(nèi)存,并且必須dispose()在讓垃圾收集器獲取它之前調(diào)用它。否則,本機(jī)內(nèi)存就會(huì)泄漏。


在你的例子中,所有這些子彈、目標(biāo)和爆炸都會(huì)一遍又一遍地加載許多紋理,并且當(dāng)你刪除它們時(shí)永遠(yuǎn)不會(huì)處理它們。


關(guān)于您關(guān)于 SpriteBatch 的問(wèn)題。是的,您應(yīng)該在實(shí)例化它的同一個(gè)類中處理它,并且dispose()這是執(zhí)行此操作的正確位置。


編輯,準(zhǔn)系統(tǒng)示例:


public class Assets implements Disposable {


    public final Texture horse;

    public final Texture bullet;

    // etc.


    public Assets (){

        horse = new Texture("horse.png");

        //...

    }


    public void dispose(){

        horse.dispose();

        //...

    }

}


public class Zero implements Screen, InputProcessor {

    private final Assets assets;

    //...


    public Zero (){

        assets = new Assets();

        //...

    }


    //...


    public void dispose(){

        assets.dispose();

        //...

    }

}


public class Bullet {

    //...


    public void render(SpriteBatch batch, Assets assets){

         batch.render(assets.bullet, /*...*/);

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-09-27
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)