目录
一、为什么要了解项目模板?
有这样两位同学:
- 萌萌同学刚接触Unity,在安装好软件后,就迫不及待打开,在创建新项目时,看到这么多项目类型,她就有点真懵了,应该选择哪一个呢??
- 东东同学正在学习VR开发,不过每次创建了新项目后,都需要安装一些package,并对项目设置一番才能正常工作,这些每次需要30分钟才能搞定。他就想能不能创建一个项目模板,简化这个过程呢?
既然Unity为我们提供了这些模板,做为一个长期主义者,我们不能只是会照猫画虎,每次都从零开始。那么我们一起来详细了解一下项目模板吧。
二、什么是项目模板?
【官方定义】:项目模板是基于不同类型项目的共同最佳实践而提供预选的设置。这些设置针对Unity支持的所有平台上的2D和3D项目进行了优化。
模板的概念不用太多解释,而且在其他软件中大多数也都会有各种模板,像Visual Studio, Photoshop等等。这里我们要了解的是这些模板有哪些不同。在Unity中主要是两方面,一是项目设置,二是包含的资源包(Package)。
三、为什么要使用项目模板?
模型可以加快准备初始项目、目标游戏类型或视觉保真度的过程。不同项目的模板在项目设置以及可编程渲染管理、着色器和后期处理上存在差异。
具体的差异,可以参考这位小哥的详细对比:
https://www.techarthub.com/unity-project-template-cheat-sheet
四、项目模板有哪些类型?
首先我们看一下有哪些模板。
(1)从类型上来看,可以分为核心模板(Core)、示例模板(Sample)、学习模板(Learning),核心模板是空项目,是不带示例内容的,而示例模板则包括一些示例的场景,学习模板则是一个完整的项目。
(2)从2D/3D角度 ,可以分为2D和3D项目。
(3)从渲染管线角度可以分为内置渲染管线,URP和HDRP三种。
在项目新建页面,选择右侧模板介绍里的“Read More”,可以查看模板的基本信息以及用到的Package。
首先我们看到模板也有版本号,和Unity的Package,Feature Set一样都有版本号。通过版本控制,就可以在不同版本的Unity中使用不同版本的模板和Package。
本文以Unity 2022.3.17f1c1为例,对模板进行了汇总如下。
从这些数据里,我们可以发现几点:
(1)URP 2D和HDRP项目不支持移动端和WebGL
(2)同一Package在不同的项目里的版本也不尽相同
备注:在对比了最新的Unity 6后,发现项目模板部分最大的区别在于Unity 6中的内置渲染管线和URP项目都默认包含了Input System这个包,其他包存在版本差异。
从这些对比,我们得出在哪些场合使用模板,主要还是渲染管线结合项目类型进行选择:
渲染管线 | 适用的项目模板 |
---|---|
内置渲染管线(Built-in Render Pipeline):默认渲染管线,适用于原型设计或者对画质要求不高的游戏,适用于低端设备。 | 2D(Built-in Render Pipeline)、3D(Built-in Render Pipeline)、2DMobile, 3D Mobile |
通用渲染管线(URP):对平台支持广泛,在性能上也有较好表现,适合移动端、桌面端、网页端游戏。 | Universal 2D、Universal 3D |
高清渲染管线(HDRP):适合大型3A游戏,对画面有高清渲染需求,适合桌面游戏和主机游戏项目。 | High Definition 3D |
参考:选择和配置渲染管线和光照解决方案https://docs.unity3d.com/cn/2021.1/Manual/BestPracticeLightingPipelines.html
五、如何使用项目模板?
知道了如何选择项目模板后,如何使用就很简单了。
- 打开Unity Hub。
- 选择Unity版本(如果你安装了多个版本Unity的话)。
- 选择项目模板。
- 修改项目名称和保存位置。
- 如果需要使用版本控制,可以勾选“开启版本控制”。
- 点击“创建项目”。
六、项目模板保存在什么位置?
项目模板的保存位置有两个,分别是Unity安装目录和Unity Hub的Appdata目录。
所有模板都是和Unity版本相关的,但这两个保存位置的区别在于:前者在卸载了Unity之后,对应版本的项目模板也会被删除;但Appdata目录中的模板不会随着Unity的卸载而被删除。
- Unity安装目录(在Windows上)
C:\Program Files\Unity\Hub\Editor\2022.3.17f1c1\Editor\Data\Resources\PackageManager\ProjectTemplates
2. Unity Hub的Appdata目录(Windows)
C:\Users\<user>\AppData\Roaming\UnityHub\Templates
打开这个目录下的manifest.json,我们可以发现所有已经安装过版本的项目模板。
我们在Unity Hub里看到的所有项目模板都是这两个目录里加载的,首先加载Unity安装目录,然后是Appdata目录。
我们之所以需要了解项目模板的存放位置,是为了在接下来自定义模板后进行选择保存位置。
七、如何创建一个新的项目模板?
具体的步骤如下:
- 进入AppData中的ProjectTemplate目录,复制已有的项目模板。这里我们以“com.unity.template.urp-blank-14.0.0.tgz”为例。
- 使用7zip打开tgz文件,进入packages,然后编辑package.json。
- 修改package.json中的nickname, disPlayName, version,然后保存package.json。
- 进入ProjectData~文件夹,删除Assets, Packages, ProjectSettings文件夹。
- 将其他项目的Assets, Packages, ProjectSettings拖入ProjectData~文件夹。
- 关闭7zip,保存对tgz文件的修改。
- 打开manifest.json,在要使用的Unity版本处加入包名。格式:“包名”:“版本号”。注意包名只能是小写字母。保存manifest.json。
- 重启Unity Hub,找到项目模板,修改项目名称,就可以创建新项目。
备注:这里的项目模板名称没有正确显示,但使用这个模板是可以创建成功的。
八、结论来了
虽然我们是可以使用这个模板创建出想要的项目,但步骤比较繁琐。
我们回顾一下萌萌和东东的问题是否可以通过其他方式解决呢?模板是出于反复使用才提出的,那有其他方式可以实现吗?
【方法1】 手动打包。需要手动修改项目名称。
【方法2】发布为Package,发布为一个completed project,也需要手动修改项目名称。实现步骤不赘述,可以参考:创建自定义资源包(https://docs.unity3d.com/cn/current/Manual/CustomPackages.html)
【方法3】修改为新的项目模板。手动修改package.json和assets, projectsettings里的文件。创建新项目时可以自定义名称。
【方法4】发布为Github的模板库。仍然需要手动修改项目名称。只有github支持模板库。
【方法5】手动创建项目模板,具体步骤参见上面第七部分。
【方法6】创建UVCS项目。利用Unity Cloud上的UVCS Organization创建项目。具体步骤可以参考:https://support.unity.com/hc/en-us/articles/22106509274260-Get-Started-with-Unity-Version-Control
现在我们对比一下这几种方法的优劣:
方法 | 优点 | 缺点 |
---|---|---|
1. 手动打包,进行分发 | 简单 | 没有版本控制,适合简单或一次性分发 |
2. 使用Git对项目模板进行版本控制 | 对项目进行版本控制 | 需要了解Git的使用 |
3. 使用GitHub模板库 | 将本地项目转化成GitHub模板,如果是项目基于GitHub可以考虑 | 只有GitHub支持模板库,其他版本控制不支持 |
4. 打包成资源包(Package) | 可以进行版本控制,直接在Unity里获取 | 管理Package繁琐、费时 |
5. 手动创建项目模板 | 使用方便,创建项目时可以自定义名称 | 步骤繁琐,当有版本更新时需要再操作一次;不能跨平台 |
6. 创建UVCS项目 | 可以在Unity Cloud中同步,不需要再切换环境 | 3人以上会收费($7/人/月)项目变更有可能有延迟 |
结论:通过研究对比,使用Git对项目模板进行版本控制的方法相对来说是比较方便的。
不过大家也可以结合自己的实践情况选择。
Github上已经有人在这样保存Unity模板了。这是一个示例模板,包括了项目结构、代码规范、单元测试等内容。https://github.com/SamuelAsherRivello/unity-project-template
本文中使用的软件版本:
1.Unity Hub: 3.8.0
2.Unity: 2022.3.17f1c1 (LTS)
九、参考资料
- https://www.techarthub.com/how-to-create-custom-unity-project-templates,如何创建项目模板
- https://foxsterdev.medium.com/how-to-template-your-unity-project-cc021231e33e,介绍了通过Github模板库保存项目
- https://github.com/SamuelAsherRivello/unity-project-template,Github上的示例项目模板
- https://npatsiouras.wordpress.com/2024/01/02/more-permanent-custom-project-templates-in-unity,关于项目模板的一点思考
十、附加内容
1. 在Windows上打包tar.tgz文件
(1)打开Windows终端,使用命令:tar -cvf filename.tgz 文件夹
2. Windows中打开asar文件
如果在package.json里将disPlayName写成大写字母时,就会报错。
我们可以解压缩app.asar,找到对应的js脚本查看。
但这不是根本原因,后面如果需要可以进一步研究。
如何解压缩asar可以参考:https://blog.csdn.net/weixin_41427517/article/details/119638081
(1)使用npm安装asar: npm install -g asar
(2)解压缩: asar extract 压缩文件 解压缩文件夹