美文网首页
unity5.6项目导入到android studio项目中

unity5.6项目导入到android studio项目中

作者: 苏墨白梦觉泪满青衫湿 | 来源:发表于2018-09-11 10:19 被阅读0次

    1.首先在unity中打开 File - Build Settings
    注意划红线部分的设置
    export之前注意先要点开player settings 设置 company name 和 product name, 下面的package name也对应更改


    20180606150316807.png

    2.export 之后的目录如下


    20180606150621881.png

    将assets整个拷贝到Android项目的/app/src/main/目录下。
    将libs中的unity-classes.jar以及其他jar文件拷贝到/app/lib/目录下。并Add As Library。
    将libs中的armeabi-v7a以及x86(如果有的话)连同文件夹一起拷贝到/app/src/main/jniLibs/目录下。

    1. 新建一个 activity 用来显示unity界面
      代码如下
      xml
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="horizontal"
        tools:context=".ui.activity.UnityActivity">
    
        <LinearLayout
            android:id="@+id/ll_unity_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />
        <Button
            android:id="@+id/btn_rotate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="button"
            android:textSize="17sp"
            android:background="@null"
            />
    </FrameLayout>
    

    activity

    import android.support.annotation.Nullable;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import com.rangeidc.android.alarm.R;
    import com.unity3d.player.UnityPlayerActivity;
    import butterknife.BindView;
    
    public class UnityActivity extends UnityPlayerActivity {
        @BindView(R.id.ll_unity_container)
        LinearLayout mLlUnityContainer;
        @BindView(R.id.btn_rotate)
        Button mBtnRotate;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_unity);
            initView();
        }
    
        private void initView() {
            mLlUnityContainer = (LinearLayout) findViewById(R.id.ll_unity_container);
            mBtnRotate = (Button) findViewById(R.id.btn_rotate);
            //将Unity的View添加到布局里
            View scene = mUnityPlayer.getView();
            mLlUnityContainer.addView(scene);
            mBtnRotate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //向Unity的Cube对象上的脚本里的RotateCube方法发送消息
                    //第三个参数是传递的消息
                    //通过UnitySendMessage向Unity发送消息,
                    //三个参数分别是接收消息的GameObject,MethodName,参数;
                    //UnityPlayer.UnitySendMessage("Cube", "RotateCube", "80");
                }
            });
        }
    }
    

    最终显示效果:


    20180606151009125.png

    这里讲一下踩到的几个坑
    1.大多数教程提到了在build project之前勾选google android project
    然而unity5.6并没有该选项,取而代之的的是build system下的ADT选项,该选项功能与之前的google android project相同

    2.当我打开unityactivity的时候显示your hardware does not support this application弹窗,无法正常打开
    (一)、这是so文件不同导致的
    由于unity导出的项目中只有armeabi-v7a版本的so,所以我把安卓工程中原有的其他平台的so都删除了只剩下了。

    (二)、在app的build.gradle中添加ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }
    示例如下:

    android {
        defaultConfig {
                 ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }
        }
    

    (三)、这种是我在网上找的其他人的方法,但是我自己亲测不管事,大家可以试试,没准你人品好万一就可以呢.......哈哈不扯了,直接上方法。
    就是在app的build.gradle中添加

    android{
    sourceSets {
            main {
                jniLibs.srcDirs = ['src/XXXX/libs']    //其中src/XXXX/libs 是导出的so文件路径
            }
        }
    repositories{
        flatDir{
            dirs 'src'
        }
    }
    }
    dependencies {
        //unity build jars
         implementation files('libs/unity-classes.jar')
    }
    

    这样就可以正常打开该activity了。

    第二种方法亲测有效,第一种我没有找到其他的.so文件,有试过的同学扣我

    注意:如果做完上面三步之后依然有问题,请在下面留言,或者直接qq我,本博客只适合AS的用户Eclipse用户请另找博客,谢谢

    相关文章

      网友评论

          本文标题:unity5.6项目导入到android studio项目中

          本文链接:https://www.haomeiwen.com/subject/rpfegftx.html