由于是完全不同的两种语言,所以“语言不通”也是很正常的事情。但最终编译后他们都是一样的,所以虽然做不到相互访问(虽然不知道访问这个说法对不对不过这种细节就不要在意了),但是单向访问还是没问题的。
网上很多中说法,官方其实帮助文档也有说了,不过是全英文的,国内也有翻译,不过那个质量就不评论了。
然后进入正题:
1、把C#脚本都放到Standard Assets文件夹里,如果没有你就自己建一个,这样C#脚本会被首先编译,这样之后JS脚本就认得它了,反过来也一样。但是你也看出来了,这样只能是单向的,因为要访问不同语言的脚本,必须保证要访问的脚本已经被编译了,否则就编译不通过了。这说明unity的脚本是较严格的类型检查,而且也是静态的,不过为了执行效率这点牺牲就无所谓了。
2、作为第一种方法的补充,有必要看看第二种方法。什么时候你会发现第一种方法不好使呢?当你用2dtoolkit的时候就会发现了,2dtoolkit是完全的C#,但是如果你把它放到Standard Assets目录下,它就没用了。不过熟悉这个插件的人会知道,它提供了一个set up for js的功能,点击后就会创建一个Plugin文件夹,然后把它自己的脚本全部拷到里面,然后JS就能访问了。其实这种方法是通用的,我刚开始的时候不知道,后来谷歌了一下NGUI js,看到别人就是用这个方法:
就入上图所示,说明也有了,如果那么简单的英文都看不懂我也懒得翻译了
其实还有其他方法,思路其实差不多,具体看官方文档吧。