在unity3d中回调android的activity

在unity3d中返回android的原生activity,按照网上的许多教程,互相调用方法基本都没什么问题了,但是在返回android的原生activity的时候,整个程序都会关闭,最后在 manifest 配置文件中加入线程名解决。先罗列代码:
第一步在unity3d 的c#中回调外壳activity的方法:

public void onBackClick(){
    AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
    jo.Call("back","返回android");
}

第二部在外壳activiti中处理(我是新建了一个继承UnityPlayerNativeActivity的类)


public class WeivaUPNActivity extends UnityPlayerNativeActivity {

    public void back(String arg){
        Intent intent = new Intent();
        intent.setClass(WeivaUPNActivity.this, LoginOkActivity.class);
        startActivity(intent);
        WeivaUPNActivity.this.finish();

    }
}

视乎看起来没什么问题,但是UnityPlayer 被finish()后会把整个程序给exit,导致无法返回 LoginOkActivity 。如果不对UnityPlayer进行finish,可以返回LoginOkActivity,但是这程序无法退出,因为在退出的时候又会再次打开UnityPlayer。
谷歌了很多帖子,视乎很复杂,也考虑过回调时不finishi,而是把WeivaUPNActivity实例静态化后,在退出时在静态退出,但是感觉很麻烦。最后在一片老外的帖子发现一条线索,可以在manifest配置文件中设置不同的进程名,从而避免UnityPlayer finish时关闭整个程序:

            <activity android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale" android:name="com.weiva.WeivaUPNActivity"<font color="#ff0000"> android:process=":Unity3D"</font>>
              <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
              <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
            </activity>

原帖地址:http://answers.unity3d.com/questions/587979/how-do-i-stop-munityplayerquit-closing-the-entire.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注