Unity3D和Android相互通信的坑1
来源:互联网 发布:java二分递归 编辑:程序博客网 时间:2024/06/07 17:50
最近这段时间涉及Unity3d和Android、iOS原生进行通信,初步的思想是把unity3d项目导出为ecplise或者As的lib工程,以减少Unity3d后期的修改对Android原生的结构造成影响,所以想作为子过程导入。在操作的过程中发现了很多的坑,直接以子过程的设想也并未坚持下去,而是加以改造为主工程的一个模块或者修改为一个子过程。(我写博客因为太懒不太喜欢截图,请读者见谅)
unity3d项目导出:从Unity3D导出来为ecplise的工程(如何从unity3d导出Android project不在此说明),导入cplise后出现如下几个问题:
a.src的文件夹是空的,Java文件存在java文件夹中
b.无libs文件夹及文件,部分的jar包和so文件在JniLibs里
c.style中涉及material design的属性,在ecplise版本里是不能使用的
d.在Androidmanifest中application中属性报错
解决方案:
a.src的文件夹是空的,把Java文件夹里的文件移到src里,删掉java文件夹
b.新建libs文件夹,将JniLibs中的文件复制到libs文件夹里,并从Unity3d的editor里拷贝classes.jar,从某个Android某个项目里拷贝v4包,jniLibs文件夹可删可不删
c.style中不能用的theme,可以删掉,可以修改为可用的parent theme
d.把Androidmanifest中application标签中属性去掉,包含banner,isGame、label、icon等标签全部去掉即可
经过上一步的操作,Unity3d的项目ecplise版本可以运行起来了。这是unity3d作为单独的项目在ecplise运行的。
下面说一下将可以运行的unity3d项目移植到现有的Android项目中:
1、引入classes.jar,unity3d主要的包
2、在要调用unity3d的页面中,继承UnityPlayerActivity,在oncreate中不能引用layout布局
import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;import android.content.Intent;import android.os.Bundle;public class MainActivity extends UnityPlayerActivity {private Boolean isStart=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//Android发送数据给unity3d,UnityPlayer.UnitySendMessage("moveplayer", "getSportData", "30");}//unity3d调用此方法,来获得是否开始的状态public int isRunning(boolean isStart) {ruturn isStart}}
3、将unity3d项目中的Androidmanifest文件,移植到Android项目的manifest中(详细移植不详细说明)
4、将assets里的文件全部复制到android项目中的assets文件夹,这个文件夹是unity3d的文件资源及代码文件
这样在最少的情况下将unitty3d的项目和原Android项目进行融合。以后unity3d的场景和规则发生改变的话,只需要替换assets文件夹即可,也便于做差分升级等。
- Unity3D和Android相互通信的坑1
- unity3d和Android的相互通信
- Unity和Android相互通信
- Unity3D和Lua之间的相互调用
- android 模拟器和PC相互通信
- Socket通信:实现PC端和Android端之间的相互通信(通过网络)
- Fragment和Activity之间的相互通信
- Fragment和Activity之间的相互通信
- android + javascript 相互通信
- Unity3D与Android之间的通信
- Unity3d-Android通信:AndroidJavaProxy
- Android Unity3d 通信总结
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- android中fragment和activity之间相互通信
- 最全面的Android和JavaEE项目(S2SH)使用WebService进行相互通信的讲解(Android篇)
- unity3d for android WebView和JavaScript进行简单通信
- Python-多线程与并行计算
- 【Scikit-Learn 中文文档】使用 scikit-learn 介绍机器学习 | ApacheCN
- RANSAC LMedS 详细分析
- 阿里云营销引擎使用教程
- json数据的转换
- Unity3D和Android相互通信的坑1
- LeetCode||64. Minimum Path Sum
- 【Scikit-Learn 中文文档】广义线性模型
- Android 开发笔记 1:Ubuntu 14.04 中安装eclipse开发环境
- HDU 1305:Immediate Decodability
- 使用Maven私服的好处
- 如何在交互式shell脚本中创建对话框
- Unreal教学(4)——组件和碰撞(Components and Collision)
- 禅道布署