Nuget For Unity插件介绍

NuGet for Unity:提升 Unity 开发效率的利器

        NuGet 是 .NET 开发生态中不可或缺的包管理工具,你可以将其理解为Unity的Assets Store或者UPM,里面有很多库可以帮助我们提高开发效率。当你想使用一个库,恰好这个库没什么依赖(比如newtonjson),那么下载包并找到Dll直接放到Plugins下就可以使用了,但如果你想使用的这个库有很多依赖(如Epplus),并且依赖还有依赖,这个时候你就麻了,这可咋整?这时候 NuGet for Unity,一个能让 Unity 项目轻松引入和管理第三方库的插件便闪亮登场了!!!

        在本文中,我将从 是什么为什么需要它 和 如何使用 这三个方面,带你快速了解和上手 NuGet for Unity。


1. 什么是 NuGet?

NuGet 是 .NET 开发中的包管理工具,类似于 Unity 中的 Package Manager,但适用于整个 .NET 生态。通过 NuGet,开发者可以轻松获取第三方库及其依赖,而无需手动下载和管理 DLL 文件。但这是对于.net环境而言的,Unity没办法直接集成.


2. 什么是 NuGet for Unity?

NuGet for Unity 是一个开源的 Unity 插件,允许开发者在 Unity 项目中使用 NuGet 包。它能够帮助开发者:

  • 快速引入 .NET 第三方库,例如 JSON.NET、NPOI 等。
  • 自动管理包的依赖和版本,无需手动下载和配置 DLL 文件。
  • 与 Unity 项目无缝集成,简化了外部库的使用流程。

换句话说,它是 Unity 世界中的一个“桥梁”,连接了 .NET 的 NuGet 生态。


3. 为什么需要 NuGet for Unity?

在 Unity 项目中管理外部依赖是一项繁琐且容易出错的工作。传统方式需要你:

  1. 手动下载第三方库的 DLL 文件。
  2. 确保所有依赖项都完整且版本一致。
  3. 在 Unity 中手动导入并配置。

这不仅耗时,而且随着项目规模的扩大,管理起来会越来越复杂。

而通过 NuGet for Unity,开发者可以轻松实现:

  • 自动化依赖管理:它会根据配置文件自动下载并安装所有依赖。
  • 节省时间:只需简单操作即可引入复杂的第三方库。
  • 保持版本一致:团队协作时,只需提交依赖配置文件,同事的环境会自动同步。

适用场景

  • 引入常见的 .NET 库,如 JSON 解析器、日志工具等。
  • 使用复杂的第三方库(如 Excel 读写库 Epplus),避免处理繁琐的依赖。
  • 在多人协作中确保所有成员使用相同的库版本。


4. 如何使用 NuGet for Unity?

接下来,我们将通过实际操作,快速上手 NuGet for Unity。

4.1 安装 NuGet for Unity

GitHub - GlitchEnzo/NuGetForUnity: A NuGet Package Manager for Unity

导入项目即可


4.2 基本使用方法

注意这里展示的是Nuget官网服务器中的包,也就是说插件默认使用官网服务中的数据源.在偏好中可以修改数据源,在偏好界面的Package Sources中添加你的私有服务器地址.

在Online界面,需要什么包就搜什么包,比如我想使用Epplus.

第一个就是我需要的,点击Install,版本是7.5.0.

然后就下载下来了:

        默认是放在Packages下,为什么有这么多包被下载下来?其实这些包可以分成两类:显示包和隐式包.我刚才下载的Epplus就是我需要的,即为显示包,但是这个包依赖其他包,这些其他包就是隐式包.注意:最下面两个文件:Nuget和packages不要删除,这是两个配置文件.

Nuget是你对本插件的配置.

打开Preference,

我们可以在这里操作本插件的一些基本配置.

packages是你下载的包的配置.

        目前感觉有点丑陋,首先在Assets中有了很多包,这导致我们的Assets有些乱,并且git还要配置对该目录的忽略项.所以我们这样

将Placement配置为:InPackages Folder.

