Unity如何使用Java类(理论篇)

来源:互联网 发布:bl是什么意思网络用语 编辑:程序博客网 时间:2024/05/22 12:45

开发环境

Window 7

Unity3D 3.4

MB525 defy  Android 2.2.1

     

       羽化的第五篇博客,这次送上较晚了点,原因是手机出了点问题,又忘记拷项目了,所以星期二才开始写,这个还是要坚持的,一月至少一篇,无论是记事还是技术分享。话说最近手机突然不给力,USB口出了点问题,由于是水货,拿去MOTO服务中心去修,着白眼不说还被坑一顿,幸好手机突然崛起了,还算幸运吧~ ~ 最近开始了魔兽台服征程,原因有两个,一是为了菲尔、月光、女孩那些原来一起奋战的好友吧,虽然现实中互不认识,但在魔兽里面在一起真的十分快乐,真希望他们在现实生活也能开心快乐,二是为了完成对朋友的诺言,羽化说过一定会把狼人打到满级的,无论如何不能忘记自己的承诺。选在8.3号开始,可能是巧合,也可能是宿命吧~ ~你一定要过得比我好啊。。。发最后句牢骚,希望二姨爹能挺过这段时间早日康复。

       这次希望看的人看看第一部分再考虑看不看下面的部分。

      

本次学习:

1.为什么叫理论篇

2.ikvm环境搭建和使用方法

3.Unity实现Java类

 

1.为什么叫理论篇

       理论篇也就意味着这个方法不能再实际中使用,但确实是个可行的方法。羽化是做Android游戏开发的,有时候在想如果Unity能使用写好的Java类,无论是存储还是Android控件使用,都会把一切变得简单很多,所以羽化不断在找类似的方法,这是羽化在外国网站看到一个留言上面写的方法,于是自己尝试了一下,发现还真的可行,Java类顺利的运行了,可是却遇到了问题,无法打包,无论是生成任何格式,都无法解析dll文件,所以只能抱恨暂时停止了这方面的研究,如果谁看过此文,能成功导出项目,希望能指点下羽化,无论是留言还是邮箱(675517707@qq.com)都行。

 

2.ikvm环境搭建和使用方法

        ikvm不知道到底出不出名,反正羽化原来没听说过。。。百度上说“IKVM.NET的是开源的基于.NET CLR 的Java虚拟机。 ” 相信很多人看到这里知道这软件到底是怎么作用了。

        1)首先我们先搭建使用环境,在http://www.ikvm.net/上下载最新的ikvm,包括使用方法都可以在这网站上找到,这做的很好很方便。

        2) 为了方便使用,我们可将ikvmbin目录加入到系统path.现在我们将使用IKVM就像使用JVM一样,并不需要配置。

        3 )然后将我们要使用的类ExampleLibrary打成.jar包,这里羽化使用的是Eclipse,对着想导出的类选择Export后选择Java里面的JAR包就行了。

public class ExampleLibrary{private int n = 0;public ExampleLibrary(){}public String HelloWorld(int num){n += num; String s = num + "";return s;}}

 

        4) 随后在cmd命令控制台里面先输入jar包所在地址,比如在C盘根目录就 cd\  ,然后使用ikvm的指令 ikvmc ExampleLibrary.jar,ExampleLibrary.dll就生成了

        5 )把这个dll和ikvm目录bin下面的IKVM.OpenJDK.Core.dll 和 IKVM.Runtime.dll一起复制到Unity项目里面

 

3.Unity实现Java类

        上面的准备工作都做好以后,就写一个C#脚本来实现它

using UnityEngine;public class JavaHelloWorldScript : MonoBehaviour{public int num = 100;ExampleLibrary exampleLibrary = new ExampleLibrary();void OnGUI () {string text = exampleLibrary.HelloWorld(num);GUILayout.Label(text);}}

       名字随便取的,看起是不是很简单,就是在GUI上面显示我们输入的100后返回的内容,下面我们把这个脚本绑定在摄像机上,运行就可以看到左上角的数字在不停跳了,这样我们的Java类功能实现了。

       就如上面所说,这一种写法没有办法用在实际中,原因可能是ikvm本身的缺陷AWT和Swing还未有功能。 但是羽化相信,Unity能使用Java类的日子在不断接近,总有一天能用的上。如果谁有好的方法欢迎讨论~ ~

 

下集预告:

       Unity射线应用