Dua*_*Dub 2 unity-game-engine unity5
我正在尝试将一个外部项目添加到我的统一解决方案中。使用mono开发可以正常工作,但是每当我切换回unity时,似乎都会从解决方案中删除引用。
有办法防止团结吗?
谢谢,
将外部项目引入 Unity 的最佳方法是...不直接使用外部项目。Unity 会定期重建解决方案文件,几乎就像一个临时文件。
您可以做的是将外部项目配置为库项目,并将该项目(或外部工具)配置为在 Assets 文件夹的任何子文件夹中输出生成的 DLL。
如果您的外部项目使用 Unity 类,则需要引用位于以下文件夹中的 UnityEngine.dll 和 UnityEditor.dll:
MyProject.sln每当从~/Assets文件夹中找到更改时,Unity都会重建(即删除现有文件并从头开始重新构建)文件。这样,您MyProject.sln每次或在Unity的自动过程之外进行的任何手动修改都将在每次Unity编译时被丢弃。
如@Kamalen所述,导入外部项目的通常方法是使外部项目成为库项目,从中构建* .dll,然后将* .dll文件放置在的某个位置~/Assets。如果下面有* .dll文件~/Assets,则可以从放在下面的任何代码中引用对库文件中定义的类和方法的引用~/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/...
Run Code Online (Sandbox Code Playgroud)
您当然ExternalProject可以成为git子模块,并将其维护为单独的git repo。然后,您可以ExternalProject从Untiy文件夹中的或原始位置进行更改ExternalProject,然后ExternalProject通过git的同步在Unity文件夹下进行同步。
根据经验,如果您知道库是完整的并且不太可能在库项目中进行更改(包括您无权访问其源代码的情况),则导入* .dll文件。当项目中存在* .dll文件时,通常会假定该库是完整的,不太可能更改,并且不在我们的控制范围之内,因此,它被称为外部项目。