将数据发送到Unity

时间:2018-04-24 16:25:06

标签: android unity3d plugins sendmessage aar

我正在开发一个包含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

我该如何解决这个问题?

0 个答案:

没有答案