Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czy to dobra praktyka, by wyłączać program gdy ładowanie tekstury zakończone niepowodzeniem?

Ostatnio zmodyfikowano dzisiaj: 58 min
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
Czy to dobra praktyka, by wyłączać program gdy ładowanie tekstury zakończone niepowodzeniem?
» 2026-01-14 15:32:23
Cześć. Wpadłem na pewien pomysł, by w funkcji draw najpierw ładować tekstury, sprawdzać czy są załadowane jeżeli nie to wywalić z programu bo error i dopiero później sprajty renderować. Czy to dobra praktyka?
ps. nie wiem jak nazwać temat :-/

pierwotny kod

public void draw() {

    Texture backgroundTexture = AssetsManager.getTexture("tex/gameBoard.png");
    if(backgroundTexture!=null){
        Sprite background = new Sprite(backgroundTexture);
        background.setPosition(0,0 );
        background.draw(Renderer.spriteBatch);
    }

    Texture topPanelTexture = AssetsManager.getTexture("tex/topPanel.png");
    if(topPanelTexture != null){
        Sprite topPanel = new Sprite(topPanelTexture);
        topPanel.setPosition(0,Renderer.VIRTUAL_HEIGHT - topPanel.getHeight() );
        topPanel.draw(Renderer.spriteBatch);
    }
}

nowy kod

public void draw() {

    Texture backgroundTexture = AssetsManager.getTexture("tex/gameBoard.png");
    Texture topPanelTexture = AssetsManager.getTexture("tex/topPanel.png");

    if(backgroundTexture ==null) { System.out.println("backgroundTexture loaad failed"); exitProgram(); }
    if(topPanelTexture == null) { System.out.println("topPanelTexture loaad failed"); exitProgram(); }  
 
    Sprite background = new Sprite(backgroundTexture);
    background.setPosition(0,0 );
    background.draw(Renderer.spriteBatch);

    Sprite topPanel = new Sprite(topPanelTexture);
    topPanel.setPosition(0,Renderer.VIRTUAL_HEIGHT - topPanel.getHeight() );
    topPanel.draw(Renderer.spriteBatch);

}

P-183800
pekfos
» 2026-01-14 16:09:59
Ładowanie tekstur w taki sposób spowoduje przycięcie gry w przypadku gdy potrzebujesz cięższego zasobu, zwłaszcza gdy nośnik danych jest wolny. Lepiej to zrobić wcześniej, a jeżeli to będzie trwało, to dodać ekran ładowania.
Co do obsługi błędów, to lepiej użyć tekstury zastępczej (dobrze widocznej, np siatka z jaskrawymi kolorami) niż wywalić program. Powiedzmy że masz grę w której brakuje 10 tekstur. Żeby to wykryć musisz 10 razy uruchomić program i nakłonić go by w ogóle chciał sięgnąć po tą teksturę.
getTexture powinno odpowiadać za zalogowanie komunikatu błędu na konsoli i zwrócenie zastępczej tekstury. Wtedy tekstura zawsze istnieje i nie musisz za każdym razem sprawdzać zwracanej wartości.
P-183801
« 1 »
  Strona 1 z 1