前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity2D开发入门-程序集(Assembly Definitions)

Unity2D开发入门-程序集(Assembly Definitions)

作者头像
码客说
发布2023-07-28 16:34:48
4920
发布2023-07-28 16:34:48
举报
文章被收录于专栏:码客码客

前言

在默认情况下,根据脚本在项目中的文件夹,会分成四个阶段编译脚本。

当脚本引用在其它阶段 (即位于不同程序集中) 编译的类时,编译顺序非常重要。

基本规则是,在当前编译阶段之后的任何编译阶段都不能被引用。在当前阶段或更早阶段编译的任何内容都是完全可用的。

编译的各个阶段如下:

阶段

程序集名

脚本文件

1

Assembly-CSharp-firstpass

Standard Assets, Pro Standard Assets 和 Plugins 文件夹下面的运行时脚本

2

Assembly-CSharp-Editor-firstpass

Standard Assets, Pro Standard Assets 和 Plugins 文件夹下面的 Editor 文件夹下面的 Editor 脚本

3

Assembly-CSharp

其它不在 Editor 文件夹下面的脚本

4

Assembly-CSharp-Editor

所有剩下Editor 文件夹下面的脚本

Assembly definitions

程序集是一个 C# 代码库,它包含由脚本定义的已编译类和结构,还定义了对其他程序集的引用。

默认情况下,Unity 将几乎所有的游戏脚本编译到预定义的程序集中(Assembly-CSharp.dll)。

这种安排对于小型项目来说是可以接受的,但是当你向项目中添加更多代码时,会有一些缺点:

每当你改变一个脚本时,Unity 就必须重新编译所有其他脚本,这增加了迭代代码更改的整体编译时间。 任何脚本都可以直接访问任何其他脚本中定义的类型,这使得重构和改进代码变得更加困难。 所有脚本都是为所有平台编译的。

这里说一下程序集的特点

程序集可以被其他引用,但是只能访问你你为其添加的其他程序集中的脚本。 也就是说你不让访问的他都不能访问,或者这样说它不依赖别人。所以当编译的时候只要它不变就不会被再编译。这样就减少了编译的脚本。 每个程序集都被被编译为一个DLL。 我们常把多个项目之间可以通用的脚本放在程序集中。

另外

自定义的Assembly definitions下的Editor下的脚本不会再生成新的程序集,都在我们的自定义程序集下。

定义的方式

在我们要定义程序集的文件夹上右键 Create=>Assembly Definitions

image-20230726232447915
image-20230726232447915

属性

image-20230726232619186
image-20230726232619186

其中

Root Namespace 命名空间 可以不填。

Define Constraints 添加预定义宏,读取预定义宏之后才编译,可以不填。

Assembly Definition References 程序集的依赖,依赖的程序集必须被添加才能在该程序集中使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Assembly definitions
  • 定义的方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档