赞
踩
第一步引入 unityLibrary包到项目中
File --> new --> import module 导入library
第二步在settings.gradle里面添加
project(':unityLibrary').projectDir=new File('unityLibrary')
第三步 项目级build.gradle里面添加
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
第四步 修改unityLibrary里面的 AndroidManifest.xml 文件
删除
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.notch_support"
android:value="true" />
这样就不会app启动时先启动unity程序
在 <activity> 添加 使unity成为独立的进程,这样退出unity时不会闪退
android:launchMode="singleTask"
android:process="e.unity3d"
第五步在unityLibrary新建一个 MyUnityPlayer.class 继承UnityPlayer
重写 一个 kill空方法 这样unity返回到app主界面不会卡顿
第六步在UnityPlayerActivity 中 写一个 ReturnAPP方法 unity点击返回退出当前unity界面返回app主界面
/*
Android 退出App
*/
public void ReturnAPP(){
finish();
}
第七步app主项目引用unityLibrary库
在app底下build.gradle中dependencies添加
implementation project(path: ':unityLibrary')
在app底下AndroidManifest.xml application中添加
tools:replace="android:theme"
解决合并AndroidManifest.xml文件AppTheme冲突问题
在app底下strings.xml文件中添加
<string name="game_view_content_description"></string>
解决打开unity界面找不到资源文件的问题
在app底下 build.gradle 中设置支持的SO库架构 解决unityLibrary库 .so文件兼容问题
ndk {
abiFilters 'armeabi-v7a'
}
第八步 跳转到unity界面
Intent intent = new Intent(MainActivity.this, UnityPlayerActivity.class);
startActivity(intent);
Android发送信息给unity ,前两个参数unity定义,最后一个参数是要发送给unity的内容,内容只能是string类型
UnityPlayer.UnitySendMessage("MainCanvas","OpenAblbumCallBack","要发送的内容");
unity获取Android的信息 例如下面的方法,unity调用Android的方法,返回Android界面
public void ReturnAPP(){ try { Class<?> aClass = Class.forName("com.example.rainbow.ui.activity.LoginActivity"); startActivity(new Intent(this, aClass).putExtra("unity","unity3d")); finish(); } catch (Exception e) { e.printStackTrace(); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。