【Unity知识点详解】自定义程序集

        今天来介绍一下Unity中的自定义程序集。在项目开发中我们经常接触到第三方插件的程序集,如DOTween、Newtonsoft.Json等。

        使用自定义程序集有这么几个好处:

  1. 方便代码的的复用。当某一功能模块需要在多个项目中重复使用时,可以将代码编译成程序集,将程序集放入工程中即可。在代码维护时,也只需重新编译程序集替换即可。我们常用到的第三方插件就是如此。
  2. 在大型项目中使用程序集可以提高编译效率,在代码编译时Unity会将工程中的所有代码编译到 Assembly-CSharp.dll 程序集中去。当项目庞大代码量多的时候,代码的每一次修改都会消耗大量的时间进行编译,使用程序集则可以减少编译时间。
  3. 使用程序集也可以更好的模块化组织和管理代码。
  4. 使用程序集也可以避免源代码的暴露。

自定义程序集的创建

        接下来介绍一下如何创建自定义程序集。

        首先创建一个文件夹,用于存放程序集中所涉及到的代码文件。然后在文件夹下右键,在Create->Assembly Definition中创建程序集定义文件。如图MyAssembly.asmdef会包含目录下所有代码文件,以及包括所有子目录中的代码文件。这里建议程序集名称和文件夹名称保持一直,方便理解和管理。

       

        创建完成MyAssembly.asmdef后Unity会在工程Library\ScriptAssemblies目录中自动生成一个同名的MyAssembly.dll程序集文件,其中就包含了MyAssembly目录下所有的代码。当其他工程需要使用同样的功能模块时,则可以将程序集放入Plugins目录即可。使用方式和其他第三方插件的程序集一样。

自定义程序集的参数设置

        下面来介绍一下MyAssembly.asmdef程序集定义文件中的一些参数。

Name:程序集名称

Auto Referenced:指定预定义的程序集是否应引用此项目程序集。禁用 Auto Reference 选项后,Unity 不会在编译过程中自动引用该程序集。这不会影响 Unity 是否将文件包含在构建中。

        Assembly Definition References是用于添加当前程序集中所需要用到的其他程序集。如图,当前程序集需要使用到Addressables功能,我们则需要将Unity.Addressables程序集进行引用添加。

        更多参数介绍可以查看官方文档,链接在文章最后。

DLLSwitcher介绍

        最后给大家介绍一个很好用的插件,当我们项目中即有脚本又有程序集的时候,在添加组件的时候就涉及到是要添加脚本还是程序集的问题,DLLSwitcher则可以帮助你进行转换。

        首先我们可以在Unity Asset Store进行下载,下载之后进行一个导入。

        在菜单栏Window->DllSwitcher打开DLLSwitcher窗口,在Dll File项中选择程序集文件。然后就可以进行引用转换了。

参考文档连接:

程序集定义:https://docs.unity3d.com/cn/2022.2/Manual/ScriptCompilationAssemblyDefinitionFiles.html

DLLSwitcher插件:https://assetstore.unity.com/packages/tools/utilities/dllswitcher-40370

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

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

相关文章

Linux 驱动开发基础知识——内核对设备树的处理与使用(十)

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

【数据结构与算法】(5)基础数据结构之队列 链表实现、环形数组实现详细代码示例讲解

目录 2.4 队列1) 概述2) 链表实现3) 环形数组实现 2.4 队列 1) 概述 计算机科学中,queue 是以顺序的方式维护的一组数据集合,在一端添加数据,从另一端移除数据。习惯来说,添加的一端称为尾,移除的一端称为头&#xf…

安装配置Oracle 11g 、PLSQL及使用Navicat远程连接Oracle

目录 一、下载 二、安装 1.执行安装程序 2.配置安全更新 3.安装选项 4.系统类 5.网络安装选项 6.选择安装类型 7.选择产品语言 8.选择数据库版本 9.指定安装位置 10.选择配置类型 ​编辑11.指定数据库标识符 12.指定配置选项 13.电子邮箱 14.指定数据库存储…

自学Java的第十九天

一,每日收获 1.排序 2.冒泡排序法 3.查找 4.多维数组-二维数组 二,新名词与小技巧 三,今天学习中所遇到的困难 一,每日收获 1.排序 ① 排序的介绍 排序是将多个数据,依指定的顺序进行排列的过程。 ② 排序的…

学习c语言,动态内存管理

malloc和calloc区别在于初始化 realloc动态内存

