【问题标题】:How to reference external DLLs in your Unity project without committing them into the repository?如何在 Unity 项目中引用外部 DLL 而不将它们提交到存储库中?
【发布时间】:2020-10-05 05:42:06
【问题描述】:

我正在使用最新版本的 Unity:2019.3.14f1

在我的项目中,我需要引用一个外部 DLL。按照手册中建议的程序,我基本上已将 DLL 添加为我的资产的一部分。 Unity 会自动更新 C# 项目引用以包含该 DLL,因此最终一切正常。

问题

但是,现在我需要将该 DLL 作为我的更改的一部分包含在我的存储库中。所以我需要提交它。

myproj
|--Scenes/
|--Assets/
   |--MyAssembly.dll

但这并不是最好的做法。有没有办法避免这种情况? Unity 可以与 NuGet 或 NPM 等包管理器交互吗? Visual Studio 允许使用 NuGet 包,有没有办法告诉 Unity 创建一个引用特定 NuGet 包集的 C# 项目?

【问题讨论】:

  • But that is not really the best thing to do. 为什么不呢?
  • 作为替代方案,您可能对 Unity 的 PackageManager 的 Creating a Custom Package 感兴趣,并在包清单中添加指向它的链接。这仍然需要您在某个地方提供该包,以便 repo 的克隆者可以通过它访问它;)
  • 请注意,最新版本是 2019.4 LTS,上周终于发布了 ;) 实际上你的问题 Can Unity interface with a package manager such as NuGet or NPM? 是的,这实际上是 PackageManager 的用途
  • @derHugo 您提出的解决方案听起来确实很不错。请发表答案
  • @derHugo,由于您的解决方案有助于 Andry 处理此问题,我建议您可以添加有关您的解决方案的答案,这将营造良好的社区氛围。谢谢:)

标签: visual-studio unity3d package nuget


【解决方案1】:

Unity 能否与 NuGet 或 NPM 等包管理器交互?

是的! 这正是 Unity 的 Package Manager 的用途。

基本上当你创建你的项目时你会发现自动生成的

YOURPROJECT/Packages/manifest.json

在哪里可以找到项目依赖项,例如

"com.unity.modules.physics": "1.0.0"

引用他们的 NPM 服务器。


Package Manager 的链接 API 当然更详细,解释也更好,因此即使您不使用自定义包,也值得通读一遍。总体上了解 PackageManager 的工作原理以及为什么在不同版本之间升级时有时会出现如此多的错误,对了解它很有帮助^^


但简而言之:您也可以使用它来托管并添加自己的 Custom Packages 作为依赖项!

包有两种形式:

  • Embedded Package

    →放在YOURPROJECT/Packages/YOURPACKAGE

  • Local Package

    →可以是本地驱动器上的任何位置,甚至可以是 Internet 中的 URL(到 Git 存储库)

您的情况听起来像是您想选择后者。包必须满足某些规则,因此请务必按照给定的链接阅读它们;)

然后您按照文档中的这些步骤进行操作

如果您想在项目文件夹之外创建自定义包,请按照以下说明操作:

  • 使用您计算机的文件管理器(例如 Windows 文件资源管理器或 macOS Finder),为您的包创建一个文件夹。

  • 如果您已经为您的包创建了一些内容,您也可以使用现有位置。

  • 确保文件夹结构的布局遵循 Unity 包的包布局约定。例如,如果您有 Editor 和 Runtime 库,请确保它们存储在 Editor 和 Runtime 文件夹下。

  • 打开您喜欢的文本编辑器并创建一个名为 package.json 的 JSON 文件。

  • 保存在包根目录下。

  • 填写软件包清单 (package.json) 文件中的所有必填和必填字段。

  • 在 Unity 中,创建新项目或打开现有项目。

  • 打开“包”窗口并按照说明安装本地包,使用您刚刚创建的 package.json 文件。

新包出现在包管理器窗口和项目窗口中,您可以在其中查看和修改包内容。如果在 Project 窗口中选择 package.json 文件,也可以直接在 Inspector 窗口中修改其内容。

所以你的依赖可以然后例如看起来像

"dependencies": {
    ...
    "my_local_package": "file:C:/Users/johndoe/Packages/my_local_package"
}

或者也使用相对路径

"dependencies": {
    ...
    "my_local_package": "file:../Packages/my_local_package"
}

甚至是 git repo 的外部 URL

"dependencies": {
    ...
    "my_local_package": "https://someGitHost/projectrepo.git"
}

我还找到了this tutorial,它一步一步地解释得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2021-02-11
    • 2020-04-07
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    相关资源
    最近更新 更多