小编gts*_*101的帖子

Android - 在活动中嵌入Unity3d场景 - 需要取消注册接收器吗?

我已经成为一名SO成员了一段时间,但从未真正问过一个问题,所以这里......

我的目标

我正在尝试制作一个包含两项活动的Android应用.第一个是菜单屏幕(使用标准的Android UI元素),其中有一个用于打开游戏活动的按钮.游戏活动将包含一些标准的Android UI元素和包含Unity 3D场景的FrameLayout.

我正在使用Unity 5和Eclipse Luna.

我有什么工作

我用一个简单的按钮创建菜单屏幕,开始第二个活动.我已经按照本教程设法将我的Unity场景嵌入到我的第二个活动中.到目前为止一切都好...

问题

我第一次开始玩游戏活动它工作正常(我可以看到嵌入在我的FrameLayout中的Unity场景),但如果我关闭活动(返回菜单活动)然后再次启动游戏活动我得到此错误.. .

Activity has leaked IntentReceiver com.unity3d.player.UnityPlayer$17@41866de0 that was originally registered here.  Are you missing a call to unregisterReceiver()?
Run Code Online (Sandbox Code Playgroud)

我试过的

我在线搜索了很多,看起来我需要在onPauseonDestroy上调用类似的东西;

m_UnityPlayer.currentActivity.unregisterReceiver(receiver);
Run Code Online (Sandbox Code Playgroud)

...但我不知道接收器是什么,所以我无法在我的unregisterReceiver调用中引用它.我已经尝试创建一个BroadcastReceiver,注册它然后取消注册onPause但它没有任何区别.

在团结论坛上找到了一个帖子,询问了完全相同的问题但是,令人沮丧的是,它没有答案(Unity论坛上的很多问题似乎都没有答案,这就是我带着这个问题来到这里的原因).

我也试过在onDestroy中调用这个方法但是当我关闭游戏活动时它实际上会退出我的整个应用程序.

m_UnityPlayer.quit();
Run Code Online (Sandbox Code Playgroud)

代码示例

这是我的游戏活动的代码(为清楚起见,我删除了导入);

public class MyEmbeddedUnityActivity extends Activity {
    private UnityPlayer m_UnityPlayer;
    IntentFilter filter = new IntentFilter("");
    private BroadcastReceiver bRec = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, …
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine

8
推荐指数
1
解决办法
6361
查看次数

标签 统计

android ×1

unity-game-engine ×1