Unity Assembly Definition Assembly Definition Reference

文章目录

  • 1.Unity 预定义程序集
  • 2.Assembly definition
  • 3. Assembly definitions相关实验

1.Unity 预定义程序集

Unity 有4个预定义程序集:

阶段程序集名脚本文件
1Assembly-CSharp-firstpassStandard Assets, Pro Standard Assets和Plugins文件夹下面的运行时脚本
2Assembly-CSharp-Editor-firstpass Standard Assets, Pro StandardAssets和Plugins文件夹下面的Editor文件夹下面的Editor脚本
3Assembly-CSharp其它不在Editor文件夹下面的脚本
4Assembly-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脚本用于测试
    在这里插入图片描述
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式精选面试题及参考答案

目录 什么是单例模式?它的应用场景是什么?如何保证单例模式线程安全? 什么是工厂方法模式?如何与简单工厂模式进行比较? 抽象工厂模式和工厂方法模式有什么区别?请给出实际应用场景。 什么是建造者模式?它和工厂模式有什么不同? 在什么情况下使用单例模式?如何在…

ios swift开发--ios远程推送通知配置

远程推送通知(Push Notifications)在 iOS 平台上是免费提供的,但需要一些准备工作。以下是开通和使用远程推送通知的基本步骤: 开通远程推送通知 注册 Apple Developer Program: 访问 Apple Developer 并注册一个开发…

关于QUERY_ALL_PACKAGES权限导致Google下架apk

谷歌商店被下架,原因是第三方使用了 QUERY_ALL_PACKAGES 权限; Google在高版本上限制了此权限的使用。当然,并不是 QUERY_ALL_PACKAGES 这个权限没有了,而是被列为敏感权限,必须有充分的理由说明,才允许上架 GP&#…

【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)

#华南理工大学主办!#IEEE出版!EI稳定检索!#组委阵容强大!IEEE Fellow、国家杰青等学术大咖领衔出席!#会议设置“优秀论文”“优秀青年学者报告”“优秀海报”等评优奖项 2024智能机器人与自动控制国际学术会议 &#…

[CKS] Create/Read/Mount a Secret in K8S

最近准备花一周的时间准备CKS考试,在准备考试中发现有一个题目关于读取、创建以及挂载secret的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[C…

5个非LLM软件趋势

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

社会工程骗局席卷金融机构

2024 年北美金融机构收到的社交工程诈骗报告数量比一年前增加了 10 倍。数据显示,诈骗现在占所有数字银行欺诈的 23%。 深度伪造和 GenAI 诈骗的危险日益增加 BioCatch 在其 2024 年北美数字银行欺诈趋势报告中公布了这些发现,该报告还详细说明了报告的…

读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录

1. 同步数据 1.1. 不同的数据仓库和数据湖通过数据集成层来进行桥接 1.2. AWS Glue、Fivetran和Matillion等数据集成工具从不同来源收集数据,统一这些数据,并将其转换为上游来源 1.3. 数据集成的一个典型用例是收集数据湖的数据并以结构化格式将其加载…

-bash: /home/xxx/anaconda3/bin/conda: No such file or directory

Linux系统中移动用户的配置文件后,Anaconda出现-bash: /home/shaocaiyin2023/anaconda3/bin/conda: No such file or directory错误提示。 查看PATH变量信息 echo $PATH 检查环境变量是否包含移动之后的文件目录,主要到*/anaconda3/bin这一层。如果没有…

【数据库】数据库迁移的注意事项有哪些?

数据库迁移是一个复杂且关键的过程,需要谨慎处理以确保数据的完整性和应用程序的正常运行。以下是一些数据库迁移时需要注意的事项: 1. 充分的前期准备 1.1 评估迁移需求 明确目标:确定迁移的具体目标,例如添加新字段、修改现…

LabVIEW开发相机与显微镜自动对焦功能

自动对焦是显微成像系统中的关键功能,通常由显微镜的电动调焦模块或特定的镜头系统提供,而工业相机则主要用于高分辨率图像的采集,不具备独立的自动对焦功能。以下是自动对焦的工作原理、实现方式及实际应用案例。 1. 自动对焦的工作原理 &a…

ReactPress与WordPress:两大开源发布平台的对比与选择

ReactPress与WordPress:两大开源发布平台的对比与选择 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。两款备受欢迎的开源发布平台——ReactPress和WordPress,各自拥有独特的优势和特点&am…

京东商品详情,Python爬虫的“闪电战”

在这个数字化的时代,我们每天都在和数据打交道,尤其是电商数据。想象一下,你是一名侦探,需要快速获取京东上某个商品的详细信息,但是没有超能力,怎么办?别担心,Python爬虫来帮忙&…

np.zeros_like奇怪的bug

import numpy as np aa np.array([[1,2,3],[2,3,3]]) cc np.random.randn(2,3) print(aa) print(cc)bb np.zeros_like(aa) print(bb)for i in range(bb.shape[0]):for j in range(bb.shape[1]):bb[i,j] cc[i,j]print(bb)结果如下 这里发现这个bb的结果是没有赋值的 正确做…

【时间之外】IT人求职和创业应知【34】-人和机器人,机器人更可靠

目录 新闻一:人形机器人产业持续高速增长,2026年中国市场规模将突破200亿元 新闻二:AI技术驱动设备厂商格局变化,部分厂商市占率快速提升 新闻三:华为与江淮汽车携手打造超高端品牌“尊界”,计划于明年春…

连接实验室服务器并创建虚拟环境,从本地上传文件到linux服务器,使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)

文章目录 一、连接实验室服务器并创建虚拟环境二、从本地上传文件到linux服务器三、使用requirement.txt安装环境需要的依赖的方法及下载缓慢的解决方法(Linux)四、查看虚拟环境中安装包位置五、Linux scp命令复制文件报错: not a regular file六、pycharm远程ssh连…

java 读取log日志文件关键信息

示例代码 String logFilePath "C:\\Users\\v2402001\\Downloads\\11111_ none _PSV975S3666001_09-10-2024_05.33.02_PM.log";Map<String, Pattern> fieldPatterns new HashMap<>();fieldPatterns.put("Devices Picked Input", Pattern.co…

【JS学习】15. JS进阶-深浅拷贝等

JavaScript 进阶 - 第4天 深浅拷贝 浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝&#xff1a;拷贝的是地址 常见方法&#xff1a; 拷贝对象&#xff1a;Object.assgin() / 展开运算符 {…obj} 拷贝对象拷贝数组&#xff1a;Array.prototype.concat() 或者 […arr] 如…

人工智能导论-选择题

选择题&#xff1a; 1. 下列关于智能说法错误的是&#xff08;D&#xff09; 解释&#xff1a; A选项提到“任何生命都拥有智能”&#xff0c;这是一个广义的定义&#xff0c;从某种程度上说&#xff0c;即使是细菌等微生物也有其适应环境的方式&#xff0c;可以视为一种简单…

WebSocket和HTTP协议的性能比较与选择

WebSocket和HTTP协议的性能比较与选择 引言&#xff1a; 在web应用开发中&#xff0c;无论是实时聊天应用、多人在线游戏还是实时数据传输&#xff0c;网络连接的稳定性和传输效率都是关键要素之一。目前&#xff0c;WebSocket和HTTP是两种常用的网络传输协议&#xff0c;它们…