如何在原生android中嵌入多个统一模块?

Pus*_*dra 5 c# java android unity-game-engine

我遇到了一个问题。这个问题已经有人问过了。但是这个问题没有答案。

问题相关视频

根据这个问题的标题。如何在原生android项目中集成多个unity模块或库。我遵循了很多程序。但是我没有得到这个问题的解决方案。根据UNITY TECHNOLOGY指令,我必须将统一库集成到我的项目中。我已经为两个 unityLibrary 完成了这个。对于第二个库,我必须更改包和类名。并让它发挥作用。完成所有这些更改后,我的项目构建成功并且编译没有任何错误。当我点击加载第一个游戏时,它正在加载第一个游戏。但是当我点击加载第二个游戏时,它也只加载了第一个游戏。

下面是我的 android studio 的截图。

在此处输入图片说明

我正在与您分享有关此的更多描述。

*里面app module有 2 Activity,命名为MainActivityand GameHolderActivity。下面是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);
        }
    });
}
}
Run Code Online (Sandbox Code Playgroud)

在那之后,现在我提到了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);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

在整个过程中,我只更改了一个库包名称。这样我就可以确定我的第二个游戏活动。

我在我的build.gradle(Module:app)里面又添加了一件东西android {}

packagingOptions {
    pickFirst '**/*.so'
}
Run Code Online (Sandbox Code Playgroud)

我为此尝试了以下教程,但没有得到多个游戏的任何积极响应。

所以请给我提供解决方案,以便我可以在我的原生 android 应用程序上打开我的两个 Unity 游戏。我将非常感谢您的帮助。

Pus*_*dra 3

开发商。如果您正为这个问题所困扰。那么我想告诉你Unity Technology不支持这个。

所以总而言之,你不能在你的 Native android 应用程序中使用多个 unityLibrary。

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

对此,我咨询了专家,也做了研究,也与Unity支持团队进行了沟通。为了实现我们的目标,我们必须为所有游戏创建一个库。这意味着我们必须将所有游戏绑定到一个项目中。之后我们将从 android 端发送一些标识符到 Unity 端。这样我们就可以确定我们必须玩哪个游戏。然后,在验证之后,我们将从统一方面加载该特定场景或游戏。这样我们就可以根据您的要求玩多个游戏。