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强制加载.或者你不小心误删了,也可以使用该选项重新根据配置加载包.

其实此操作是将其作为了一个嵌入包

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

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


5. 注意事项

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

  • Unity 的运行时限制

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

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

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

END

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何在 Ubuntu 上安装 Mattermost 团队协作工具

简介 Mattermost 是一个开源、自托管的通信平台,专为团队协作设计。它类似于 Slack,提供聊天、消息传递和集成功能。Mattermost 在重视数据隐私的组织中特别受欢迎,因为它允许团队在自己的服务器上管理通信。以下是 Mattermost 的一些关键特…

初识Linux—— 基本指令(上)

前言 Linux简述 ​ Linux是一种开源、自由、类UNIX的操作系统,由著名的芬兰程序员林纳斯托瓦兹(Linus Torvalds)于1991年首次发布。Linux的内核在GNU通用公共许可证(GPL)下发布,这意味着任何人都可以自由…

VBA技术资料MF223:从文件添加新模块

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

利用RAGflow和LM Studio建立食品法规问答系统

前言 食品企业在管理标准、法规,特别是食品原料、特殊食品法规时,难以通过速查法规得到准确的结果。随着AI技术的发展,互联网上出现很多AI知识库的解决方案。 经过一轮测试,找到问题抓手、打通业务底层逻辑、对齐行业颗粒度、沉…

路径规划——RRT*算法

路径规划——RRT*算法 算法原理 RRT Star 算法是一种渐近最优的路径规划算法,它是 RRT 算法的优化版本。RRT Star 算法通过不断地迭代和优化,最终可以得到一条从起点到目标点的最优路径。 在学习RRT Star 算法之前最好先学习一下RRT原始算法&#xff1…

Java——并发工具类库线程安全问题

摘要 本文探讨了Java并发工具类库中的线程安全问题,特别是ThreadLocal导致的用户信息错乱异常场景。文章通过一个Spring Boot Web应用程序示例,展示了在Tomcat线程池环境下,ThreadLocal如何因线程重用而导致异常,并讨论了其他并发…

网络编程套接字

前言: 认识了网络,我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。 套接字(Socket)是网络编程的一种基本概念,套接字是应用程序通过网络协议进行通信的接口,是操作系统提…

计算机网络:运输层 —— TCP 的拥塞控制

文章目录 TCP的拥塞控制拥塞控制的基本方法流量控制与拥塞控制的区别拥塞控制分类闭环拥塞控制算法 TCP的四种拥塞控制方法(算法)窗口慢开始门限慢开始算法拥塞避免算法快重传算法快恢复算法 TCP拥塞控制的流程TCP拥塞控制与网际层拥塞控制的关系 TCP的拥…

vue学习第8章(vue的购物车案例)

🎉🎉🎉欢迎来到我的博客,我是一名自学了2年半前端的大一学生,熟悉的技术是JavaScript与Vue.目前正在往全栈方向前进, 如果我的博客给您带来了帮助欢迎您关注我,我将会持续不断的更新文章!!!🙏🙏🙏 文章目录…

【SpringBoot】什么是Maven,以及如何配置国内源实现自动获取jar包

前言 🌟🌟本期讲解关于Maven的了解和如何进行国内源的配置~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 &#x1f3…

【Linux】:进程信号(详谈信号捕捉 OS 运行)

✨ 来去都是自由风,该相逢的人总会相逢 🌏 📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞…

七、利用CSS和多媒体美化页面的习题

题目一&#xff1a; 利用CSS技术&#xff0c;结合表格和列表&#xff0c;制作并美化 “ 翡翠阁 ”页面。运行效果如下 运行效果&#xff1a; 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>翡翠阁</title>&…

动态规划 —— 子数组系列-等差数列划分

1. 等差数列划分 题目链接&#xff1a; 413. 等差数列划分 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/arithmetic-slices/description/ 2. 算法原理 状态表示&#xff1a;以某一个位置为结尾或者以某一个位置为起点 dp[i]表示&#xff1a;以i位置为…

vue使用List.reduce实现统计

需要对集合的某些元素的值进行计算时&#xff0c;可以在计算属性中使用forEach方法 1.语法&#xff1a;集合.reduce ( ( 定义阶段性累加后的结果 , 定义遍历的每一项 ) > 定义每一项求和逻辑执行后的返回结果 , 定义起始值 ) 2、简单使用场景&#xff1a;例如下面…

TensorFlow 2.0 windows11 GPU 训练环境配置

前言 在一切开始之前&#xff0c;请确保你的cmd命令行和powershell命令行可以正常打开。如果不能&#xff0c;建议重装系统。我不确定这是否会影响你最终的结果&#xff0c;毕竟windows的坑太多了。 安装顺序&#xff1a;visual studio -> cuda -> cudnn -> python…

MyISAM和InnoDB介绍及切换存储引擎方法

MyISAM 和 InnoDB 都是 MySQL 数据库管理系统中常用的存储引擎&#xff08;Storage Engine&#xff09;。存储引擎决定了数据库如何存储、读取、更新数据以及如何管理事务、锁定等操作。 1. MyISAM 存储引擎 MyISAM 是 MySQL 的默认存储引擎之一&#xff0c;尤其是在早期版本…

什么是嵌入式?

目录 一、什么是嵌入式 二、嵌入式系统的特点 &#xff08;一&#xff09;专用性与隐蔽性 &#xff08;二&#xff09;高可靠性与实时性 &#xff08;三&#xff09;资源固定与小型化 三、嵌入式系统的发展历史 &#xff08;一&#xff09;20 世纪 60 年代早期雏形 &am…

在几分钟内将数据从 Oracle 迁移到 ClickHouse

ClickHouse 是一个开源的面向列的数据库管理系统。它在实时数据处理方面的出色性能显着增强了数据分析和业务洞察力。将数据从 Oracle 迁移到 ClickHouse 可以释放数据在决策中的力量&#xff0c;这是单独使用 Oracle 无法实现的。 本教程介绍如何使用 BladePipe 将数据从 Orac…

Linux网络:HTTPS协议

Linux网络&#xff1a;HTTPS协议 加密方式对称加密非对称加密混合加密中间人攻击 证书数据签名CA认证 HTTPSSSL/TSLHTTPS 在HTTP协议中&#xff0c;所有的数据都采用明文的形式传输&#xff0c;这就会导致数据非常容易泄露&#xff0c;只要拿到HTTP报文&#xff0c;就可以窃取各…

(计算机毕设)基于springboot免税商品购物商城的设计与实现

博主可接毕设设计&#xff01;&#xff01;&#xff01; 各种毕业设计源码只要是你有的题目我这里都有源码 基于springboot免税商品购物商城的设计与实现 摘 要 Abstract 第一章 绪论 1.1 课题开发的背景 1.2 课题研究的意义 1.3 研究内容 第二章 系统开发关键技术…