这样就跑到了Packages下,一下子就清爽多了,但是目前还有一个问题,git应该忽略该目录.

git没必要管理这些,只需要管理packages配置文件就好了.所以

加上

/[Pp]ackages/nuget-packages/InstalledPackages
/[Pp]ackages/nuget-packages/InstalledPackages.meta

忽略就好了.

理论上别人拉取的时候会自动下载这些包

但是如果没有拿到

使用Restore Packages强制加载.或者你不小心误删了,也可以使用该选项重新根据配置加载包.

其实将Placement配置为:InPackages Folder操作是将其作为了一个嵌入包

选择第三个选项可以查看依赖树:即你的显式包依赖那些隐式包.

安装界面下可以查看你已经安装的包,同时可以点击卸载.


5. 注意事项

虽然 NuGet for Unity 提供了很多便利,但在使用时仍需注意以下几点:

  • Unity 的运行时限制

    • Unity 使用的是 Mono 运行时,与标准 .NET 运行时有一些差异。
    • 某些依赖包可能无法直接使用,需要手动调整。
  • 依赖冲突

    • 如果多个 NuGet 包依赖于不同版本的同一库,可能会导致冲突。
    • 可以在 Unity 的 Player Settings → Other Settings 中禁用 Assembly Version Validation 来绕过此问题

        最后还有一些高级内容不做说明:比如创建自己的包服务器,创建自己的包等,感兴趣在官网自行查看详细信息.

END

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

“乐鑫组件注册表”简介

当启动一个新的开发项目时,开发者们通常会利用库和驱动程序等现有的代码资源。这种做法不仅节省时间,还简化了项目的维护工作。本文将深入探讨乐鑫组件注册表的概念及其核心理念,旨在指导您高效地使用和贡献组件。 概念解析 ESP-IDF 的架构…

药房革新:Spring Boot中药实验管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

嵌入式 UI 开发的开源项目推荐

嵌入式开发 UI 难吗?你的痛点我懂!作为嵌入式开发者,你是否也有以下困扰?设备资源太少,功能和美观只能二选一?调试效率低,每次调整都要反复烧录和测试?开发周期太长,让你…

CTF--php伪协议结合Base64绕过

Base64绕过 在ctf中,base64是比较常见的编码方式,在做题的时候发现自己对于base64的编码和解码规则不是很了解,并且恰好碰到了类似的题目,在翻阅了大佬的文章后记录一下,对于base64编码的学习和一个工具 base64编码是…

基于Java Springboot电影播放平台

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

国标GB28181摄像机接入EasyGBS国标GB28181设备管理软件:GB28181-2022媒体传输协议解析

随着信息技术的飞速发展,视频监控领域正经历从传统安防向智能化、网络化安防的深刻转变。在这一转变过程中,国标GB28181设备管理软件EasyGBS成为了这场技术变革的重要一环。 GB28181-2022媒体传输协议 媒体传输命令包括实时视音频点播、历史视音频回放/…

Redis-monitor安装与配置

