怎么办???
由于有Unity开发经验所以可以以此类推,简单计划一下。
最先开始想到的教程是从B站上的视频看起,但是公司电脑耳机不能用,所以果断换!
跟着教程学习1天后,简单demo已经可以做了。所以就开始着手完成工作目标。
最开始,我是跟着百度上教程做的。但是由于教程大多都是使用Unity旧版本做的,在Unity2019.2前后,导出的Android 项目差别较大,所以在这里卡了很久。公司也无人可以请教,只能自己不停的试错。
后来想到:官方不是给Demo了嘛,就直接把公司项目导出为Android项目之后,进行替换不就可以了嘛!
然后又是痛苦的两天,遇到的错误非常繁多,因为刚接触,所以很多Error的深层意思理解不了,只能靠百度,然而跟着百度做的话,就是解决了这个问题又出现另一个问题,很煎熬,各种试错。期间重装过3次AndroidStudio(总觉得是人家IDE有问题,或者自己没装好,我想初学者很有同感吧)后来是从B站找的视频跟着重装的IDE。总结其中遇到的部分问题
比如:
这一周非常痛苦,都不知道该如何,连个可以问的人都没有。没办法,晚上就开始加班.....
后来周末的时候突然想到:莫非是我找的教程不对!!!
赶紧搜索“Android集成Unity2019”,果然,加上这个2019就找到了上边第2点中的两个,使用Unity2019进行开发的教程。
星期六一天,就在测试这两个教程。果然做出来了。
这里说明一下:第一个链接的第5点,没有讲明如何创建Activity的方法(题主是多年开发经验,但是对小白来说,这个无疑也是一座大山)
我是将MainActivity直接继承UnityPlayerActivity的,这里还有一个坑,就是需要在luncher中添加引用,不然无法使用mUnityPlayer。方法如下
MainActivity源码
package com.emgent.ar;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
private Button zoomInBtn, zoomOutBtn,fullScreen;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout frameLayout = findViewById(R.id.u3d_layout);
frameLayout.addView(mUnityPlayer);
mUnityPlayer.requestFocus();
zoomInBtn = findViewById(R.id.zoom_in_btn);
zoomOutBtn = findViewById(R.id.zoom_out_btn);
fullScreen = findViewById(R.id.u3d_fullscreen_btn);
zoomInBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UnityPlayer.UnitySendMessage("Cube", "ZoomIn", "");
}
});
zoomOutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UnityPlayer.UnitySendMessage("Cube", "ZoomOut", "");
}
});
fullScreen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO
}
});
}
}
继承UnityActivityPlayer后,layout配置需做相应变化
activity_main.xml源码
然后就是原文中关于FramLayout的由来没有说明清楚,这个也困扰了我很久。
其实就是在MainActivity的布局文件中创建的FramLayout,这个创建过程,我是使用第2个教程中的配置参数做的。
如上图所示。
终于完成了集成使用AndroidStudio开发。
效果如下
Android集成Unity2019
以上为星期六在家测试基础Demo
星期一来到公司发现,公司项目引用了很多插件。如果在Luncher中添加引用的话,会报重复引用的错误。所以在Unity Library中直接创建了MainActivity就很顺畅了
这是第一个问题。
第二:启动运行,闪退。一开始我想到是像第二个链接里讲到的一样,需要在另一个线程里运行添加
android:process=":e.unitry3d"
仍不能解决,后来使用logcat发现,需要给MainActivity添加Theme
android:theme="@style/UnityThemeSelector"
第三个问题:
MainActivity不停的关闭并开启。
一开始,我以为是什么设置不对,导致触发onConfigurationChanged
后来,一顿调试,logcat找了好久,都没有发现问题,后来用easy.bugly调试工具才发现,是程序报错引起的异常,因为使用了lua热更新,所以,windows平台拉取不到Android平台的资源。就这样,本来想着今天可以舒适的度过,结果一眨眼就到下午4点了......
公司还有人离职,还要交接别人的工作。道阻且长啊!
终于将公司项目给放到AndroidStudio里了。
接下来,如果有时间的话,要学学Android开发了
不然这么一个简单的功能就快把人搞残了