【问题标题】:Return from unity activity to MainActivity in android studio从统一活动返回到 Android Studio 中的 MainActivity
【发布时间】:2016-05-13 00:04:53
【问题描述】:

我在 android studio 中制作了一个应用程序,在 Unity 中制作了一个游戏。现在我想将这两者结合在一起。在android调用unityNativePlayer中启动是没有问题的。但是当我想从统一活动返回到 MainActivity.java 时,就会出现这样的情况:统一游戏中有一个退出按钮,调用 Application.exit();当我按下按钮时没有任何反应。有错吗?

【问题讨论】:

    标签: java c# android android-studio unity3d


    【解决方案1】:

    Application.exit() 在 Unity API 中不存在。

    对于编辑器,使用UnityEditor.EditorApplication.isPlaying = false

    使用Application.Quit() 进行构建。

    最好使用编辑器预处理器来执行此操作,否则您将无法构建包含UnityEditor.EditorApplication.isPlaying = false; 代码行的代码用于其他平台。

    下面的代码应该可以解决这个问题:

    #if UNITY_EDITOR
         UnityEditor.EditorApplication.isPlaying = false;
    #else
            Application.Quit();
    #endif
    

    请理解,您应该拥有任何用于移动设备的退出 UI Button。它会起作用,但这是一个糟糕的设计。这就是物理 Home (iOS) 或后退 (Android) 按钮的用途。

    编辑

    您只想从 Java 中退出 Unity Activity。该函数应该这样做。

    public void quitUnityActivity ()
    {
        UnityPlayer.currentActivity.runOnUiThread(new Runnable(){
            public void run()
            {
                Log.v("Unity", "Unity Activity Exited!" );
                this.mUnityPlayer.quit();
                UnityPlayer.currentActivity.finish();
            }
        });
    }
    

    如果这不起作用,请尝试

    public void quitUnityActivity()
    {
        Log.v("Unity", "Unity Activity Exited!");
        this.mUnityPlayer.quit();
        UnityPlayer.currentActivity.finish();
    }
    

    使用 C# 从 Unity 调用 Java 函数。

    void exitUnity()
    {
        AndroidJavaClass myClass = new AndroidJavaClass("com.companyName.productName.MyClass");
        myClass.Call("quitUnityActivity");
    }
    

    确保将 com.companyName.productName.MyClass 替换为您在 Android Studio 中为类命名的任何名称。

    【讨论】:

    • 你说得对,我现在可以退出整个程序,但我只想退出 unitx y 活动。有没有办法做到这一点?
    • @EmanuelGraf 我真的很想知道您是如何设置的...您使用 Java 制作的 Android 应用正在加载 Unity 活动?
    • 是的,它是一个在其中托管游戏的大型应用程序。当用户只想退出游戏时,需要再次打开App的Main Activity。
    • @EmanuelGraf 我明白你现在想做什么。我更新了我的答案。从 EDIT 读取。
    • @EmanuelGraf 修改了我的答案。如果这解决了您的问题,请不要忘记接受它作为答案。谢谢。
    猜你喜欢
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多