创建一个新的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中使用的更多相关文章

  1. 如何将Eclipse中的项目迁移到Android Studio 中

    如何将Eclipse中的项目迁移到Android Studio 中 如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的 ...

  2. [转]-如何将Eclipse中的项目迁移到Android Studio 中

    英文地址:http://developer.android.com/sdk/installing/migrate.html 翻译:Android Studio 中文组(大锤译) 如果你之前有用Ecli ...

  3. studio--如何将Eclipse中的项目迁移到Android Studio 中

    如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件.因为Android Studi ...

  4. Eclipse项目导入到Android Studio中

    背景 最近需要将Eclipse中的android项目导入到Android Studio中!倒腾一番,记录如下! 步骤1 打开Android Studio(下文称AS),选择Import project ...

  5. 如何将Eclipse中的项目迁移到Android Studio中

    如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的是生成Build Gradle的文件.因为Android Studi ...

  6. (转)eclipse项目导入到android studio中

    原文:http://www.cnblogs.com/lao-liang/p/5016541.html?utm_source=tuicool&utm_medium=referral Androi ...

  7. Android app中的so库和CPU架构

    一.android目前有几种cpu架构? 早期的Android系统几乎只支持ARMv5的CPU架构,目前支持七种CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MI ...

  8. 如何将Eclipse中的开源项目使用到Android Studio中

    近几日,笔者用到了一些开源项目,比如著名的PTR项目.但是在使用的过程中,遇到了一些问题. 这个开源库是在Eclipse上面写的,我们现在开发用的是Android stuido. 两种软件的项目结构是 ...

  9. 在Android App中集成Google登录

    技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...

随机推荐

  1. 洛谷 P2327 [SCOI2005]扫雷

    P2327 [SCOI2005]扫雷 https://www.luogu.org/problem/show?pid=2327 题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二 ...

  2. DOM事件-冒泡、捕获、传播、委托

    事件捕获 以点击事件为例事,同类型事件会由根元素开始触发,向内传播,一直到目标元素.从外到内依次触发:根—目标的祖先素—目标的父元素—目标元素. 事件冒泡 根事件捕获截然相反.发生点击事件时,事件会从 ...

  3. ffmpeg命令操作音频格式转换

    1.转MP3为wav ffmpeg -i input.mp3 -acodec pcm_s16le -ac 2 -ar 44100 output.wav 2.转m4a为wav ffmpeg -i inp ...

  4. 1、CreateJS介绍-EaselJS

    需要在html5文件中引入的CreateJS库文件是easeljs-0.7.1.min.js HTML5文件如下: <!DOCTYPE html> <html lang=" ...

  5. JavaScript进阶 - 第9章 DOM对象,控制HTML元素

    第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...

  6. 4.高级数据过滤 ---SQL

    一.AND操作符 要通过不止一个列进行过滤,可以使用A ND操作符给WHERE子句附加条件. SELECT prod_id, prod_price, prod_name FROM Products ; ...

  7. Polly+AspectCore实现熔断与降级机制

    Polly+AspectCore实现熔断与降级机制 https://www.cnblogs.com/edisonchou/p/9159644.html 一.熔断.降级与AOP 1.1 啥是熔断? 在广 ...

  8. Jexus 5.8.2

    Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持   Jexus 是一款运行于 Linux 平台,以支持  ASP.NET.PHP 为特色的集高安全性和高性能为一体的 ...

  9. spring基础概念AOP与动态代理理解

    一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一 ...

  10. Java 2 个 List 集合数据求并、补集操作

    开发过程中,我们可能需要对 2 个 或多个 List 集合中的数据进行处理,比如多个 List 集合数据求 相同元素,多个 List 集合数据得到只属于本身的数据,如图示: 这里写图片描述 这里以 2 ...