将外部项目添加到统一解决方案

时间:2017-07-27 15:17:04

标签: unity3d unity5

我正在尝试将一个外部项目添加到我的统一解决方案中。 它使用单声道开发工作正常,但每当我切换回统一时,它似乎从解决方案中删除了引用。

有没有办法防止团结这样做?

谢谢,

2 个答案:

答案 0 :(得分:5)

每当从MyProject.sln文件夹中发现更改时,Unity都会重建(即,从头开始删除现有文件并再次构建它)~/Assets文件。因此,每次Unity编译时,您在MyProject.sln上的Unity自动化过程之外所做的任何手动修改都将被丢弃。

正如@Kamalen所提到的,导入外部项目的常用方法是将外部项目作为库项目,从中构建* .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 repo维护。然后,您可以从Untiy文件夹中的ExternalProjectExternalProject的原始位置进行更改,然后使用git中的pull来同步Unity文件夹下的ExternalProject

根据经验,如果您知道库已完成并且库项目中不太可能有更改,则导入* .dll文件,其中包括您无权访问其源代码的情况。当项目中存在* .dll文件时,通常假设库是完整的,不太可能改变,并且在我们的控制范围之外,因此它被称为 外部 项目

答案 1 :(得分:0)

将外部项目引入Unity的最佳方法是......不直接拥有外部项目。 Unity会定期重建解决方案文件,几乎就像一个临时文件。

您可以做的是将外部项目配置为库项目,并配置项目(或外部工具)以在Assets文件夹的任何子文件夹中输出生成的DLL。

如果您的外部项目使用Unity类,则需要引用位于文件夹中的UnityEngine.dll和UnityEditor.dll:

  • Applications / Unity.app / Contents / Frameworks / Managed / UnityEngine.dll for Mac
  • 程序文件\ Unity \ Editor \ Data \ Managed \ UnityEngine.dll for Windows