将uniy3D集成到android的子窗口中
2016-06-12 21:35
549 查看
最近有一个需求,要将u3d的一个模型展示程序集成到安卓应用(这里我把它叫做宿主app)中,安卓应用会给u3d一个小窗口,然后用户可以在小窗中进行交互。 搜集资料之后,因为很多教程总是会有这样或那样的纰漏,所以我自己做一个相对较为完整的总结。(Unity3D 版本为5.0) 大致流程如下:在unity3d中build,然后再eclipse中导入u3d生成的安卓工程
新建安卓工程(即宿主app),将u3d的工程作为一个库,导入到宿主中
给宿主app添加u3d的jar包,资源,修改AndroidManifast.xml
在宿主app中添加u3d作为一个子view
导入u3d工程
将在u3d中build整个项目,其生成的android项目的路径为 "u3d项目的根目录/Temp/StagingArea",将这个StageArea拷贝到任意目录(不是Temp就行)。
打开eclipse,新建目录,选择从已有的工程导入,选择上一步的StagingArea即可,一路next,记住所选的android sdk以及Google API的版本
新导入的u3d工程默认名称为UnityPlayerNativeActivity,打开其属性面板,勾选android->Is Library确定即可。
至此,导入u3d工程完毕。
修改宿主工程 新建一个android工程,记住选择的android sdk版本要同上一步中的一样。
将u3d工程作为lib导入,在属性->android->Library->add,选择u3d的工程即可。
导入u3d的jar包,我用的mac os X,路径为"应用程序/Unity/Contents/PlayBackEngines/AndroidPlayer/release/bin/classes.jar",将这个jar包copy到宿主工程的libs目录下,刷新项目即可(主义,此处如果通过属性->Java Build Path->Libraries->Add External JARS导入的话,会出问题,无法找到unity的class,是adt的一个bug)。
将u3d的android工程的assets/目录下的内容copy到宿主。
修改宿主的AndroidManifast.xml文件,将u3d工程的AndroidManifast.xml中的metadata部分复制过来即可。
修改layout/activity_main.xml,我的例子中为u3d加了一个framelayout,id为UnityFrame。
修改宿主的代码,首先是onCreate()函数,向其中添加一个私有成员变量,m_UnityPlayer,然后在其中对m_UnityPlayer初始化,之后向UnityFrame中addview。然后需要重载onWindowFocusChanged函数,让unity能获取窗口焦点。
public class MainActivity extends Activity { private UnityPlayer m_UnityPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_UnityPlayer = new UnityPlayer(this); int glesMode = m_UnityPlayer.getSettings().getInt("gles_mode", 1); m_UnityPlayer.init(glesMode, false); FrameLayout layout = (FrameLayout)findViewById(R.id.UnityFrame); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); View unityView = m_UnityPlayer.getView(); layout.addView(unityView, 0, lp); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); m_UnityPlayer.windowFocusChanged(hasFocus); } }最后编译测试即可!Enjoy it and have fun!
相关文章推荐
- 制作自定义背景Button按钮、自定义形状Button的全攻略
- Android贝塞尔曲线实现粘性 小圆点指示器
- TakePhoto-轻量级Android照片处理框架
- Android保存图片到相册
- Android MedeaCodec的单帧模式编解码
- Android自定义控件
- Android ListView的优化
- Android之PopWindow
- (OK) Android —— gem5跑bench(Android)过程记录 + vncviewer
- 将html5变身Android APP之phonegap的使用
- android 隐藏系统键盘
- 百度地图API出现如下报错,系统时间问题
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器
- android容联云IM的SDK下载及将FullDemo引入工程(提供引入后demo的下载)
- [Android]使用Intent跳转至桌面首页
- Android高性能ORM数据库DBFlow入门
- Android root 原理
- android 跨进程调用service学习(二)
- AndroidStudio--Error converting bytecode to dex
- Android入门--项目中添加页面及页面跳转