Unity 与 Android交互
jimhy
jimhy 8622 22
热门 Android 2016-10-08 17:50
网上有很多关于这一方面的帖子,试了很多都是有问题的,可能是因为版本的原因,这里我写出关于现在unity版本的教程,希望对大家有所帮助,不需要走太多弯路。
环境要求:
1.     unity3d 5.4.0f3
2.     Android Developer Tools(Eclipse)
 
在开始之前,这里先说明一下,这篇教程没有太多技术上的东东,以操作为主,所以这里不会讲太多理论的知识。如果大家想要进行理论知识的补充,建议在操作成功以后,再去谷歌有关的资料,这样会更加明朗。祝大家学习愉快!!
开始啦~~~
1,首先新建android工程

图片:1.jpg


给项目取名

图片:2.jpg


 next-->>

图片:3.jpg


注意:这里最好勾选上,好处待会儿下面讲

图片:4.jpg


 

图片:5.jpg

图片:6.jpg


2,创建工程以后,我们需要把unity的工具包引用过来,在eclipes右键工程目录->build path->Add
External Archives选项。

图片:8.jpg


Unity工具包路径在
X:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes(x为盘符)目录下的classes.jar文件。

图片:7.jpg


完成后,打开MainActivity类,把该类默认继承的Activity改成继承UnityPlayerActivity类,
然后把不要的代码去掉,如把onCreate函数里面的setContentView(R.layout.activity_main);删掉,并且把onCreateOptionsMenu函数删掉(如果你不需要的话)。
删掉以后长这样子:
 

图片:9.jpg


3.我们写一些简单的测试代码,如下

图片:10.jpg


保存以后eclips会自动生成编译好的jar包,在bin目录下面,这就是为什么上面需要勾选的原因

图片:11.jpg


看,这个就是我们要的jar包,待会儿给unity使用

图片:12.jpg


4.新建一个Unity3d工程,新建的过程这里就不介绍了。
在Assets目录下面新建一个Plugins文件夹,放插件用的文件夹,在Plugins目录下面新建一个Android文件夹,以后把安卓的东东会放到这里下面,目录长这样

图片:13.jpg


5.然后要拷贝两个文件过来这里,
①一个是刚刚的那个jar包。还记得在哪里吗?在eclipes的bin目录下面
②就是在你的unity3d安装目录里面的AndroidManifest.xml文件,路径是: x:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk(x是你的安装盘符)
我的路径是

图片:14.jpg


其它两个文件夹不用理它
注意:这个千万不能用eclipes里面的,会报错.
两个拷贝完成后目录长这样

图片:15.jpg


6.ok,现在我们要对AndroidManifest.xml进行简单的配置

图片:16.jpg


如上图:
第一处要改成你自己的项目包名,包名在哪里找呢?就在创建项目时候取名字的时候的那个框

图片:17.jpg


什么?没有注意看?那怎么办呢?没事,在代码里面到处都是,看这里

图片:18.jpg


好,把包名填好了,上图的第二处就是填写你jar包的入口类。就是MainActivity.java类,记得要加上包名哦。
5.在unity方面,在写c#代码之前,我们还有一个地方要配置,就是android平台界面的配置,看下图

图片:19.jpg


这里的包名要跟android的包名要一致才行哦。
6.好了,下面开始写c#测试代码了
在写代码之前我们先用UGUI在场景创建一个button和text,用于待会儿测试。
如下图所示:

图片:20.jpg


然后,随便创建一个类,挂到场景的任意物体上,开始写代码了

图片:21.jpg


在onClick函数里面加入了如下代码
AndroidJavaClass uintyPlayer = new ndroidJavaClass("com.unity3d.player.UnityPlayer");//参数必须为com.unity3d.player.UnityPlayer
AndroidJavaObject currentActivity = uintyPlayer.GetStatic<AndroidJavaObject>("currentActivity");//参数必须为currentActivity
var result = currentActivity.CallStatic<int>("sum", new object[] { 1, 2 });

textFile.text = result.ToString();
 
7,写完了以后进行打包,然后安装到android手机或虚拟机上进行测试

图片:22.jpg


测试成功!!如有问题,请在下面留言或者给我发邮件jimhy@qq.com
分享:
游客
要评论请先登录 或者 注册
22条回应 只看楼主 最新
843505284 学徒 2016-10-15 16:08 1楼
感谢楼主提供的方法  安装在手机上时 出现了解析错误这个该怎么解决?
jimhy 学徒 2016-10-20 12:10 2楼
843505284:感谢楼主提供的方法  安装在手机上时 出现了解析错误这个该怎么解决?回到原帖
出现了什么错误?麻烦把代码和错误截图发上来
ahuang 学徒 2016-10-31 17:57 3楼
非常感谢啊!一试就成功了,别人的方法都好乱。
jimhy 学徒 2016-11-09 10:16 4楼
ahuang:非常感谢啊!一试就成功了,别人的方法都好乱。回到原帖
不客气,很高兴能帮到你
aa030306041 学徒 2016-11-19 15:19 5楼
牛人,一千一万个赞,我花了一周时间在搞这个,搞不定,功夫不负有心人,终于让我碰上你的贴子,帮我解决了一个大忙,非常感谢谢
aa030306041 学徒 2016-11-19 15:20 6楼
aa030306041:牛人,一千一万个赞,我花了一周时间在搞这个,搞不定,功夫不负有心人,终于让我碰上你的贴子,帮我解决了一个大忙,非常感谢谢回到原帖
还有个问题,现在谷歌不是不再维护eclpise,那现在还用eclipse开发,会有影响不?
jimhy 学徒 2016-11-23 17:52 7楼
aa030306041:还有个问题,现在谷歌不是不再维护eclpise,那现在还用eclipse开发,会有影响不?回到原帖
这个跟什么工具开发没关系的
峰下 新手 2016-11-29 17:04 8楼

图片:L{DF8TE)B03[OARY58OO~8M.png

我照着教程做了一遍,最后点按钮是出现这个错误,能帮忙看看吗
wtujoxk 新手 2016-12-04 11:40 9楼
峰下:我照着教程做了一遍,最后点按钮是出现这个错误,能帮忙看看吗回到原帖
真机或者虚拟机上测试
1 2 3
返回顶部