问题:我必须在Unity中的多个项目之间共享一些代码。在项目工作期间,此代码不断变化。所以我需要将我的代码作为单独的程序集共享,并包含在Visual Studio 2015中的每个Unity灵魂中。
问题:在公共程序集中进行更改的方式是什么,以便为其他项目和Unity编辑器自动更新?
答案 0 :(得分:1)
您的解决方案位于具有版本控制的子模块中。你有一个主要项目的回购。然后你有一个文件夹是另一个回购。这是一个子模块。它在您的主仓库中显示为灰色,并且不会进入提交。
https://git-scm.com/book/en/v2/Git-Tools-Submodules
它适用于其他版本控制系统。
该模式的关键在于您使用实用程序子模块处理项目A. utility是Assets文件夹中的文件夹。然后修改Utility.cs并将其推送到Utility repo。
项目B正在使用实用程序子模块并进行拉动,您的修改不会改变项目B的其余部分。显然,这包括版本控制提供的所有麻烦,即如果项目B处理实用程序的冲突如果你改变实用程序的实现等等,可能会中断其他项目(尽管如此)。
另一方面,这是一种通过独立项目传递公共代码的简便方法。
答案 1 :(得分:0)
让我说我的共享项目在这里:c:\ UnityProjects \ DesignPatterns \ 并且需要在我的Unity项目中包含:c:\ UnityProjects \ Game \
解决方案:
我们不想将最近构建的程序集复制到此目录中,我们希望自动进行。 Visual Studio post-build事件命令行可以帮助解决这个问题。右键单击CSharp项目并选择属性,然后转到Build Events选项卡并将以下行添加到post-build event命令行中:
xcopy $(ProjectDir).. \ DesignPatterns \ bin \ $(ConfigurationName)\ DesignPatterns.dll" " $(PROJECTDIR)\资产\ ExternalDLLs \ DesignPatterns.dll" / Y
现在每次我们进行解决方案构建时,此命令都会将我们的dll从共享项目的输出文件夹复制到我们项目的资产文件夹中。
请注意:必须在构建统一代码程序集之前构建共享项目。当你总是进行解决方案构建时就是这种情况。在其他情况下,请考虑从Unity临时目录中复制程序集(您可以选择此文件夹的宏)。