中国域名是,主网站怎么做熊掌号优化,南昌网站建设设计,网络营销有哪些推广平台对于Unity的程序集#xff0c;具体内容可以参考Unity官方文档#xff0c;程序集定义
- 预定义程序集
比如Unity的默认程序集#xff0c;Assembly-CSharp.dll#xff0c;还有其他的比如 Assembly-CSharp-Editor.dll#xff0c;Assembly-CSharp-firstpass.dll 没有指定或…对于Unity的程序集具体内容可以参考Unity官方文档程序集定义
- 预定义程序集
比如Unity的默认程序集Assembly-CSharp.dll还有其他的比如 Assembly-CSharp-Editor.dllAssembly-CSharp-firstpass.dll 没有指定或不在特殊文件夹内的脚本都属于这个程序集
- 特殊文件夹
1. Editor
在Editor文件夹下的脚本默认会属于Assembly-CSharp-Editor.dll程序集除非自定义程序集
2. Plugins
在Plugins文件夹下的脚本默认属于Assembly-CSharp-firstpass.dll程序集除非自定义程序集
- 程序集定义引用Assembly Definition Reference
即Assembly Definition Reference 官方解释为 什么意思呢试验一下 此时脚本默认属于Assembly-CSharp-Editor.dll
接下来创建一个Assembly Definition Reference并且指定程序集引用为UniTask 发现此时脚本的所属程序集变成了UniTask.dll所以这里的意思就是Assembly Definition Reference会修改原来脚本所属的程序集
而当脚本已经属于一个自定义程序集时就不能再指定一个Assembly Definition Reference了 此时脚本属于EditorTest.dll程序集 报错的意思是“包含多个程序集定义文件”
- 引用其他程序集程序集中的Assembly Definition References 在这里引用这些程序集后程序集所属的脚本就可以使用这些程序集里的Public类或者方法了但是不能使用internal的类或者方法并且要注意程序集之间不能通过这个形成循环引用勾选GUIDs的意思是对于程序集定义引用使用GUID而非程序集名称。这样一来被引用的程序集可以重命名而无需更新引用。 即这些被引用的程序集可以重命名但因为使用的是他们的GUID所以重命名不影响引用
- Override References 这里的意思是当不勾选Override References时当前自定义程序集会引用所有的预编译程序集勾选后只会引用指定的预编译程序集和Assembly Definition References 的区别在于这里指定的是对预编译程序集的引用
此时Main程序集没有勾选Override ReferencesUnity.VisualScripting可以正确引用
当勾选没有指定时 引用报错
当勾选后在列表中引用相关程序集 报错消失了
- Auto Referenced
指定预定义的程序集是否应引用此项目程序集即类似Assembly-CSharp.dll这样的预编译程序集是否会引用当前这个自定义程序集默认勾选的话预编译程序集是会自动引用当前自定义程序集的 在使用HybridCLR时有一个注意项是不要将热更程序集的Auto Referenced选项否选否则会出现打包失败的情况
- Define Constraints 有条件地包含一个程序集 即需要同时满足所有的符号表示的条件这个程序集才会被编译然后这里的符号可以是Project Setting中的Scripting Define Symbols定义的符号 可以是Unity定义的符号比如UNITY_EDITOR之类的 还有 Version Defines 定义的符号
- Version Defines 版本定义 比如我想要区分这个程序集中的代码在不同yooasset版本的时候的处理那么可以这样
然后就可以在代码中引用这个符号表示当yooasset的版本 1.5.0时的处理 当前工程中的yooasset版本是2.3.x的版本运行 走到了YOOASSET_NEW中
现在去掉这个定义 走到了#else中
那么它和Project Setting中的Scripting Define Symbols有什么区别呢 简单来说就是Scripting Define Symbols定义的符号会影响到项目中所有的程序集但是Version Defines 中定义的符号只会影响到当前定义的这个程序集
还有注意如果Expression这里的版本范围表达式不填的话经过实测这个符号会一直生效
比如
- 设置程序集Internal成员的暴露 即当前程序集的Internal成员会暴露给这里面自定义名称的程序集比如UniTask.LinqUniTask.Addressables程序集现在可以使用这个脚本所在程序集的Internal成员
比如 新建一个Test程序集合Test脚本 此时InternalsVisibleTo脚本属于Main程序集 BuildTest属于Main程序集 这里的意思就是Main程序集的Internal成员会暴露给Test程序集 可以看到此时Test脚本能够顺利调用到BuildTest脚本的Internal的成员PrintTest