当前位置:   article > 正文

深入了解Unity项目模板(Deep Dive in Unity Project Template)_unity 2022新建项目时的模板都有什么区别

unity 2022新建项目时的模板都有什么区别

一、为什么要了解项目模板?

有这样两位同学:

  1. 萌萌同学刚接触Unity,在安装好软件后,就迫不及待打开,在创建新项目时,看到这么多项目类型,她就有点真懵了,应该选择哪一个呢??
    在这里插入图片描述
  2. 东东同学正在学习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

五、如何使用项目模板?

知道了如何选择项目模板后,如何使用就很简单了。

  1. 打开Unity Hub。
  2. 选择Unity版本(如果你安装了多个版本Unity的话)。
  3. 选择项目模板。
  4. 修改项目名称和保存位置。
  5. 如果需要使用版本控制,可以勾选“开启版本控制”。
  6. 点击“创建项目”。

六、项目模板保存在什么位置?

项目模板的保存位置有两个,分别是Unity安装目录和Unity Hub的Appdata目录。
所有模板都是和Unity版本相关的,但这两个保存位置的区别在于:前者在卸载了Unity之后,对应版本的项目模板也会被删除;但Appdata目录中的模板不会随着Unity的卸载而被删除。

  1. Unity安装目录(在Windows上)
C:\Program Files\Unity\Hub\Editor\2022.3.17f1c1\Editor\Data\Resources\PackageManager\ProjectTemplates
  • 1

在这里插入图片描述
2. Unity Hub的Appdata目录(Windows)

C:\Users\<user>\AppData\Roaming\UnityHub\Templates
  • 1

在这里插入图片描述
打开这个目录下的manifest.json,我们可以发现所有已经安装过版本的项目模板。
在这里插入图片描述
我们在Unity Hub里看到的所有项目模板都是这两个目录里加载的,首先加载Unity安装目录,然后是Appdata目录。

我们之所以需要了解项目模板的存放位置,是为了在接下来自定义模板后进行选择保存位置。

七、如何创建一个新的项目模板?

具体的步骤如下:

  1. 进入AppData中的ProjectTemplate目录,复制已有的项目模板。这里我们以“com.unity.template.urp-blank-14.0.0.tgz”为例。
  2. 使用7zip打开tgz文件,进入packages,然后编辑package.json。
  3. 修改package.json中的nickname, disPlayName, version,然后保存package.json。
  4. 进入ProjectData~文件夹,删除Assets, Packages, ProjectSettings文件夹。
  5. 将其他项目的Assets, Packages, ProjectSettings拖入ProjectData~文件夹。
  6. 关闭7zip,保存对tgz文件的修改。
  7. 打开manifest.json,在要使用的Unity版本处加入包名。格式:“包名”:“版本号”。注意包名只能是小写字母。保存manifest.json。
  8. 重启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)

九、参考资料

  1. https://www.techarthub.com/how-to-create-custom-unity-project-templates,如何创建项目模板
  2. https://foxsterdev.medium.com/how-to-template-your-unity-project-cc021231e33e,介绍了通过Github模板库保存项目
  3. https://github.com/SamuelAsherRivello/unity-project-template,Github上的示例项目模板
  4. 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 压缩文件 解压缩文件夹

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/742981
推荐阅读
相关标签
  

闽ICP备14008679号