Unity3D教程:四步解决高级脚本编译
2013-10-14 15:18
204 查看
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 命名空间,你必须把脚本放到这些文件夹中。例如,增加菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中的脚本。Unity3D教程手册
3、在“Editor”中的脚本,然后进行编译。
跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决:
(1)、移动想要访问的脚本到“Plugins”文件夹中。
(2)、利用 JavaScript 的动态类型化功能。在JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage函数都仅仅使用一个字符串来代替类型。
4、其他脚本最后进行编译。
不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript就可以直接访问C#脚本了。Unity3D教程手册
第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这样做。
针对 Unity版本进行条件编译,这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。
01
// Specific version define including the minor revision
02
03
#if UNITY_2_6_0
04
05
// Use Unity 2.6.0 specific feature
06
07
#endif
08
09
// Specific version define not including the minor revision
10
11
#if UNITY_2_6
12
13
// Use Unity 2.6.x specific feature
14
15
#endif
16
脚本编译分为四步进行:
1、在“Standard Assets”、“Pro Standard Assets”和“Plugins”中的脚本,首先进行编译。一个文件夹中的脚本不能在另一个文件夹的脚本中直接使用,但可以通过使用GameObject.SendMessage 来进行交互。
2、在“Standard Assets/Editor” 、“Pro Standard Assets/Editor”和“Plugins/Editor”中的脚本,其次进行编译。如果你想要使用 UnityEditor 命名空间,你必须把脚本放到这些文件夹中。例如,增加菜单项或自定义导航, 你必须把相应的脚本放到这些文件夹中。这些脚本能够访问上级组中的脚本。Unity3D教程手册
3、在“Editor”中的脚本,然后进行编译。
跟上步的情况基本相同,不同点在于这些脚本不能访问下级组中的脚本。这在编写编辑器代码时会出现一些问题, 因为你不能编辑下级组中的脚本。 可以通过两种方式来解决:
(1)、移动想要访问的脚本到“Plugins”文件夹中。
(2)、利用 JavaScript 的动态类型化功能。在JavaScript中,你不需要知道所使用的类的类型。例如,GetComponent函数和 SendMessage函数都仅仅使用一个字符串来代替类型。
4、其他脚本最后进行编译。
不在上面提到的文件夹中的脚本将最后进行编译。这些脚本有权访问 “Standard Assets”、“Pro Standard Assets”和“Plugins”文件夹中的脚本,这使得你可以在不同语言脚本之间进行交互。例如,如果你想要创建一个 JavaScript,并在其中使用一个 C#脚本。你可以把 C#脚本放到“Standard Assets”文件夹中,而把 JavaScript放到该文件夹的外面。这样javaScript就可以直接访问C#脚本了。Unity3D教程手册
第一组(“Standard Assets” 、“Pro Standard Assets”和“Plugins”文件夹)中的脚本在编译时会比较耗时,因为它们在编译的同时,第三组(“Editor”文件夹)也在进行预编译。因此,如果你想减少编译的时间,可以把第一组中的脚本移到第四组中去,但我们并不推荐这样做。
针对 Unity版本进行条件编译,这段代码用来在指定的 Unity版本中启用一些可用的游戏特性。
01
// Specific version define including the minor revision
02
03
#if UNITY_2_6_0
04
05
// Use Unity 2.6.0 specific feature
06
07
#endif
08
09
// Specific version define not including the minor revision
10
11
#if UNITY_2_6
12
13
// Use Unity 2.6.x specific feature
14
15
#endif
16
相关文章推荐
- Unity3D四步解决高级脚本编译
- Unity3D脚本中文系列教程(十四)
- Unity3D中脚本的执行顺序和编译顺序
- Cobalt Strike神器高级教程利用Aggressor脚本编写目标上线邮件提醒
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- Unity3D中脚本的执行顺序和编译顺序
- 编译unix环境高级编程第一个例子出错解决
- Viz Artist高级脚本视频教程---StringMap使用和Vertex操作
- Unity3D脚本中文系列教程(十七)
- Unity3D中脚本的执行顺序和编译顺序
- Unity3D脚本中文系列教程(二)
- 解决unity3d 4.5 编译ios8 横屏问题
- Unity3D脚本中文系列教程(九)
- Unity3D中脚本的执行顺序和编译顺序
- 2014-Unity3d基础入门到高级全套全系列视频教程
- unity3d插件Daikon Forge GUI 中文教程6-高级控件richtextlabel的使用
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题!
- opencv在vs2012下重编译详细教程——解决按f11进入不了源代码
- Unity3D脚本中文系列教程(八)
- Unity3D中脚本的执行顺序和编译顺序