Unity关于程序集(Assembly )的那些事 | 您所在的位置:网站首页 › unity创建不了脚本 › Unity关于程序集(Assembly )的那些事 |
学习大纲
一. 什么是程序集?二. 为什么使用程序集?三. 如何在Unity中使用程序集1.基本常识2.自定义程序集3. 多层级的程序集4. Assembly Definition Reference
四. 程序集 Inspector 面板详解
一. 什么是程序集?
程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件(例如可执行文件**.exe和类库文件.dll**)。由于程序集在编译后并不一定会生成单个文件,而可能会生成多个物理文件,甚至可能会生成分布在不同位置的多个物理文件,所以程序集是一个逻辑单元,而不是一个物理单元。即程序集在逻辑上是一个编译单元,但在物理储存上可以有多种存在形式。对于静态程序集可以生成单个或多个文件,而动态程序集是存在于内存中的。在C#中程序集处处可见,因为任何基于.NET的代码在编译时都至少存在一个程序集。 基于.NET框架的.dll库是一个完整的程序集,需要事先引用对应的类库。从代码的结构上看,一个程序集可以包含一个或多个命名空间,而每个命名空间中又可以包含子命名空间或类型列表。由于程序集在编译后可以生成多个模块文件,因此一个物理文件并不代表它就是一个程序集,一个程序集并不一定只有一个文件。在VS开发环境中,一个解决方案可以包含多个项目,而每个项目就是一个程序集。 应用程序结构:包含 应用程序域(AppDomain),程序集(Assembly),模块(Module),类型(Type),成员(EventInfo、FieldInfo、MethodInfo、PropertyInfo) 几个层次。 ![]() ![]() ![]() ![]() ![]() ![]() 在上面的步骤中我们讲到:在文件夹中创建Assembly Defienitions时,Unity将从该文件夹中的所有脚本编译到一个单独的托管程序集,并包含所有子文件夹的定义。 如果子文件夹具有自己的程序集定义,该文件夹中的所有脚本及其子文件夹中的脚本编译到一个单独的托管程序集,这些托管程序集充当Unity项目中的单个库。 图片一目了然: 细心的同学可能发现创建程序集的时候下面还有一个Assembly Definition Reference 选项,下面是一些注意事项: 每个文件夹只能创建一个“Assembly Definition”或“Assembly Definition Reference”。Use GUID 选项![]()
![]() 【Define Constraints】:指定必须定义的编译器#define指令,才能编译或引用程序集。 【Assembly Definition References】:指定对使用 Assembly Defienitions 创建的其他程序集的引用。 参考文章: 程序集与反射技术(C#)C# 程序集Assembly官方文档[洪流学堂]Unity2017.3新功能 |
CopyRight 2018-2019 实验室设备网 版权所有 |