创建一个新的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和功能属性:

  1. <activity android:name=".UnityActivity" android:process="e.unitry3d" android:screenOrientation="landscape"
  2. android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density">
  3. </activity>
  4.  
  5. <uses-feature android:glEsVersion="0x00020000" />
  6. <uses-feature android:name="android.hardware.vulkan" android:required="false" />
  7. <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  8. <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  9. <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />

5.添加一个新Activity:

  1.  
  1. 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;
  2.  
  3. import com.unity3d.player.UnityPlayer;
  4.  
  5. public class UnityActivity extends AppCompatActivity {
    private LinearLayout mLlUnityContainer;
    Button btnBack;
    protected UnityPlayer mUnityPlayer;
  6.  
  7. @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);
  8.  
  9. this.mUnityPlayer = new UnityPlayer(this);
    this.mUnityPlayer.requestFocus();
    mLlUnityContainer.addView(mUnityPlayer.getView());
  10.  
  11. btnBack.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    finish();
    }
    });
    }
  12.  
  13. @Override
    protected void onNewIntent(Intent intent) {
    this.setIntent(intent);
    }
  14.  
  15. @Override
    protected void onDestroy() {
    this.mUnityPlayer.quit();
    super.onDestroy();
    }
  16.  
  17. @Override
    protected void onPause() {
    super.onPause();
    this.mUnityPlayer.pause();
    }
  18.  
  19. @Override
    protected void onResume() {
    super.onResume();
    this.mUnityPlayer.resume();
    }
  20.  
  21. @Override
    public void onLowMemory() {
    super.onLowMemory();
    this.mUnityPlayer.lowMemory();
    }
  22.  
  23. @Override
    public void onTrimMemory(int var1) {
    super.onTrimMemory(var1);
    if (var1 == 15) {
    this.mUnityPlayer.lowMemory();
    }
  24.  
  25. }
  26.  
  27. @Override
    public void onConfigurationChanged(Configuration var1) {
    super.onConfigurationChanged(var1);
    this.mUnityPlayer.configurationChanged(var1);
    }
  28.  
  29. @Override
    public void onWindowFocusChanged(boolean var1) {
    super.onWindowFocusChanged(var1);
    this.mUnityPlayer.windowFocusChanged(var1);
    }
  30.  
  31. @Override
    public boolean dispatchKeyEvent(KeyEvent var1) {
    return var1.getAction() == 2 ? this.mUnityPlayer.injectEvent(var1) : super.dispatchKeyEvent(var1);
    }
  32.  
  33. @Override
    public boolean onKeyUp(int var1, KeyEvent var2) {
    return this.mUnityPlayer.injectEvent(var2);
    }
  34.  
  35. @Override
    public boolean onKeyDown(int var1, KeyEvent var2) {
    return this.mUnityPlayer.injectEvent(var2);
    }
  36.  
  37. @Override
    public boolean onTouchEvent(MotionEvent var1) {
    return this.mUnityPlayer.injectEvent(var1);
    }
  38.  
  39. @Override
    public boolean onGenericMotionEvent(MotionEvent var1) {
    return this.mUnityPlayer.injectEvent(var1);
    }
  40.  
  41. }
  1.  
  1. activity_unity.xml代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6.  
  7. <Button
  8. android:id="@+id/btn_back"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:text="back"
  12. android:textSize="16sp"/>
  13.  
  14. <LinearLayout
  15. android:id="@+id/unity_container"
  16. android:layout_width="match_parent"
  17. android:layout_height="match_parent"
  18. android:orientation="vertical">
  19. </LinearLayout>
  20. </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. codeforces1009G Allowed Letters【贪心+hall定理】

    因为是字典序所以贪心选当前能选的最小的,所以问题就在于怎么快速计算当前这个位置能不能选枚举的字母 重排之后的序列是可以和原序列完美匹配的,而完美匹配需要满足hall定理,也就是左边任意k个集合一定和右 ...

  2. iOS 根据文字字数动态确定Label宽高

    iOS7中用以下方法 - (CGSize)sizeWithAttributes:(NSDictionary *)attrs; 替代过时的iOS6中的- (CGSize)sizeWithFont:(UI ...

  3. EasyPOI 教程以及完整工具类的使用

    因为项目的原因需要用到POI来操作Excel 文档,以前都是直接使用POI来操作的,但是最近听到easypoi的存在,所以自己简单的尝试了下! 别说,他还真的挺好用的 Easypoi介绍 Easypo ...

  4. thinkphp5.1静态文件存放问题

    5.1的版本不能将静态文件放在application目录下,只能放在public目录下,否则会拒绝访问

  5. snipaste截图软件

  6. 黑马MyBatisday2 MyBatis Dao层实现 接口代理实现&传统实现 动态SQL和SQL抽取 自定义类型处理 分页插件PageHelper

    package com.itheima.mapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelp ...

  7. SonarQube总结

    官网:https://www.sonarqube.org/ 一款代码质量管理开源平台.

  8. [软件工程基础]Alpha 阶段发布说明

    新功能 增加了题库界面,其上有历届考试资料 系统已知的问题和限制 物理实验报告的收藏功能还无法使用 物理实验报告还不能评论 题库界面显示有些问题 最主要的生成实验报告功能在绝大多数安卓平台上显示&qu ...

  9. Luogu P1447 [NOI2010]能量采集 数论??欧拉

    刚学的欧拉反演(在最后)就用上了,挺好$qwq$ 题意:求$\sum_{i=1}^{N}\sum_{j=1}^{M}(2*gcd(i,j)-1)$ 原式 $=2*\sum_{i=1}^{N}\sum_ ...

  10. Uva1377

    /* 在n个刻度和他们的差里挑不超过7个刻度,0是固定的,最大的刻度肯定是最大值,然后剩下的dfs挑. */ #include<bits/stdc++.h> #define inf 0x3 ...