Untity3D|Untity3D 调用Android 交互,数据传递

有时候U3D 项目可能需要和Android项目交互,比如调用原生Android代码,下面总结一下方法:
1、去你的Untiy3D 安装目录找到 \Unity\Editor\Data\PlaybackEngines\androidplayer\bin 下的classes.jar。
2、将classes.jar文件复制到你的android工程下的libs文件夹下,右键单击classes.jar选择Build Path里面的Add to Build Path。
3、将你的项目入口文件继承 换成UnityPlayerActivity(UnityPlayerActivity只能作为Unity和Android交互的一个接口,在这里面再去调用其他的Activity)
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
4、UnityPlayerActivity对外提供了一个方法接口,StartActivity3(String name)(方法名随意命名,C#调用对就行)这个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
Call_phone.java与正常Activity一样,接受Intent参数也一样。比如传过来是字符串就用getIntent().getStringExtra(“name”)接收(切记!同样需要在AndroidManifest.xml 注册)
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
5、Clean一下当前工程,避免一些不必要的问题,然后在Build Project,当前工程bin\classes文件夹中会生成代码所有的.class文件。然后需要把所有的.class生成jar包。WIN 下通过 运行(win+R 快捷键)然后 输入 cmd然后 cd到你的项目bin\classes目录下,执行jar-cvf test.jar*(test.jar)为生成jar包名称,test.jar 就好在你的bin\classes下生成。(还有一种方法是 直接用eclipse的Export导出jar,但是这样会把都有文件都生成jar导致jar包变大,所以还是选择上面方式比较好)
6、开始创建Unity工程。Unity工程中文件夹的结构如下,Plugins->Android
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
然后将libs(需要用的第三方库文件比如shareSDK 。项目引用的classes.jar一定要删除,否则打包失败),res文件夹和AndroidManifest直接从Android工程中拷贝过来。(有时候assets文件夹下也会放一些东西,比如shareSDK的配置文件,也需要一块复制过来)。
7、Unity里面创建一个C#脚本文件,上图中的Shre.cs,绑定在MainCamera上(一定要!!)
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
jo.call方法就是调用Android界面的方法 里面两个参数(第一个是UnityPlayerActivity的一个方法名,第二个是传递的值,就是把电话号码以字符串形式传给Call_phon.java)。
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
8、点击Untiy->File->Build Setting ,选择Android平台。Unity中的包名,要和Android工程保持一致,否则无法调用。选择Player Setting ,Bundle Identifier* 修改成和Android项目一样的包名。(我的项目包名为mygoalgroup.chunguang)
Untity3D|Untity3D 调用Android 交互,数据传递
文章图片
还有需要注意的是 一定要把Company Name和ProductName 改掉,不能使用默认的 要不不能发布。
【Untity3D|Untity3D 调用Android 交互,数据传递】9、发布点击 Build and Run在你手机上就可以看到效果了。

    推荐阅读