Java 如何从活动中正确启动libgdx游戏并向其传递数据?

Java 如何从活动中正确启动libgdx游戏并向其传递数据?,java,android,android-intent,libgdx,Java,Android,Android Intent,Libgdx,我想在用户从我的android应用程序“登录”/“登录”到libgdx游戏后传递一些凭据数据 首先我想问你,使用意图开始我的游戏是一种好的做法吗 我已经在manifest.xml文件中将我的开始活动声明为.LoginActivity(例如),然后在用户执行某些操作后,android端将使用下一个代码开始游戏: private void initializeListeners(){ button.setOnClickListener(new View.OnClickListene

我想在用户从我的android应用程序“登录”/“登录”到libgdx游戏后传递一些凭据数据

首先我想问你,使用意图开始我的游戏是一种好的做法吗

我已经在manifest.xml文件中将我的开始活动声明为.LoginActivity(例如),然后在用户执行某些操作后,android端将使用下一个代码开始游戏:

private void initializeListeners(){

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getBaseContext(), AndroidLauncher.class);
                startActivity(intent);
            }
        });
    }
是否有一些最佳实践我如何从活动开始我的游戏

另一个相关的问题是-如何将数据从android acitivity传递到libgdx游戏

我在这个链接上看到了一些建议:

我还没有使用Swarm框架(可能以后),我想使用自己的界面将数据传递到游戏中

我已经声明了下一个接口:

public interface DataPasser {
    void passData(String userName);
}
并在游戏核心部分的屏幕内实现,smth如下:

@Override
    public void passData(String userName) {
        font.draw(batch, userName, 0, 450);
    }
我只是用传递的数据绘制一个字符串

主要的问题是-我应该什么时候在我的android部件中调用这个方法

我正在调用意图,而游戏在意图中没有传递数据的情况下启动-这就是为什么我问-启动游戏的最佳方式是什么


我应该如何传递数据并开始游戏-请提出一些建议。

您没有太多的代码,所以很多都是一般性的提示

在核心模块中,您添加了一个具有所需参数的构造函数(假设您使用了项目生成器,则LibGDX游戏本身)

您添加了一个构造函数,其中包含两个字符串:用户名和密码


使用Intent将数据从一个活动传递到游戏活动,游戏活动将字符串发送到游戏的构造函数

您没有太多的代码,所以很多都是一般性的提示

在核心模块中,您添加了一个具有所需参数的构造函数(假设您使用了项目生成器,则LibGDX游戏本身)

您添加了一个构造函数,其中包含两个字符串:用户名和密码


使用Intent将数据从一个活动传递到游戏活动,游戏活动将字符串发送到游戏的构造函数

在此处编写您的android活动,并在构造函数中传递用户名

class AndroidLauncher : AndroidApplication() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState);
 AndroidApplicationConfiguration config = AndroidApplicationConfiguration()
    //pass your name here
    mainClass = ApplicationCore("username");
    initialize(mainClass, config);
}

/*
* all stuff code
*/
}
这是你的核心课程

public class ApplicationCore extends ApplicationAdapter {
public String userName;

public ApplicationCore(String userName) {
    this.userName=userName;
// use this username whenever you want.
}

@Override
public void create() {
    initGame();
}

private void initGame() {
  //write code for initialize
}

@Override
public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //render functionalities 
}

@Override
public void dispose() {
    batch.dispose();
}

@Override
public void resume() {
    super.resume();

}

@Override
public void pause() {
    super.pause();
}
}

在这里写下你的android活动,并在构造函数中传递用户名

class AndroidLauncher : AndroidApplication() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState);
 AndroidApplicationConfiguration config = AndroidApplicationConfiguration()
    //pass your name here
    mainClass = ApplicationCore("username");
    initialize(mainClass, config);
}

/*
* all stuff code
*/
}
这是你的核心课程

public class ApplicationCore extends ApplicationAdapter {
public String userName;

public ApplicationCore(String userName) {
    this.userName=userName;
// use this username whenever you want.
}

@Override
public void create() {
    initGame();
}

private void initGame() {
  //write code for initialize
}

@Override
public void render() {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    //render functionalities 
}

@Override
public void dispose() {
    batch.dispose();
}

@Override
public void resume() {
    super.resume();

}

@Override
public void pause() {
    super.pause();
}
}

基本上,您可以将字符串传递给游戏本身(可能在核心模块中)。您不需要为此使用接口或任何类,您可以直接发送数据并将其从何处绘制出来。谢谢您的建议。我尝试了第一个,它帮助了我。但它看起来还是有点难看,因为我应该使用构造函数或某些set方法将数据一直传递到目标类(用于绘制用户名的实现屏幕)。但我是libgdx新手——也许我使用父类的StpriteBatch对象在子类中使用它来绘制一些东西是错误的。我觉得直接将数据传递给类比处理接口和类更容易。你仍然可以使用构造器,你的任何项目都可以在核心模块中调用构造器。当然,你可以将字符串传递给游戏本身(可能在核心模块中)。您不需要为此使用接口或任何类,您可以直接发送数据并将其从何处绘制出来。谢谢您的建议。我尝试了第一个,它帮助了我。但它看起来还是有点难看,因为我应该使用构造函数或某些set方法将数据一直传递到目标类(用于绘制用户名的实现屏幕)。但我是libgdx新手——也许我使用父类的StpriteBatch对象在子类中使用它来绘制一些东西是错误的。我觉得直接将数据传递给类比处理接口和类更容易。您仍然可以使用构造函数,您拥有的任何项目都可以在核心模块中调用构造函数