Projeny
来源:互联网 发布:编程之美 mobi 编辑:程序博客网 时间:2024/06/06 03:44
简介
Projeny的目的是允许您的Unity3D项目轻松扩展,而不会对开发时间造成严重影响。
Projeny允许您:
- 在多个不同的Unity项目中共享任何Unity Asset(代码,Scenes,Prefabs等),而无需复制和粘贴
- 在平台之间切换
- 轻松升级或下载安装的Asset Store Package
- 通过让Unity只重新编译最经常更改的代码来优化项目的编译时间
- 将您的项目拆分成独立的软件包,以便您可以管理每个项目之间的依赖关系,而不是拥有一个巨大的Unity项目的相互关联的文件
- 声明软件包之间的依赖关系,以便您随时获取所需的软件包,而无需追踪丢失的库或断开的链接
- 生成比Unity默认更智能的Visual Studio解决方案,使用包依赖关系创建csproj依赖关系
有关Projeny如何实现所有这些功能的详细信息,请参见下文。
这个项目是开源的。如果你有兴趣帮助,太棒了!还有一些我们最终支持的功能(特别是我们需要帮助支持OSX)。
注意:Projeny需要Unity3D 5.3.1或更高版本,因为它使用-buildTarget命令行开关仅在5.3.1中被修复
安装
你可以直接从source运行Projeny(需要python)或者直接下载最新的二进制文件。请注意,Projeny目前仅在Windows上受支持(计划在未来版本中使用OSX版本)。
从二进制
- 转到[releases](https://github.com/modesttree/projeny/releases)部分,并下载最新的ProjenyInstaller.exe
- 请注意,安装完成后,您需要将[安装目录] / Bin目录添加到Windows PATH(环境变量)。
从源头
- 将此repo复制到硬盘上的某个地方
- 确保安装了python 3.x,并且还安装了以下内容:
- pyyaml(安装运行
pip install pyyaml
) - python的Windows扩展(下载[这里](https://sourceforge.net/projects/pywin32/)为您的版本的python)
- pyyaml(安装运行
- 在Visual Studio中打开UnityPlugin / Projeny.sln
- 建立发布模式
- 将Projeny / Source / bin文件夹添加到Windows PATH(环境变量)
概述
Projeny通过组合您的Unity3D项目完全脱离’目录链接’(又名Windows连接名称符号链接)。
这最好用一个例子来展示。安装Projeny后,从发布页面下载[示例项目](https://github.com/modesttree/projeny/releases),并将其解压缩到硬盘驱动器上的新文件夹。文件夹结构应如下所示:
- Projeny.yaml
- UnityPackages
- AllMovers
- CommonShapeMover
- CubeMover
- SphereMover
- UnityProjects
- ProjenyProject.yaml
- AllMovers
- ProjenyProject.yaml
- ProjectSettings
- CubeMover
- ProjenyProject.yaml
- ProjectSettings
- SphereMover
- ProjenyProject.yaml
- ProjectSettings
“UnityProjects”目录中的每个文件夹都代表了一个实际的Unity3D项目。请注意,它们各自具有密切的“ProjectSettings”目录,但它们还没有“Assets”目录。这是因为Projeny尚未初始化这些项目。您还会在文件夹结构的根目录中看到一个名为“Projeny.yaml”的文件。这是一个简单的文本文件,用于指定Projeny的配置设置。
要初始化这些Unity项目,我们必须从命令行运行Projeny。打开命令提示符或powershell并导航到根目录(找到Projeny.yaml
的相同目录)。然后执行prj --init
。如果没有找到prj命令,请检查它是否已添加到Windows PATH变量中,如安装说明所述。所有这些命令都是初始化这些项目的一些目录链接。
如果我们再次查看我们的项目文件夹,我们看到一些新的文件夹似乎已被添加。我们特别来看看“CubeMover”项目:
- UnityProjects
- CubeMover
- ProjectSettings
- CubeMover-Windows
- Assets
- CubeMover
- Plugins
- CommonShapeMover
- Projeny
- ProjectSettings
- Assets
- CubeMover
“CubeMover-Windows”文件夹是新的,现在有一个熟悉的“Assets”目录。它还包含一堆文件夹,如“CubeMover”,“CommonShapeMover”等。
要实际运行我们的项目,请打开Unity中的“CubeMover-Windows”文件夹,然后在“CubeMover / CubeMain”中打开场景。运行后,您应该看到立方体在改变颜色的同时移动。
那么所有这些文件来自哪里?答案是“目录链接”(又称Windows连接名称符号链接)。所有这些新的文件夹本身不是真正的文件夹,而是简单地链接到其他地方的现有文件夹。
实际上,如果您使用源代码控制,则应将整个“CubeMover-Windows”目录从其中排除(通过使用.gitignore
文件,.svnignore
,.p4ignore
或任何忽略方法适用到您使用的源代码控制)。如果您使用subversion或git,则在初始化项目时会自动发生这种情况(否则,您必须确保自己添加忽略文件)。
我们这样做是因为“CubeMover-Windows”文件夹的内容本身不包含任何真实的内容。它只包含由Unity生成的临时文件(例如Library文件夹)和目录链接到实际包含内容的其他目录。
包含实际内容的目录可以在“UnityPackages”目录中找到。在这里您可以找到我们看到的“CubeMover”和“CommonShapeMover”文件夹链接到assets目录下面。
但是Projeny如何知道哪些软件包用于“CubeMover”项目?为此,它从配置文本文件读取,可以在CubeMover / ProjenyProject.yaml
找到。有关此文件的详细信息,请参见下面的其他部分。该文件可以手动更改,但大部分时间您可以使用Projeny的内置Unity插件来操作此文件。您可以通过在Unity中打开“CubeMover”项目,然后单击菜单项“Projeny - > Package Manager …”来尝试这个。以下部分将对此窗口进行更详细的说明。
管理 Asset Store Assets
这是“发布”的列表。 “释放”是指外部资产集合,通常具有关联的版本号。在大多数情况下,这些是指您通过资产存储下载的项目,但也可以从其他来源(如硬盘驱动器或远程文件服务器上的本地文件夹)检索。
使用多个包文件夹
到目前为止,我们假设所有包含在您的团结项目中的包都有一个确定的文件夹。但是,这是可配置的,因此,如果需要,您可以定义多个位置来从中抽取包。如果要定义特定于项目的程序包,并且不想在共享的“UnityPackages”目录中添加混乱,这可能尤其有用。
要查看此操作,请下载示例项目,然后打开“All-Movers”项目(通过在Unity中打开“UnityProjects \ AllMovers \ AllMovers-Windows”目录或运行prj --project AllMovers --openUnity
/prj -p am -ou
从命令行)
然后通过菜单项“Projeny - >Package Manager”打开Package Manager。在“Packages”面板中,您将看到一个下拉列表,您可以从屏幕截图中所示的位置选择从哪里获取软件包列表:
选择下拉列表并选择[ProjectRoot] \ Packages
选项。默认情况下会显示一个空的列表。右键单击列表中的New Package
,然后输入“Test”。您应该看到以下内容:
现在,在列表中再次右键单击并选择Show Root Folder In Explorer
。这将打开UnityProjects / AllMovers / Packages
的目录。
在该下拉列表中显示的包文件夹位置列表按每个项目进行配置,可在ProjenyProject.yaml
文件中找到。示例项目设置有两个位置。一个用于通用的UnityPackages
文件夹,一个用于每个项目的根文件夹下面。
要查看这个设置,请在UnityProjects / ProjenyProject.yaml
打开文件ProjenyProject.yaml
。除了UnityProjects / AllMovers / ProjenyProject.yaml
内的设置之外,此文件中的设置将自动应用于所有项目。该文件应显示如下:
PackageFolders: - '[SharedUnityPackagesDir]' - '[ProjectRoot]/Packages'
此列表应包含与在Package Manager GUI中的下拉列表中显示的值相同的值。
共享项目设置
除了在团队项目之间共享软件包,您还可以共享项目设置。项目设置包括您在Unity内的 Edit -> Project Settings
中打开任何菜单项时看到的所有值。如果要创建具有稍微不同的程序包集合的项目的副本,这将非常有用。
要查看此操作,请下载示例项目,然后打开“All-Movers”项目(通过在Unity中打开“UnityProjects \ AllMovers \ AllMovers-Windows”目录或运行prj --project AllMovers --openUnity
/prj -p am -ou
从命令行)
然后,选择菜单项目Projeny -> Change Project -> New
。这应该显示以下弹出窗口:
确保勾选”Share Project Settings”复选框,默认情况下未选中。给它名字Test
。
单击提交后,您的新项目应该被初始化,然后在Unity中打开。现在,如果从Edit -> Project Settings
菜单更改项目设置,它将同时适用于“AllMovers”和新创建的“Test”项目。
像所有的项目设置一样,这是在ProjenyProject.yaml文件中配置的。如果您打开它,可以通过点击包管理器中的“Edit”按钮,或者打开“UnityProjects / Test / ProjenyProject.yaml”,您应该看到以下内容:
ProjectSettingsPath: '[ProjectRoot]/../AllMovers/ProjectSettings'
请注意,由于我们尚未将任何包添加到我们的新项目中,“AssetsFolder”和“PluginsFolder”还没有一行。
“Gotchas”与目录链接
直接在Unity内移动包文件夹
- 您可以使用Unity的“项目”选项卡在Unity内部移动文件和目录,但是您应该小心不要自己移动任何包目录。否则,您可能会在下次获得projeny来更新您的目录链接时最终得到重复的文件。
复制和粘贴项目不起作用
- 如果将整个目录结构复制并粘贴到硬盘驱动器上的其他位置,目录链接将成为新位置的空文件夹。为了解决这个问题,在复制和粘贴文件之后,在新的位置运行
prj -cla --init
。所有这些都清除所有生成的文件(-cla
),然后初始化所有项目的所有目录链接(--init
)。
- 如果将整个目录结构复制并粘贴到硬盘驱动器上的其他位置,目录链接将成为新位置的空文件夹。为了解决这个问题,在复制和粘贴文件之后,在新的位置运行
如果您使用git进行源代码控制,则在使用
git clean
时应该小心- 运行
git clean -df
应该按预期工作,但是如果你运行git clean -xdf
,你可能会丢失一些数据。这是因为git clean
跟随目录链接。所以如果它尝试删除您的UnityProjects
目录下的生成的文件,这也将删除UnityPackages
目录中的一些文件。运行git clean -df
将不会有这个问题,因为你的UnityProjects
文件夹应该被git忽略,而git clean
只会删除被忽略的文件,如果你也提供-x
选项。如果您需要包含-x
选项,那么我们建议先运行prj -cla
,这将确保所有生成的文件首先被清除。
- 运行
与使用
git clean
时不同,使用Windows资源管理器删除文件夹是安全的。- 如果您在使用Windows资源管理器时删除您的“UnityProjects”目录下的不同的统一项目,则不应删除“UnityPackages”中的任何文件(与使用
git clean
时不同)。这是因为当Windows资源管理器遇到目录链接时,它只是删除引用而不是递归。
- 如果您在使用Windows资源管理器时删除您的“UnityProjects”目录下的不同的统一项目,则不应删除“UnityPackages”中的任何文件(与使用
首次打开您的项目(或添加新包后)Unity将显示以下警告
…
[Asset]是一个象征性的链接。在Unity项目中使用符号链接可能会导致您的项目损坏,如果您创建对同一资产的多个引用,使用递归符号链接或使用符号链接在与不同版本的Unity使用的项目之间共享资产。确保你知道你在做什么
…但是,我们没有做任何Unity警告的事情,所以这个警告可以忽略。
自定义发布源
在上述部分中提到的A,发行版列表通常只是您的Asset Store购买清单,但它也支持其他来源。
每个来源最终只是Unity包的集合。这也是Unity在Asset Store缓存中存储的,所以即使在这种情况下,它只是一个Unity包的列表。
例如,要添加新的本地文件夹源,请打开一个Projeny配置文件(Projeny.yaml
),并包括以下内容:
ReleaseSources: - LocalFolder: Path: 'C:/MyLocalFolderSource'
您可能想要放置的一个方便的地方是Projeny配置系统,可以在您的用户主目录“C:/ Users / [您的用户名] / Projeny.yaml”中找到。这很方便,因为这些版本将可用于您通过计算机上的Projeny创建的任何Unity项目。
现在,如果您将.unitypackage
文件复制并粘贴到此文件夹中,并单击Package Manager中的刷新按钮(通过“Projeny - >Package Manager”下的菜单在Unity中访问),那么这些.unitypackage
文件将显示在“Releases”列表中。
请注意,您可以使用不同的路径添加多个本地文件夹源,包括网络共享上的路径。
还要注意,您可以使用以下命名约定为自定义unitypackage文件指定版本:MyCustomPackage @ 1.2.unitypackage
。在这种情况下,它将加载它作为版本“1.2”。此命名约定仅对您自己创建的自定义unitypackage文件是必需的。您通过Asset Store下载的任何“unitypackage”文件都将嵌入此版本信息。
在具有自己的LAN的办公环境中工作时,通过网络共享发布源可能非常有用。您的组织可以建立组织中任何人都可以访问的“releases”的大量集合。
如果您不想为此使用网络共享,还可以定义使用URL声明的FileServer发行版源。然后,您可以运行一个静态网站,可以将Unity软件包提供给网络上的任何人。
首先,您必须托管一个静态网站,其中只包含一个.unitypackage文件的平面列表。那么你需要运行PrjUpdateReleaseManifest [directory]
与您要扫描的目录的路径(或简单的.
为当前目录).这将导致在同一目录中创建一个名为“ProjenyReleaseManifest.txt”的文件。 “PrjUpdateReleaseManifest”还包括一个命令行选项,无限期地“监视”目录,因此您只需在那里上传文件,并且清单将自动更新。
设置文件服务器后,您可以将其声明为您的Projeny.yaml之一的发行版,如下所示:
ReleaseSources: - FileServer: ManifestUrl: 'http://mysharedserver/ProjenyReleaseManifest.txt'
- Projeny
- Projeny-常见问题FAQ(五)
- 使用Projeny的优势(二)
- Projeny-YAML设置参考文档(三)
- Projeny-内置命令行参考文档(四)
- 管道
- karaf使用指令
- 彻底解决caffe及py-faster-rcnn配置中的error MSB4062问题
- java学习笔记之 java简介
- Android零基础入门第11节:简单几步带你飞,运行Android Studio工程
- Projeny
- 如何规范js代码
- Eclipse Oxygen版本的安装和汉化
- Android RecyClerView 设置间隔
- 指针与引用
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
- PAT B1064. 朋友数
- 宝岛地图 (51Nod-1572)
- 设计模式之原型模式