将unity3d项目嵌入到Android App中使用
创建一个新的AndroidStudio app项目。
1.添加库文件:
拷贝unity安装目录下的库文件:Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar
到安卓项目目录下:app\libs\unitylibs.jar
2.拷贝unity安装目录下的所有文件夹:Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Libs
到安卓项目目录下:app\src\main\jniLibs
3.拷贝资源
将unity项目的编译好的apk包解压后,把assets文件夹拷贝到安卓项目app\src\main中
4.AndroidManifest.xml添加UnityActivity和功能属性:
<activity android:name=".UnityActivity" android:process="e.unitry3d" android:screenOrientation="landscape"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density">
</activity> <uses-feature android:glEsVersion="0x00020000" />
<uses-feature android:name="android.hardware.vulkan" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
5.添加一个新Activity:
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout; import com.unity3d.player.UnityPlayer; public class UnityActivity extends AppCompatActivity {
private LinearLayout mLlUnityContainer;
Button btnBack;
protected UnityPlayer mUnityPlayer; @Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(1);
super.onCreate(savedInstanceState);
this.getWindow().setFormat(2);
setContentView(R.layout.activity_unity);
mLlUnityContainer = findViewById(R.id.unity_container);
btnBack = findViewById(R.id.btn_back); this.mUnityPlayer = new UnityPlayer(this);
this.mUnityPlayer.requestFocus();
mLlUnityContainer.addView(mUnityPlayer.getView()); btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
} @Override
protected void onNewIntent(Intent intent) {
this.setIntent(intent);
} @Override
protected void onDestroy() {
this.mUnityPlayer.quit();
super.onDestroy();
} @Override
protected void onPause() {
super.onPause();
this.mUnityPlayer.pause();
} @Override
protected void onResume() {
super.onResume();
this.mUnityPlayer.resume();
} @Override
public void onLowMemory() {
super.onLowMemory();
this.mUnityPlayer.lowMemory();
} @Override
public void onTrimMemory(int var1) {
super.onTrimMemory(var1);
if (var1 == 15) {
this.mUnityPlayer.lowMemory();
} } @Override
public void onConfigurationChanged(Configuration var1) {
super.onConfigurationChanged(var1);
this.mUnityPlayer.configurationChanged(var1);
} @Override
public void onWindowFocusChanged(boolean var1) {
super.onWindowFocusChanged(var1);
this.mUnityPlayer.windowFocusChanged(var1);
} @Override
public boolean dispatchKeyEvent(KeyEvent var1) {
return var1.getAction() == 2 ? this.mUnityPlayer.injectEvent(var1) : super.dispatchKeyEvent(var1);
} @Override
public boolean onKeyUp(int var1, KeyEvent var2) {
return this.mUnityPlayer.injectEvent(var2);
} @Override
public boolean onKeyDown(int var1, KeyEvent var2) {
return this.mUnityPlayer.injectEvent(var2);
} @Override
public boolean onTouchEvent(MotionEvent var1) {
return this.mUnityPlayer.injectEvent(var1);
} @Override
public boolean onGenericMotionEvent(MotionEvent var1) {
return this.mUnityPlayer.injectEvent(var1);
} }
activity_unity.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <Button
android:id="@+id/btn_back"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="back"
android:textSize="16sp"/> <LinearLayout
android:id="@+id/unity_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
转载请注明出处,from博客园HemJohn
将unity3d项目嵌入到Android App中使用的更多相关文章
- 如何将Eclipse中的项目迁移到Android Studio 中
如何将Eclipse中的项目迁移到Android Studio 中 如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的 ...
- [转]-如何将Eclipse中的项目迁移到Android Studio 中
英文地址:http://developer.android.com/sdk/installing/migrate.html 翻译:Android Studio 中文组(大锤译) 如果你之前有用Ecli ...
- studio--如何将Eclipse中的项目迁移到Android Studio 中
如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件.因为Android Studi ...
- Eclipse项目导入到Android Studio中
背景 最近需要将Eclipse中的android项目导入到Android Studio中!倒腾一番,记录如下! 步骤1 打开Android Studio(下文称AS),选择Import project ...
- 如何将Eclipse中的项目迁移到Android Studio中
如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件.因为Android Studi ...
- (转)eclipse项目导入到android studio中
原文:http://www.cnblogs.com/lao-liang/p/5016541.html?utm_source=tuicool&utm_medium=referral Androi ...
- Android app中的so库和CPU架构
一.android目前有几种cpu架构? 早期的Android系统几乎只支持ARMv5的CPU架构,目前支持七种CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...
- 如何将Eclipse中的开源项目使用到Android Studio中
近几日,笔者用到了一些开源项目,比如著名的PTR项目.但是在使用的过程中,遇到了一些问题. 这个开源库是在Eclipse上面写的,我们现在开发用的是Android stuido. 两种软件的项目结构是 ...
- 在Android App中集成Google登录
技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...
随机推荐
- layui时间控件联动:开始时间、结束时间,有效时间范围
实际开发中,经常遇到时间控件联动的情况,然后每次都网上搜代码Copy,不过每次都有点小Bug让你错不及防: 这次,在这里备份一下,以后Copy自己的得了(欢迎Copy代码,若遇到问题,请麻烦回复我一下 ...
- 045 Jump Game II 跳跃游戏 II
给定一个非负整数数组,你最初位于数组的首位.数组中的每个元素表示你在该位置的最大跳跃长度.你的目标是用最小跳跃次数到达最后一个索引.例如: 给定一个数组 A = [2,3,1,1,4]跳到最后一个索引 ...
- windows无法启动redis服务,错误码1067
https://blog.csdn.net/kissdead0xzy/article/details/84332870
- 把本地项目上传到github 不使用eclipse
https://blog.csdn.net/m0_37725003/article/details/80904824
- PSS下载助手(PSX Download Helper)1.7.6.1发布
新增自动查找本地替换文件,让替换大法也更简单的计划…… 使用方法很简单,首先进入设置勾选“自动查找替换文件”,然后点击“选择目录”,最后保存设置即可.将文件下载至你选择的目录中,然后再次在主机/掌机端 ...
- Java函数的传参机制
一 最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了. 我就打算好好理一理java的传参机制,整理一番 二 很多人一听Java的传参,那一定会脱口而出,java ...
- [摘录]全面学习GFW
转载自:https://cokebar.info/archives/253 GFW会是一个长期的存在.要学会与之共存,必须先了解GFW是什么.做为局外人,学习GFW有六个角度.渐进的来看分别是: 首先 ...
- 洛谷-P3927 SAC E#1 - 一道中档题 Factorial
原址 题目背景 数据已修改 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢阶乘.而SOL菌很喜欢研究进制. 这一天,SOL君跟SOL菌炫技,随口算出了n的阶乘. ...
- calibre电子书管理软件
软件介绍: Calibre 是电子书管理软件,支持 Amazon.Apple.Bookeen.Ectaco.Endless Ideas.Google/HTC.Hanlin Song 设备及格式,功能十 ...
- angularjs实现导航菜单切换高亮
<ul> <li ng-repeat="(index, item) in headerList"> <a ui-sref="{{item.h ...