LibGDX 게임 및 응용 프로그램 어댑터


12

새 LibGDX 프로젝트를 만들면 Core 프로젝트의 기본 클래스가 ApplicationAdapter를 확장 합니다. 그 모습은 다음과 같습니다.

package com.marimba.apptest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;

public class AppMain extends ApplicationAdapter {   
    @Override
    public void create () {

    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    }
}

따라서 화면 간을 전환하기 위해 setScreen 메서드를 호출 하려면 ApplicationAdapterGame 으로 변경해야합니다 . 그래서 ApplicationAdapter 의 사용법은 무엇 입니까? 언제 사용합니까?

답변:


7

@ user3068350이 말했듯이 Game과 ApplicationAdapter는 ApplicationListener를 구현합니다. 게임에서 화면 인터페이스를 사용하려는 경우 게임을 확장하는 것이 유용하지만 일부 개발자는 다른 방식으로 화면 관리를 원하는 방식으로 처리하려고 할 수 있습니다. 이 경우 ApplicationAdapter가 확장됩니다.

개인적으로, 나는 렌더 메소드를 업데이트 및 그리기로 분리하여 클래스가 사용자 정의 업데이트 가능 및 / 또는 Drawable 인터페이스를 구현하는 것을 좋아합니다. 이 경우 Screen을 사용하면 인터페이스에 render 메소드가 포함되므로 목적을 무효화합니다.


1

Game 클래스는 ApplicationListener 인터페이스를 구현하며 다른 화면간에 쉽게 전환 할 수 있도록 설계된 클래스입니다. ApplicationListener의 메소드가 호출되면, Game 클래스는 현재 설정된 화면으로 위임하는 것을 처리합니다.


1
하지만 언제 ApplicationAdapter를 사용해야합니까? 여기에서 스크린을 어떻게 사용합니까?
Vahe Muradyan

2
ApplicationAdapter를 사용할 필요가 없습니다. ApplicationAdapter와 Game은 모두 ApplicationListener 인터페이스를 구현합니다. 어댑터 클래스는 인터페이스에 대한 스켈레톤 구현을 제공하는 클래스이므로 빈 메소드 본문으로 코드를 어지럽 힐 필요가 없습니다. 게임에서 화면을 사용하려면 setScreen을 호출하고 Screen 인터페이스를 구현하는 클래스를 전달하십시오. 화면 클래스를 생성자에서 Game 객체로 가져 와서 화면 내에서 화면을 변경할 수 있습니다.
user3068350

1
왜 사용하지 않으면 ApplicationAdapter를 만들었습니까?
Vahe Muradyan

2
@VaheMuradyan, 사용자는 이미 다음과 같이 대답했습니다. 빈 메소드 본문으로 코드를 어지럽 힐 필요는 없습니다. ApplicationListener직접 구현할 때는 필요하지 않은 방법 ( pause()또는 resume()항상 사용되지 않는 방법)을 포함하여 필요한 모든 방법을 제공해야합니다 . ApplicationAdapter당신의 편의를 위해 거기에 있으므로 빈 메소드를 유지할 필요가 없습니다. 간단한 유틸리티 클래스이며 새로운 기능을 추가하지 않습니다. 코드를 더 깨끗하게 (또는 더 짧게 ) 유지합니다 .
JustACluelessNewbie

1

ApplicationAdapter와 Game 클래스는 ApplicationListener 인터페이스를 구현하므로 게임을 만들 때 거의 상호 교환 적으로 사용될 수 있습니다. 화면을 사용하여 설정 한 경우 두 옵션으로 모두 구현할 수 있습니다.

게임 클래스는 화면을 사용하여 더 많은 오버 헤드가 조금 있습니다. 그러나이 오버 헤드는 게임에서 다양한 단계 / 레벨을 쉽게 구현할 수 있도록 설계되었습니다. 이 오버 헤드는 최소라는 점에 유의해야합니다.

ApplicationAdapter 에는 추가 오버 헤드가 없습니다 ( ApplicationListener 의 직접적인 구현입니다). 이를 통해 모든 것을 직접 수행해야 할 때 더 많은 제어 기능을 제공합니다. 개인적으로 저는 ApplicationAdapters를 선호합니다.

TL; DR : 그들 사이에는 실질적인 차이가 없습니다. ApplicationAdapter는 약간의 제어력을 제공하며 게임은 조금 덜 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.