前端如何预防CSRF

①阻⽌不明外域的访问: 同源检测 、Samesite Cookie ②提交时要求附加本域才能获取的信息: CSRF Token 、双重Cookie验证 1、同源检测 既然CSRF⼤多来⾃第三⽅⽹站,那么我们就直接禁⽌外域(或者不受信任的域名)…

网课:[CQOI2009]中位数图——牛客(疑问)

涉及知识点:已知中位数的题的一般思路 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。 输入描述: 第一行为两个正整数n和b ,第二行…

【从单张图像解锁深度信息】Depth Anything一种用于鲁棒单目深度估计的高度实用的解决方案

Depth Anything是一种用于鲁棒单目深度估计的高度实用的解决方案。 在不追求新颖的技术模块的情况下,我们的目标是建立一个简单而强大的基础模型,处理任何情况下的任何图像。 为此,我们通过设计数据引擎来收集并自动注释大规模未标记数据(~62M)来扩展数据集,这显着扩大了…

Axure详细介绍

1. 元件基本介绍 2. 基础元件的使用 3. 表单型元件的使用 4. 菜单与表格元件的使用 使用:如果想使用某个元件,我们只需要将它从元件库中拖入画布摆放即可。 - 对齐:默认情况下,两个矩形元件并排摆放,中间的边框为两…

web前端-------弹性盒子(2)

上一讲我们谈的是盒子的容器实行,今天我们来聊一聊弹性盒子的项目属性; *******************(1)顺序属性 order属性,用于定义容器中项目的出现顺序。 顺序属性值,为整数,可以为负数&#xff…

小周学JAVA—八股六

自动装箱和拆箱 Java中基础数据类型与它们对应的包装类见下表: 原始类型包装类型booleanBooleanbyteBytecharCharacterfloatFloatintIntegerlongLongshortShortdoubleDouble 装箱:将基础类型转化为包装类型。 拆箱:将包装类型转化为基础类…

c语言之逻辑运算符

逻辑运算符分别是“与”,“或”,“非” 表示与的是&& 表示或的是|| 表示非的是! 比如说有条件a和b,a&&b只有全是真时才是真,有一个是假,则为假。 a真,b真,a&&b为真 …

KMP 笔记

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配…

Django与MongoDB搭建高效的Web应用

Django,一个高级Python Web框架,以其优雅的设计和强大的功能而闻名,通常与关系型数据库如PostgreSQL, MySQL等结合使用。然而,随着NoSQL数据库的流行,MongoDB这种非关系型数据库因其高性能、高可用性和易扩展性而成为了…

Elasticsearch:集群故障排除和优化综合指南

Elasticsearch 是一个强大的搜索和分析引擎,是许多数据驱动应用程序和服务的核心。 它实时处理、分析和存储大量数据的能力使其成为当今快节奏的数字世界中不可或缺的工具。 然而,与任何复杂的系统一样,Elasticsearch 可能会遇到影响其性能和…

Container 命令ctr、crictl 命令

1、 Containerd和Docker的架构区别 Docker vs. Containerd: 2、ctr & crictl的区别 ctr是containerd的一个客户端工具 crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序 crictl 则直接对…

企业场景中权限认证的深度解析与实战

目录 引言 1. 认证流程的设计 2. RBAC 模型的应用 3. 实现认证与授权的代码示例 3.1 用户实体类 3.2 角色与权限定义 3.3 用户管理类 3.4 登录认证服务 3.5 RBAC权限管理 3.6 应用层示例 结语 引言 在当今数字化时代,企业应用程序不仅需要提供功能丰富的…

Maxwell查询databases表报错:You have an error in your SQL syntax;

报错信息:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near databases at line 1 报错说明: maxwell初始化后,在其数据库中会有一些表,…

pdf高亮显示

现在前端pdf需求越来越多,比如发票的显示,文件的显示,怎么实现具体步骤百度一下吧,这里不做详细介绍,主要记录下遇到的问题 1.页面pdf已经看到了,但是 iframe.contentWindow.PDFViewerApplication显示unde…

unittest、nosetest、pytest

参考:Choosing The Perfect Python Testing Framework: Unittest Vs. Pytest Vs. UnitTest vs Nose2 vs Pytest FeatureUnittest Pytest Nose2Test DiscoveryYesYesYesFixture SupportYesYesYesParameterizationNoYesYesPlugin EcosystemLimitedExtensiveLimite…