Unity各个文件夹的编译顺序

  从.net转过来刚接触Unity的时候还是有很多不习惯的地方,对象实例化,namespace命名空间,构造函数等等,看的时候经常一头雾水,最近打算就一些日常看过的问题进行一下整理和解析。师傅说让看一下各个文件夹在编译过程中的执行顺序,网上查到一片文章看着还是可以,转一下。

  大多数情况下,您可以选择任何你喜欢的文件夹在您的项目的名称,但Unity储备一些名称以指示内容有一个特殊的用途。这些文件夹中有些会影响脚本编译的顺序。从根本上说,有四个单独的脚本编译,将编译脚本的阶段由其父文件夹决定。

  这是重要的情况下,脚本必须引用在其他脚本中定义的类。基本的规则是在编译阶段后的任何东西不能被引用。任何编译中的当前阶段或更早的阶段是完全可用。另一种情况发生时写的一种语言脚本必须提到另一种语言(譬如说,声明在 C#脚本中定义的类变量的

UnityScript文件)中定义的类。这里的规则是被引用的类必须在较早前的阶段已经编译过。

  Unity3D将脚本编译成.NET dll文件,dll文件将在运行时被实时编译执行。这比传统的javascript快20倍,比C++慢一半左右。在保存的时候,Unity使用一些时间编译你的脚本。在编译的时候,你能看到Unity的主窗口右角有进度符号。

  以下是编译的四个步骤:

一、所有在Standard Assets, Pro Standard Assets, Plugins中的脚本被首先编译。

       在这些文件夹之内的脚本不能直接访问这些文件夹以外的脚本。不能直接引用类或它的变量,但是可以使用GameObject.SendMessage与他们通信。

二、所有在Standard Assets/Editor, Pro Standard Assets/Editor, Plugins/Editor中的脚本被首先编译。

      如果你想要使用UnityEditor命名空间,你必须放置你的脚本到这些文件夹。例如添加菜单或写入自定义wizards你必须放置你的脚本到哪些文件夹。这些脚本可以访问所有前面组中的脚本。

三、然后所有在Editor中的脚本被编译

       当编写编辑器代码来编辑那些在后面组中的脚本时,有两种解决方法:1、放置其他脚本到"Plugins"文件夹。2、利用JavaScript动态类型。在JavaScript你不需要知道类的类型再使用它,当使用GetComponent时,你可以使用一个字符串来代替类型,还可以使用SendMessage。

四、所有其他的脚本被最后编译

       所有没在上述文件夹的脚本被最后编译。所有这步里编译的脚本有权使用第一组的所有脚本("Standard Assets", "Pro Standard Assets" or "Plugins")。这允许你使用不同的脚本语言相互操作。例如,如果你想要创建一个Javascript,它将使用一个C#脚本。放置C#脚本到"Standard Assets"文件夹,Javascript放在在此文件夹之外,Javascript便可以直接引用C#脚本。

       所以,放在第一组的脚本,将需要更长的编译时间,因为你编译第三组需要再次编译它们。因此如果你想要减少编译时间,把那些不常改动的放在第一组,经常改变的放在第四组。

  其他的一些特殊文件夹介绍在这篇文章里面有说明。

 

转载于:https://www.cnblogs.com/kyo950/p/4834143.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值