gpt4 book ai didi

android - Libgdx 或原生的

转载 作者:行者123 更新时间:2023-11-29 15:58:09 26 4
gpt4 key购买 nike

我正在寻找制作游戏,我需要涉及原生 android sdk 功能,例如 toast、对话框、应用程序计费、其他 google Api、gcm ..等当我构建工具应用程序时,我对 android sdk 非常有经验,我使用动画和非常简单的表面 View 。

然而,我研究了 libdgx,看起来很有前途,但我发现的唯一缺点是“与 Android 原生 sdk 的集成不太容易”。即,我不能只开始自己的 Activity 或调用 native api,除非我错过了它

所以我想知道,在这种情况下我应该使用 libgdx 还是应该使用 native 路由?

谢谢

最佳答案

如果您确定不打算以其他平台为目标,您只需将代码从默认核心项目移至您的 Android 项目并从那里开始工作,随意调用任何 API。但是您将失去在桌面上进行测试的能力。

为了保持对其他平台的可移植性和在桌面上进行测试的能力,您可以创建一个接口(interface),列出您要调用的所有 Android API 方法。将此接口(interface)的一个实例传递到您的 Android 项目中的游戏构造函数中,以便您的游戏可以间接调用它们。您的桌面项目可以使用空或系统日志记录方法传入此接口(interface)的实例。

例子:

public class MyGdxGame extends ApplicationAdapter {

public interface AndroidAPIAdapter {
public void makeToast(String msg);
public void startActivity(int activityNumber);
}

AndroidAPIAdapter androidAPIAdapter;

public MyGdxGame (AndroidAPIAdapter androidAPIAdapter){
this.androidAPIAdapter = androidAPIAdapter;
}

//Call this from game code in core project as needed
public void makeToast(String msg){
if (androidAPIAdapter!=null)
androidAPIAdapter.makeToast(msg);
}

//Call thisfrom game code in core project as needed
public void startActivity(int activityNumber){
if (androidAPIAdapter!=null)
androidAPIAdapter.startActivity(activityNumber);
}

//...
}

与:

public class MyGameActivity extends AndroidApplication implements AndroidAPIAdapter {

public static final int ACTIVITY_SETTINGS = 0;
public static final int ACTIVITY_ABOUT = 1;
//etc.

public void onCreate (Bundle bundle) {
super.onCreate(bundle);

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useImmersiveMode = true;
initialize(new MyGdxGame(this), config);
}

@Override
public void makeToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT);
}

@Override
public void startActivity(int activityNumber) {
switch (activityNumber){
case ACTIVITY_SETTINGS:
startActivity(this, MySettingsActivity.class);
break;
case ACTIVITY_ABOUT:
startActivity(this, MyAboutActivity.class);
break;
}
}
}

关于android - Libgdx 或原生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26645211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com