【发布时间】:2017-07-27 15:17:03
【问题描述】:
我正在尝试将一个外部项目添加到我的统一解决方案中。 使用单声道开发可以正常工作,但每当我切换回统一时,它似乎会从解决方案中删除引用。
有没有办法阻止团结这样做?
谢谢,
【问题讨论】:
我正在尝试将一个外部项目添加到我的统一解决方案中。 使用单声道开发可以正常工作,但每当我切换回统一时,它似乎会从解决方案中删除引用。
有没有办法阻止团结这样做?
谢谢,
【问题讨论】:
Unity 重建(即,删除现有文件并从头开始重新构建)MyProject.sln 文件,只要它从 ~/Assets 文件夹中找到更改。因此,每次 Unity 编译时,您或在 Unity 的自动化进程之外对 MyProject.sln 所做的任何手动修改都将被丢弃。
正如@Kamalen 提到的,导入external 项目的常用方法是让外部项目成为库项目,从中构建*.dll,然后将*.dll 文件放在下面的某个位置~/Assets。当~/Assets 下有*.dll 文件时,您可以从~/Assets 下的任何代码中引用库文件中定义的类和方法。
但是,您似乎可以访问源代码,并且倾向于经常从您的评论中修改外部项目。
在这种情况下,您可以考虑将外部项目的源代码放在~/Assets 下。文件夹结构如下所示:
MyProject/
MyProject/MyProject.sln // this is rebuilt again each time by Unity
MyProject/Assets/
MyProject/Assets/ExternalProject/... // This could be a git submodule
MyProject/Assets/scripts/...
您当然可以让ExternalProject 成为一个 git 子模块,并将其作为一个单独的 git 存储库进行维护。然后,您可以从 Untiy 文件夹中更改 ExternalProject,或者更改 ExternalProject 的原始位置,然后从 git 拉取 Unity 文件夹下的 ExternalProject。
根据经验,如果您知道库是完整的并且库项目不太可能发生更改(包括您无权访问其源代码的情况),请导入 *.dll 文件。当项目中存在 *.dll 文件时,通常会假设该库是完整的、不太可能更改且不受我们控制,因此它被称为 external项目。
【讨论】:
将外部项目引入 Unity 的最佳方式是……不要直接拥有外部项目。 Unity 会定期重建解决方案文件,几乎就像一个临时文件。
您可以做的是将您的外部项目配置为库项目,并将该项目(或外部工具)配置为在 Assets 文件夹的任何子文件夹中输出生成的 DLL。
如果您的外部项目使用 Unity 类,则需要引用位于文件夹中的 UnityEngine.dll 和 UnityEditor.dll:
【讨论】: