如何在本地Android中嵌入多个Unity模块?

7

我遇到了一个问题。已经有人提出了此问题,但这个问题没有答案。

问题相关视频

如题所示,如何在原生 Android 项目中集成多个 unity 模块或库。我按照很多步骤去操作,但是我没能解决这个问题。根据 UNITY技术 的说明,我必须将 Unity 库集成到我的项目中。我已经为两个 unityLibrary 完成了这个过程。对于第二个库,我必须更改包和类名称,使其正常运行。在完成所有这些更改后,我的项目成功构建,并且编译不会出现任何错误。当我单击加载第一个游戏时,它正在加载第一个游戏。但是当我单击加载第二个游戏时,它仍然只加载第一个游戏。

下面是我 Android Studio 的截图。

enter image description here

我会给你更多关于这个问题的描述。

*在app模块内,有两个命名为MainActivityGameHolderActivityActivity。下面是MainActivity.java的代码。

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.btn1Click).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, GameHolderActivity.class);
            intent.putExtra("game", 1);
            startActivity(intent);
        }
    });
    findViewById(R.id.btn2Click).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, GameHolderActivity.class);
            intent.putExtra("game", 2);
            startActivity(intent);
        }
    });
}
}

接下来,我将提供GameHolderActivity.java代码的翻译。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
//FIRST GAME ACTIVITY
import com.unity3d.player.UnityPlayerActivity;
//SECOND GAME ACTIVITY
import com.game.player.GamePlayerActivity;
public class GameHolderActivity extends Activity {
private String TAG = "GAME_HOLDER_ACTIVITY";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first_game);

    if (getIntent().hasExtra("game") && getIntent().getIntExtra("game", 0) == 1) {
        Log.d(TAG, "FIRST_GAME");
        Intent intent = new Intent(GameHolderActivity.this, UnityPlayerActivity.class);
        startActivity(intent);
    } else {
        Log.d(TAG, "SECOND_GAME");
        Intent intent = new Intent(GameHolderActivity.this, GamePlayerActivity.class);
        startActivity(intent);
    }
}
}

在整个过程中,我只更改了一个库包名称,以便能够识别我的第二个游戏活动。

而且我已经在build.gradle(Module: app)中的android{}里添加了一件事。

packagingOptions {
    pickFirst '**/*.so'
}

我尝试了以下教程,但对于多个游戏没有得到任何积极反应。请提供解决方案,这样我就可以在我的本地Android应用程序中打开我的两个Unity游戏。非常感谢您的帮助。参考文献如下:

你有找到任何解决方案吗?请分享。 - Ken Zira
@KenZira 请阅读我已经发布的答案。 - Pushpendra
1个回答

3

开发者们,如果你们遇到了这个问题,我想告诉你们Unity Technology不支持这个功能。

因此,你不能在你的原生安卓应用程序中使用多个unityLibrary。

那么我们该怎么做才能实现我们的目标呢?

关于这一点,我咨询了专家,进行了研究,并与Unity支持团队进行了沟通。为了实现我们的目标,我们必须将所有游戏绑定到一个单一的库中,也就是说,我们必须将所有游戏绑定到一个单一的项目中。然后,我们将从安卓端向Unity端发送一些标识符,以便我们可以确定我们要玩哪个游戏。然后,在验证后,从Unity端加载特定的场景或游戏。这样,我们就可以根据您的需求玩多个游戏。


1
有没有关于将Unity游戏集成到Android项目中对游戏性能产生影响的博客/参考资料? - djkpA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接