unity3d 脚本编译
来源:互联网 发布:windows7删除数据恢复 编辑:程序博客网 时间:2024/05/17 12:20
Unity把所有的脚本编译为.NET dll文件,这些 dll文件将在运行时实时地进行汇编。这
使得Unity的脚本运行速度非常快,比传统的 JavaScript快 20倍左右,只比本地 C++代码慢
50%左右。在保存脚本时,Unity 便会花极少的时间对它们进行编译,在编译的过程中,你
可以看到在主窗口的右下角会显示一个小型旋转进展图标。
脚本编译分为四步进行:
1、在“Standard Assets”、“Pro Standard Assets”和“Plugins”中的脚本,首先
进行编译。
一个文件夹中的脚本不能在另一个文件夹的脚本中直接使用,但可以通过使用
GameObject.SendMessage 来进行交互。
2、在“Standard Assets/Editor” 、“Pro Standard Assets/Editor”和“Plugins/Editor”
中的脚本,其次进行编译。
如果你想要使用 UnityEditor 命名空间,你必须把脚本放到这些文件夹中。例如,增加
菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中
的脚本。
3、在“Editor”中的脚本,然后进行编译。
跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑
器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决: (1)、
移动想要访问的脚本到“Plugins”文件夹中。(2)、利用 JavaScript 的动态类型化功能。在
JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage
函数都仅仅使用一个字符串来代替类型。
4、其他脚本最后进行编译。
不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、
“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进
行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#
脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript
就可以直接访问C#脚本了。
第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编
译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因
此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这
样做。
针对 Unity版本进行条件编译
Unity 2.6增加了一个 C#预编译器,它能够识别所使用的Unity版本并对特殊功能进行有
条件的访问。例如:
// Specific version define including the minor revision
#if UNITY_2_6_0
// Use Unity 2.6.0 specific feature
#endif
// Specific version define not including the minor revision
#if UNITY_2_6
// Use Unity 2.6.x specific feature
#endif
这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。注意,版本条件编译只
能用于Unity 2.6及其后的版本中。将来,Unity会提供一个更适合的定义来在脚本中标识所
使用的Unity版本。
使得Unity的脚本运行速度非常快,比传统的 JavaScript快 20倍左右,只比本地 C++代码慢
50%左右。在保存脚本时,Unity 便会花极少的时间对它们进行编译,在编译的过程中,你
可以看到在主窗口的右下角会显示一个小型旋转进展图标。
脚本编译分为四步进行:
1、在“Standard Assets”、“Pro Standard Assets”和“Plugins”中的脚本,首先
进行编译。
一个文件夹中的脚本不能在另一个文件夹的脚本中直接使用,但可以通过使用
GameObject.SendMessage 来进行交互。
2、在“Standard Assets/Editor” 、“Pro Standard Assets/Editor”和“Plugins/Editor”
中的脚本,其次进行编译。
如果你想要使用 UnityEditor 命名空间,你必须把脚本放到这些文件夹中。例如,增加
菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中
的脚本。
3、在“Editor”中的脚本,然后进行编译。
跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑
器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决: (1)、
移动想要访问的脚本到“Plugins”文件夹中。(2)、利用 JavaScript 的动态类型化功能。在
JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage
函数都仅仅使用一个字符串来代替类型。
4、其他脚本最后进行编译。
不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、
“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进
行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#
脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript
就可以直接访问C#脚本了。
第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编
译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因
此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这
样做。
针对 Unity版本进行条件编译
Unity 2.6增加了一个 C#预编译器,它能够识别所使用的Unity版本并对特殊功能进行有
条件的访问。例如:
// Specific version define including the minor revision
#if UNITY_2_6_0
// Use Unity 2.6.0 specific feature
#endif
// Specific version define not including the minor revision
#if UNITY_2_6
// Use Unity 2.6.x specific feature
#endif
这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。注意,版本条件编译只
能用于Unity 2.6及其后的版本中。将来,Unity会提供一个更适合的定义来在脚本中标识所
使用的Unity版本。
0 0
- unity3d 脚本编译
- Unity3D四步解决高级脚本编译
- Unity3D中脚本编译的顺序
- Unity3D教程:四步解决高级脚本编译
- unity3D技术之特殊文件夹和脚本编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- Unity3d Android SDK Manager常见问题及脚本编译实现
- Unity3D中脚本的执行顺序和编译顺序
- Unity3d中脚本无法编译问题(Monodevelop)
- 用脚本编译 unity3d 项目的 ipa 安装包
- Unity3D中脚本的执行顺序和编译顺序
- Unity3d平台脚本预定义编译条件 Platform Dependent Compilation
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D中脚本的执行顺序和编译顺序
- *lds ----linux下的通用链接脚本
- Android使用自定义AlertDialog(退出提示框)
- java 第八天 面向对象(基础篇之练习题)
- shell中$(( )) 与 $( ) 还有${ }的区别
- GDB 进行调试 使用心得
- unity3d 脚本编译
- VMWare 三种工作模式(bridged、host-only、NAT)
- 画正方形
- xcode5.0打包IPA
- 算法:输出给定字符串的全部连续子串
- linux yum命令详解
- 发现TCP的一种错误----客户端连接失败(10055错误号)
- Java中的参数传递方式
- MySql 性能优化的最佳经验