0、前言 压测环境因为隔离原因没法直接查看redis日志跟性能指数,只能通过监控工具查看,使用开源redis-montor监控查看 开源地址: GitCode - 全球开发者的开源社区,开源代码托管平台 1、python环境准备(python -v有的忽略&#xff…

windows basic语言学习笔记,批处理命令的简单使用

BAT学习笔记 前言 Windows 命令行中对参数的大小写不敏感,因此 /D 和 /d 的效果完全一致。 1. 代码1:创建目录并复制文件 源代码: echo off REM 创建目标目录,如果不存在 if not exist "C:\h2" (mkdir "C:\h2&q…

5-对象的访问权限

对象的访问权限知识点 对象的分类 在数据库中,数据库的表、索引、视图、缺省值、规则、触发器等等、都可以被称为数据库对象,其中对象主要分为两类 1、模式(schema)对象:模式对象可以理解为一个存储目录、包含视图、索引、数据类型、函数和…

Java Database Connectivity (JDBC + Servlet)

Java Database Connectivity (JDBC)是一个Java API,用于与数据库进行连接和操作。通过JDBC,Java程序可以与各种关系型数据库进行通信,执行SQL查询、更新数据等操作。 一、Java连接数据库两种方式 ​​​​​ ​​ 二、Java中…

[Realtek sdk-3.4.14b] RTL8197FH-VG新增jffs2分区操作说明

sdk说明 ** Gateway/AP firmware v3.4.14b – Aug 26, 2019**  Wireless LAN driver changes as:  Refine WiFi Stability and Performance  Add 8812F MU-MIMO  Add 97G/8812F multiple mac-clone  Add 97G 2T3R antenna diversity  Fix 97G/8812F/8814B MP issu…

鸿蒙多线程开发——线程间数据通信对象01

1、线程间通信 线程间通信指的是并发多线程间存在的数据交换行为。由于ArkTS语言兼容TS/JS,其运行时的实现与其它所有的JS引擎一样,都是基于Actor内存隔离的并发模型提供并发能力。 对于不同的数据对象,在ArkTS线程间通信的行为是有差异的&…

基于单片机的多功能跑步机控制系统

本设计基于单片机的一种多功能跑步机控制系统。该系统以STM32单片机为主控制器,由七个电路模块组成,分别是:单片机模块、电机控制模块、心率检测模块、音乐播放模块、液晶显示模块、语音控制模块、电源模块。其中,单片机模块是整个…

测试工程师如何在面试中脱颖而出

目录 1.平时工作中是怎么去测的? 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测? 4.你为什么能够做测试这一行?(根据个人情况分析理解) 5.你认为测试的目的是什么? 6.软件测试的流程&#xff…

PHM技术:基于支持向量机的智能故障诊断 | 行星齿轮箱智能故障诊断

目录 1.数据获取 2.特征提取与选择 3.健康状态识别 1.数据获取 用的行星齿轮箱数据采集自图1中的多级齿轮传动系统实验台中,在实验过程中,分别模拟了8种行星齿轮箱的健康状态,包括正常、第一级太阳轮点蚀、第一级太阳轮齿根裂纹、第一级…

【划分型 DP-约束划分个数】【hard】【阿里笔试】力扣1278. 分割回文串 III

给你一个由小写字母组成的字符串 s,和一个整数 k。 请你按下面的要求分割字符串: 首先,你可以将 s 中的部分字符修改为其他的小写英文字母。 接着,你需要把 s 分割成 k 个非空且不相交的子串,并且每个子串都是回文串…

国标GB28181视频平台EasyCVR视频融合平台H.265/H.264转码业务流程

在当今数字化、网络化的视频监控领域,大中型项目对于视频监控管理平台的需求日益增长,特别是在跨区域、多设备、高并发的复杂环境中。EasyCVR视频监控汇聚管理平台正是为了满足这些需求而设计的,它不仅提供了全面的管理功能,还支持…

相机触发模式

参考自:相机触发模式_硬触发和软触发的区别-CSDN博客 一、图像采集模式分类 相机的图像采集模式分为内触发模式与外触发模式。其中内触发模式包含连续采集、单帧采集两种形式;外触发模式包含软件外触发、硬件外触发。本文以海康相机的软件平台作介绍&a…

【数据结构】【线性表】【练习】反转链表

申明 该题源自力扣题库19&#xff0c;文章内容&#xff08;代码&#xff0c;图表等&#xff09;均原创&#xff0c;侵删&#xff01; 题目 给你单链表的头指针head以及两个整数left和right&#xff0c;其中left<right&#xff0c;请你反转从位置left到right的链表节点&…

Applied Intelligence投稿

一、关于手稿格式&#xff1a; 1、该期刊是一个二区的&#xff0c;模板使用Springer nature格式&#xff0c; 期刊投稿要求&#xff0c;详细期刊投稿指南&#xff0c;大部分按Soringernature模板即可&#xff0c;图片表格声明参考文献命名要求需注意。 2、参考文献&#xff…