- 最后登录
- 2017-5-15
- 注册时间
- 2012-3-1
- 阅读权限
- 90
- 积分
- 32973
  
- 纳金币
- 32806
- 精华
- 12
|
目前在项目中自己写的代码都用C#,但有时候从网上下载到的代码是用Javascript,如果只是绑定到GameObject上使用的倒还好,有什么修改也可以直接修改脚本代码。但有时候需要在自己写的C#代码中调用这些下载的Javascript代码时,问题出现了。 编译时总是报告无法找到这些Javascript脚本,在Script Execution Order中指定脚本编译顺序也没有用。还是在Unity文档中找到了解决方法:http://unity3d.com/support/documentation/ScriptReference/index.Script_compilation_28Advanced29.html 脚本的编译过程分四步:1. 编译所有 ”Standard Assets”, “Pro Standard Assets” or “Plugins” 目录下的代码2. 编译所有“Standard Assets/Editor”, “Pro Standard Assets/Editor” or “Plugins/Editor” 目录下的代码3. 编译除了上面列出来的目录和Editor目录之外的所有代码4. 编译Editor目录下的代码 这样的话,如果你希望某个Javascript能被其他脚本引用,那么把它放到第一组的某个目录里,然后把要使用它的代码放在第三组的某个目录里就好了。同样,如果希望某个C#代码能被其他Javascript脚本引用,也必须把这个C#脚本放到第一组的某个目录里,Javascript代码放到第三组的某个目录里。 需要注意的是,代码一旦放在第一组目录中,它们一定是最先被编译的,所以它们将不可能直接引用其他组的脚本,但是可以通过SendMessage方式间接引用,可能会有一些效率方面的损失。这也造成了一个结果,两个非同种语言编写的脚本之间不能互相引用,否则无法区分出应该让哪个脚本优先编译。 另外一点是,第一组目录中的脚本一旦重新编译,会使得第三组目录中的所有代码也重新编译,这将会增加总的编译时间。所以,对于可能会经常变动的代码,尽量不要放到第一组目录中去,除非它们因为被其他脚本引用的原因不得不放到这里。 |
|