首页 > 代码库 > unity c#互调java简单笔记,bash简单运用的地方

unity c#互调java简单笔记,bash简单运用的地方

这周跟着项目走,继续改改bug,加加中英文切换

 
着重看下unity和android adt的互相调用
网上看还需要配置什么library的
我的unity是4.6版,我没有看到任何需要配置library的东西.直接从unity的export的项目直接在adt是可以用的.可能是教程太老了都.不看他了
1.unity调用java
AndroidJavaClass jc =  new AndroidJavaClass("com.unity3d.player.UnityPlayer");

        AndroidJavaObject jo = jc.GetStatic<</span>AndroidJavaObject>("currentActivity");

这两句话是死的,曾经我以为包名是需要和导出的包名需要一样的,结果多此一举了,unity是把activity封装好了呆的一个com.unity3d.player.UnityPlayer类,currentyActivity是获取到了当前活动.
 

jo.Call("getString","string is CSharp!");
jo是当前的activity类,调用方法getString.
第二个参数是可选的,如果方法是参数为空,直接c#就不用写了.
 
2.java 调用unity

UnityPlayer.UnitySendMessage("Cube","message","java call unity");

第一个是目标的名字,我直接扔进去了一盒子.

第二个参数是调用脚本的方法名字,message

第三个参数的传递进去的参数

3.需要注意的

因为android的UI不是线程安全的,所以创建任何UI是没有用的,坑爹的是竟然没有报错,让我一个Dialog怎么也整不出来也不知道是怎么回事

如果要建立ui的东西,

(1)是可以setmessage传递到主线程里

(2).runOnUiThread可以创建一个匿名线程然后在这个匿名线程里写ui的东西

4.可以提升的.

如果在unity里调用java很多第三方的sdk,那么在unity重新导包的时候,肯定要覆盖旧的adt工程.

这样以前配置好的sdk可能就不能用了,大多数不是缺失什么东西了,androidManifest被覆盖和res的东西被覆盖了,而你配置的第三方需要androidManifest给权限调用其他Application或者Activity,这样就白做了.

把AndroidManifest和res目录下一些可能写好的xml复制出来,然后导入完包后再覆盖回来是很方便的

看看library有没有丢失也是要注意的,一般每次都会丢失的.

5.bash的基本操作

因为工程原因debug的时候需要一次一次复制文件覆盖其他文件,例如xml等的覆盖,这种操作一次两次还好,但是次数多了也很烦,所以写个bash或者py是很方便的,声明我只是一个菜鸟.

以前的bash或者py都要再文件前加/usr/什么的,现在的不用了.

用了bash你会发现很多命令是和unix命令完全一样的,例如cp,rm,..

例如我需要复制当前路径下override_file文件夹里的一个AndroidManifest.xml到当前路径下

那么你可以

touch move_file.sh

创建一个move_file.sh的bash文件

sudo chmod -R 777 movefile.sh

给他权限

然后随便打开一个可以编辑文本的软件打开这个软件vi/vim什么都行

 

cp .override_file/AndroidManifest.xml ./

拷贝,说明下./是当前路径下的意思,其实也可以省略,但这样的更思路清晰,最后一个“./”也可以写成“.”

你可以在前面声明变量什么的

RES_DIR=./override_file/

使用的时候

 

cp $RES_DIR/AndroidManifest.xml ./

效果是一样的

使用sh时直接./movefile.sh..

end加油

unity c#互调java简单笔记,bash简单运用的地方