Unity程序集

article/2025/6/18 19:43:55

对于Unity的程序集,具体内容可以参考Unity官方文档,程序集定义

- 预定义程序集

比如Unity的默认程序集,Assembly-CSharp.dll,还有其他的比如 Assembly-CSharp-Editor.dll,Assembly-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 References,Unity.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.Linq,UniTask.Addressables程序集现在可以使用这个脚本所在程序集的Internal成员

比如
在这里插入图片描述
新建一个Test程序集合Test脚本
在这里插入图片描述
此时InternalsVisibleTo脚本属于Main程序集
在这里插入图片描述
BuildTest属于Main程序集
在这里插入图片描述
这里的意思就是Main程序集的Internal成员会暴露给Test程序集
在这里插入图片描述
在这里插入图片描述
可以看到此时Test脚本能够顺利调用到BuildTest脚本的Internal的成员PrintTest


http://www.hkcw.cn/article/RijVlPTfDD.shtml

相关文章

【算法】递归与分治策略

一、算法整体思想 一般情况下,问题的规模越大,解题所需的计算时间越长,并且解题的难度可能会变得很大。 问题的规模越小,解题所需的计算时间往往越短,也比较容易处理。 当直接解决一个较大的问题时,有时是…

NVIDIA Mellanox BlueField-2 DPU(Data Processing Unit)智能网卡的调试和使用

专有名词 OOB: BMC: BFB: EMMC: 关键词解释eMMCEmbedded Multi-Media Card——把 NAND 闪存颗粒与控制器封装在一起的板载存储件,类似手机里的“内置储存” .deb:文件是​​Debian软件包格式​​的专…

(LeetCode 每日一题) 909. 蛇梯棋 (广度优先搜索bfs)

题目&#xff1a;909. 蛇梯棋 思路&#xff1a;广度优先搜索bfs队列&#xff0c;时间复杂度0(6*n^2)。 细节看注释 C版本&#xff1a; class Solution { public:int snakesAndLadders(vector<vector<int>>& board) {int nboard.size();// vis[i]&#xff1a;…

医疗多模态共情推理与学习一体化网络构成初探

1 引言:多模态共情推理的概念内涵与技术背景 在当今医疗人工智能领域,多模态共情推理正逐步成为突破临床决策支持系统瓶颈的关键范式。这一技术通过融合认知共情与情感共情的双重机制,模拟人类医生的综合诊断思维过程,实现对患者全方位健康状态的深度理解。医疗环境中的共…

RFID技术深度剖析:从原理、协议到S50卡与FM17550读写

知识点1【RFID的概述】 学习目标是学习对这个卡片的读写 用已有的手册实现对卡片内数据的读写操作 RFID&#xff1a;&#xff08;Radio Frequency Identification&#xff09;无线射频识别 通过无线识别目标&#xff0c;并读写相关数据&#xff0c;而无需接触 位于感知层&…

4-香豆酸:CoA连接酶晶体-文献精读138

Crystal structures of a Populus tomentosa 4-coumarate:CoA ligase shed light on its enzymatic mechanisms 杨树&#xff08;Populus tomentosa&#xff09;4-香豆酸&#xff1a;CoA连接酶的晶体结构揭示了其酶促机制 摘要 4-香豆酸&#xff1a;CoA连接酶&#xff08;4CL…

VTK|实现类似CloundCompare的测量功能

文章目录 CloundCompare在点、线、面三种模式下的显示内容✅ 图1&#xff1a;点模式✅ 图2&#xff1a;线模式✅ 图3&#xff1a;面模式 增加控制菜单栏实现测量功能类如何调用项目git链接 CloundCompare在点、线、面三种模式下的显示内容 点 线 面 三张图展示了 CloudComp…

Android15 userdebug版本不能remount

背景描述&#xff1a; 最近调试Android Vendor Hal的时候发现一个奇怪的现象: android userdebug版本刷到设备中&#xff0c;执行adb root没提示错误&#xff0c;但是没有获取到root权限。 Android设备运行的系统版本有三种情况&#xff1a;user版本、userdebug版本和eng版本…

伊朗外长:将适当回应美方核谈判提案

△伊朗外交部长阿拉格齐(资料图)当地时间5月31日,伊朗外交部长阿拉格齐在社交平台表示,当天阿曼外交大臣巴德尔访问伊朗并向其介绍了美方有关核谈判的提案。阿拉格齐表示,伊朗将根据原则、国家利益和伊朗人民的权利对此作出适当的回应。白宫新闻秘书莱维特当地时间31日表示…

