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 调用Android 交互,数据传递_第1张图片

4、UnityPlayerActivity对外提供了一个方法接口,StartActivity3(String name)(方法名随意命名,C#调用对就行)这个方法是在Unity中使用C#脚本调用的,意思是调用后程序将打开一个新的Activity,参数name也是由C#脚本传递过来的,接着将传递的String参数继续传递给新打开的Activity。

Untity3D 调用Android 交互,数据传递_第2张图片

Call_phone.java与正常Activity一样,接受Intent参数也一样。比如传过来是字符串就用getIntent().getStringExtra(“name”)接收(切记!同样需要在AndroidManifest.xml 注册)

Untity3D 调用Android 交互,数据传递_第3张图片

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 调用Android 交互,数据传递_第4张图片

然后将libs(需要用的第三方库文件比如shareSDK 。项目引用的classes.jar一定要删除,否则打包失败),res文件夹和AndroidManifest直接从Android工程中拷贝过来。(有时候assets文件夹下也会放一些东西,比如shareSDK的配置文件,也需要一块复制过来)。

7、Unity里面创建一个C#脚本文件,上图中的Shre.cs,绑定在MainCamera上(一定要!!)

Untity3D 调用Android 交互,数据传递_第5张图片

jo.call方法就是调用Android界面的方法 里面两个参数(第一个是UnityPlayerActivity的一个方法名,第二个是传递的值,就是把电话号码以字符串形式传给Call_phon.java)。

Untity3D 调用Android 交互,数据传递_第6张图片

8、点击Untiy->  File  ->Build Setting ,选择Android平台。Unity中的包名,要和Android工程保持一致,否则无法调用。选择Player Setting ,Bundle Identifier* 修改成和Android项目一样的包名。(我的项目包名为mygoalgroup.chunguang)

Untity3D 调用Android 交互,数据传递_第7张图片

还有需要注意的是 一定要把Company Name和ProductName 改掉,不能使用默认的 要不不能发布。

9、发布  点击 Build and Run  在你手机上就可以看到效果了。

你可能感兴趣的:(Untity3D 调用Android 交互,数据传递)