我正在开发一个包含Android应用和Unity应用的项目。主应用程序是Android,它在某些时候打开Unity应用程序。我将Unity应用程序导出为Android插件,并将其作为AAR模块集成到Android工作室中。当我从Android打开Unity应用程序时,我必须发送一个变量(整数)并在Unity中检索它。根据此整数,我激活不同的对象。我的问题是如何在Android中发送此整数然后在Unity中检索它?我阅读并尝试了很多,使用" UnityPlayer.UnitySendMessage"在Android和" AndroidJavaObject"在Unity,但我没有达到我想要的目标。
Android应用的套餐名称为" android.unityembed" Unity和#34; com.borut.multiple"。
Java代码:
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { AdalService } from 'ng2-adal/dist/core';
@Injectable()
export class RouteGuard implements CanActivate {
constructor(private router: Router, private adalService: AdalService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (this.adalService.userInfo.isAuthenticated) {
return true;
} else {
this.adalService.acquireToken(this.adalService.config.clientId).toPromise().then((data) => {
console.log('Generating a new authentication token.');
return true;
},
(error) => {
console.log('No user logged in.');
this.router.navigate(['/user-login']);
return false;
}
}
}
}
}
Unity代码:
package android.unityembed;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.unity3d.player.UnityPlayer;
import com.borut.multiple.UnityPlayerActivity;
public class Start extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), UnityPlayerActivity.class);
startActivity(intent);
}
});
}
public static int OnSceneLoadComplete(){
return 1;
}
编辑:我解决了问题,上面更新的代码做了我想要的。
我有另一个问题。我的Unity应用程序使用Google VR SDK,它也适用于Cardboard。当我正常构建Unity应用程序(我得到.apk文件)时,Cardboard会加载(分屏)。但是当我将此应用程序导出为Android Studio中的模块时,当我运行UnityPlayerActivity时,Cardboard视图无法加载,场景就会像普通的Unity 3D场景一样加载。
以下是Android Studio Logcat的两个屏幕截图: Logcat 1 Logcat 2
这是我在Unity中的播放器设置的屏幕截图。有时我想加载纸板,有时不加载(取决于用户的选择)。 Unity Player Settings
我该如何解决这个问题?