Unity中程序集dll

一:前言

一个程序集由一个或多个文件组成,通常为扩展名.exe和.dll的文件称为程序集,.exe是静态的程序集,可以在.net下直接运行加载,因为exe中有一个main函数(入口函数),.dll是动态链接库,通过反射动态加载。程序集是一个AssemblyDefinitionFile.asmdef文件,它的内容是一个JSON格式的字段,创建之后,就可以打开直接编辑JSON

一个应用程序的结构从大到小排序是应用程序域(AppDomain)、程序集(Assembly),模块(Module),类型(Type),成员(EventInfo、FieldInfo、MethodInfo、PropertyInfo) 几个层次


二:程序集的好处

------脚本有改动时,Unity会重新编译当前程序集下所有脚本,过多脚本会导致编译时间冗长,对于大项目不友好,所以使用程序集可以减少代码编译的时间,使用程序集后每次脚本有修改后,只会重新编译当前脚本所属程序集下的所有脚本和引用此程序集的程序集下的所有脚本

------同一程序集内任何脚本都可相互访问引用,导致项目耦合度高,难以重构和优化改进代码

------可以设置程序集的目标平台,只在特定平台才会被编译


三:创建dll

默认普通文件夹下创建的脚本都打包进Assembly-CSharp.dll,Editor文件夹下创建的都打包进Assembly-CSharp-Editor.dll

同时也可以自己创建程序集,在某个目录下创建程序集,同级文件夹或子文件夹下的脚本都会打包进此dll中,注意同一个目录下只能有一个dll

程序集文件目录:Library---ScriptAssemblies

------Name:一个脚本属于哪个程序集只能通过此参数控制,修改程序集文件的名称没有作用

------Allow 'unsafe' code:如果程序集中使用了Unsafe关键字,需要勾选此选项,否则报错

------Auto Referenced:指定是否所有预定义程序集都引用此程序集

------No Engine References:启用此属性后,Unity在编译程序集时不会向UnityEditor或UnityEngine添加引用,适用于可以在Unity或其他平台的项目中通用的程序集

------Define Constrains:添加预定义宏,读取预定义宏之后才编译,可以不填

------Assembly Defintion References:程序集的引用


四:程序集的引用

例如脚本test1在A程序集中,脚本test2在B程序集中,在test2中无法访问到test1,需要将A程序集添加为B程序集的引用

相关推荐
井队Tell6 小时前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第五天)
学习·3d·unity
yi碗汤园7 小时前
【一文了解】八大排序-插入排序、希尔排序
开发语言·算法·unity·c#·1024程序员节
AA陈超18 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-14 属性菜单 - 文本值行
c++·游戏·ue5·游戏引擎·虚幻
future_studio1 天前
聊聊 Unity(小白专享、C# 小程序 之 联机对战)
unity·小程序·c#
AA陈超1 天前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-13 属性菜单 - 边框值
c++·游戏·ue5·游戏引擎·虚幻
shandianchengzi1 天前
【记录】Unity|Unity从安装到打开一个Github项目(以我的世界(仿)为例)
unity·c#·游戏引擎·github·我的世界·mc
yi碗汤园2 天前
【超详细】C#自定义工具类-StringHelper
开发语言·前端·unity·c#·游戏引擎
野奔在山外的猫2 天前
【案例】Unity 平台访问文件浏览器(汇总)
unity
WaWaJie_Ngen2 天前
【OpenGL】模板测试(StencilTest)
c++·算法·游戏·游戏引擎·游戏程序·图形渲染
开发游戏的老王3 天前
虚幻引擎虚拟制片入门教程目录
游戏引擎·虚幻