当前位置: 首页 > article >正文

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文件夹下面的脚本)

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.kler.cn/a/392716.html

相关文章:

  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • 边缘计算在智能交通系统中的应用
  • mongoDB的安装及使用
  • 【前端】Vue中如何避免出现内存泄漏
  • 除了 Postman,还有什么好用的 API 调试工具吗
  • libcurl.net入门使用
  • Python网络爬虫与数据采集实战——网络爬虫的基本流程
  • xcode-select: error: tool ‘xcodebuild‘ requires Xcode, but active developer
  • 随机链表 (Randomized Linked List)、随机树 (Randomized Tree)详细解读
  • [Java]微服务治理
  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • Unity网络通信(part8.客户端主动断连与心跳消息)
  • Docker:助力应用程序开发的利器
  • 面试编程题目(一)细菌总数计算
  • Mybatis-plus 使用分页插件
  • 重生之从零设计 MySQL 架构
  • cuda的3DArray和TextureObject
  • PHP搭建开发环境(Windows系统)
  • 代码随想录算法训练营第二十九天| 134. 加油站 、135. 分发糖果 、860.柠檬水找零、406.根据身高重建队列。c++转java
  • 本地权限提升漏洞分析
  • Bootstrap 5 轮播
  • Proteus中数码管动态扫描显示不全(已解决)
  • 微积分复习笔记 Calculus Volume 1 - 5.3 The Fundamental Theorem of Calculus
  • 【ChatGPT】通过Prompt技巧优化ChatGPT的营销文案输出
  • 【优选算法篇】化繁为简,见素抱朴:从乱象中重构秩序的艺术
  • 用于在 .NET 中构建 Web API 的 FastEndpoints 入门