Unity Assembly Definition & Assembly Definition Reference

文章目录

  • [1.Unity 预定义程序集](#1.Unity 预定义程序集)
  • [2.Assembly definition](#2.Assembly definition)
  • [3. Assembly definitions相关实验](#3. Assembly definitions相关实验)

1.Unity 预定义程序集

Unity 有4个预定义程序集:

阶段 程序集名 脚本文件
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文件夹下面的脚本)

Unity自定义程序集DLL文件的生成路径:项目路径\Library\ScriptAssemblies\xxxx.dll

2.Assembly definition

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

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

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

  • 每当你改变一个脚本时,Unity就必须重新编译所有其他脚本,这增加了迭代代码更改的整体编译时间。
  • 任何脚本都可以直接访问任何其他脚本中定义的类型,这使得重构和改进代码变得更加困难。
  • 所有脚本都是为所有平台编译的。
  1. 在工程下新建两个文件夹
  2. 在两个文件夹下右键创建Assembly Definition(文件后缀名为.asmdef


属性介绍:

  • Name:程序集的名称 , 程序集名称在整个项目中必须唯一
  • General
    ① Allow 'unsafe' code:如果程序集中使用了Unsafe关键字,需要勾选此选项,否则报错
    ② Auto Referenced:指定是否所有预定义程序集都应引用此程序集。
    ③ No Engine References:启用此属性后,Unity在编译程序集时不会向UnityEditor或UnityEngine添加引用。
    ④ Override References:启用后以手动方式确认引用哪些程序集
    ⑤ Root Namespace:当前程序集的默认命名空间,填写后我们使用unity添加新代码文件,会自动添加命名空间。
  • Define Constraints:指定必须定义的编译器#define指令,才能编译或引用程序集。
  • Assembly Definition References:指定对使用 Assembly Defienitions 创建的其他程序集的引用。
  • Platforms:设置发布平台
  1. 在MyCode1文件夹下新建MyTool.cs脚本用于测试
csharp 复制代码
public class MyTool
{
    public static string SayHello()
    {
        return "Hello world";
    }
}
  1. 在MyCode2文件夹下创建Visit.cs脚本,尝试访问Tool中的静态方法,会发现不存在

  2. 对MyCode2.asmdef添加MyCode1.asmdef的引用
  3. 再次访问,发现可以正常访问到
  4. 在VS中也可以看到形成了两个程序集

3. Assembly definitions相关实验

引用其它文章:https://zhuanlan.zhihu.com/p/388803476

相关推荐
叶帆16 天前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
久数君17 天前
AI三维建模工具“造形家”:地理场景三维化的高效解决方案
unity·glb·ai算法·ai三维建模工具·地图框选·造形家·城市建筑模型
会思考的猴子17 天前
Unity VFX 属性 Postion 和 TargetPostion
unity
hai31524754317 天前
九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *
人工智能·microsoft·游戏引擎·游戏程序
心前阳光17 天前
Unity资源导入之自动化资源导入
unity·自动化·游戏引擎
心前阳光17 天前
Unity之2021.3.45f2c1发布安卓程序遇到的问题
android·unity·游戏引擎
纪纯17 天前
PicoVR Unity Integration SDK 3.4 常用交互API
unity·游戏引擎·vr·pico
龙智DevSecOps解决方案17 天前
3A 游戏优化技术栈:如何打通引擎级分析工具与 DevOps 持续集成管线?
unity·性能优化·游戏开发·技术美术·perforce·unrealengine
葛兰岱尔17 天前
从 SolidWorks 到 Three.js,从 Inventor 到 Unity——制造业CAD模型“几何-语义一体化“转换,不再是天方夜谭!
开发语言·javascript·unity
鼎艺创新科技17 天前
三维电子沙盘中OSGB倾斜摄影数据的加载与渲染
游戏引擎·cocos2d