3

我正在使用 libgdx 为 Android 开发游戏,我想知道如何制作 Android UI 元素,例如 EditText 和 Button。我知道它只适用于 Android,所以我会做这样的事情:

if (Gdx.app.getType() == Application.ApplicationType.Android ) {
...
}

我发现 scene2d.ui 可能会有所帮助,但我不使用 scene2d(演员、舞台等)并且不太熟悉它。相反,我使用的是屏幕,如下所示:

public class GameScreen implements Screen {
...
}

我在游戏原型防御(用 libgdx 编写)中看到这是可能的。

4

2 回答 2

2

所有 Android 特定的代码都必须存在于 Android 后端。您不能在公共项目中使用特定于 Android 的代码。

当前所有的 libGDX UI 元素都是基于 OpenGL 的自定义元素(因此它们在 libGDX 支持的所有平台上都有些一致)。没有包装 Android UI 原语的元素。对于按钮、标签或列表等简单的东西,我建议使用 libGDX UI 组件以实现可移植性。对于更复杂的元素,如文本输入或与平台交互(例如,共享或其他),您可以使用标准的“定义接口”方法来调用特定于平台的代码。

具体来说,假设您要弹出一个对话框让用户输入他们的姓名。定义

public interface PlatformUI {
   public void showHighscoreNameEdit();
}

然后在你的 Android 项目中使用 Android 原语在一个类中实现这个接口。然后将此对象的一个​​实例传递给您的通用代码的构造函数。现在通用代码可以“调出”到Android层。

在 Android 初始化代码中是这样的:

AndroidUI androidUI = new AndroidUI(...);
initialize(new Game(androidUI));

在平台代码中是这样的:

if (timeToShowEditBox) {
  androidUI.showHighscoreNameEdit();
}

正如@android developer 指出的那样,AdMobInLibgdx wiki 页面涵盖了这一点,目的是调用 Android 特定的 AdMob 库,在这种情况下非常相似。

于 2012-12-09T17:24:40.377 回答
1

仅在 android 项目中使用 android UI。

他们有一个如何为 admob 广告做的例子,这样你就可以在你的游戏上放广告。

于 2012-12-08T22:14:01.790 回答