27 C 语言编程核心:main 主函数(基本形式、返回值、参数、命令行传参)、多文件编程实践

1 main 主函数 1.1 主函数的作用 在 C 语言中&#xff0c;main 主函数是程序的入口函数&#xff0c;所有 C 程序必须包含一个名为 main 的函数。程序总是从该函数开始执行&#xff0c;没有它程序就无法启动。 主函数可以调用其他函数。其他函数不能调用主函数。主函数不能调用…

GIS常见数据及主要应用综述:类型解析、应用案例与未来趋势全景解读

&#x1f30f; GIS常见数据及主要应用综述&#xff1a;类型解析、应用案例与未来趋势全景解读 地理信息系统&#xff08;GIS&#xff09;是支撑空间决策、资源管理、城市治理的重要技术体系。本文从常见数据类型入手&#xff0c;结合中国及国际资源&#xff0c;梳理典型GIS应用…

系统性学习C语言-第十二讲-深入理解指针(2)

系统性学习C语言-第十二讲-深入理解指针&#xff08;2&#xff09; 1. const 修饰指针1.1 const 修饰变量1.2 const 修饰指针变量 2. 野指针2.1 野指针成因2.2 如何规避野指针2.2.1 指针初始化2.2.2 小心指针越界2.2.3 指针变量不再使用时&#xff0c;及时置 NULL &…

Linux安装redis

Linux redis路径 https://download.redis.io/releases/解压安装Redis 解压 tar -zvxf redis-6.0.5.tar.gz 由于redis是c语言编写的&#xff0c;所以我们需要先安装gcc&#xff0c;安装的命令如下&#xff1a; yum install gcc-c安装 输入命令&#xff1a; make PREFIX/usr/…

NumPy 数组计算:广播机制

文章目录 NumPy 数组计算&#xff1a;广播机制一、广播机制简介二、广播机制的规则1. 广播机制示例 12. 广播机制示例 23. 广播机制示例 3 三、广播机制实战1. 数组的中心化2. 绘制二维函数 NumPy 数组计算&#xff1a;广播机制 我们在NumPy数组的计算&#xff1a;通用函数中看…

Codesys FOR 循环之轴控

关于多伺服的轴控,不管怎么写都会很复杂,要么编程的时候代码行数多,要么是后期检查时非常麻烦,目前还未找到一个两全其美的方法,今天介绍的是通过FOR循环的轴控,就属于后者,代码行数较少,控制的轴数也没有限制,不需要一个轴一个的复制FB块,但是想在调试的时候实时查看…

欧冠决赛杜埃梅开二度 新星闪耀赛场

北京时间6月1日,本赛季的欧冠决赛中,19岁的杜埃表现出色,梅开二度并送出一次助攻,帮助巴黎圣日耳曼在比赛进行到73分钟时以4-0领先国际米兰。据统计,杜埃成为自1964年国际米兰名宿桑德罗-马佐拉以来,首位在欧冠决赛中完成梅开二度并且送出助攻的球员。本赛季,杜埃代表巴…

使用VSCode在WSL和Docker中开发

通过WSL&#xff0c;开发人员可以安装 Linux 发行版&#xff08;例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等&#xff09;&#xff0c;并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具&#xff0c;不用进行任何修改&#xff0c;也无需使用传统虚…

《汇编语言》第12章 内中断——实验12 编写0号中断的处理程序

编写0号中断的处理程序&#xff0c;使得在除法溢出发生时&#xff0c;在屏幕中间显示字符串"divide error&#xff01;"&#xff0c;然后返回到DOS。 要求&#xff1a;仔细跟踪调试&#xff0c;在理解整个过程之前&#xff0c;不要进行后面课程的学习。 ;sy12.asm …

黑马k8s(十八)

一&#xff1a;安全认证 1.安全认证-概述 2.安全认证-认证方式 认证管理 3.安全认证-授权管理 因为没有授予角色deployment的权限&#xff0c;所以不能查看 4.安全认证-准入控制 二&#xff1a;DashBoard 之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的…

python:PyMOL 使用教程 及实用示例

安装参阅&#xff1a;开源版PyMol安装保姆级教程 百度网盘下载 提取码&#xff1a;csub 简介: PyMOL是一个Python增强的分子图形工具。它擅长蛋白质、小分子、密度、表面和轨迹的3D可视化。它还包括分子编辑、射线追踪和动画。 PyMol的名字来源于“Py”表示该软件基于Python这…