今天早下班,火速开写教程。首先是第一个部分,认识Unity。
其实说实话我也想不起来第一次接触游戏引擎的具体心情了,可能是面对一个充满英文的庞然大物的茫然和无措吧(虽然现在有中文翻译了但是我不推荐用,中文博大精深,可读性低,理解难度高,容易误解。甚至还看到过有人用中文编程,当时就蚌埠住了)。
虽然现在回头看都感觉学习之路都一帆风顺的样子,但是实际上自己确实也是努力过碰过壁的,所以还是希望可以帮到大家,少走弯路。
**此外呢我建议大家真的做些实际的项目体会,多重构几遍代码,实践出真知。
【什么是游戏引擎】
OK那我们开始,首先需要意识到,当下游戏开发难度大幅降低,全部得益于强大的游戏引擎的支持。配合相当高级的脚本语言,开发者实际需要考虑问题很少。
在二十年前,大概是90年代,商业化引擎没有普及的时候。各家游戏公司要么使用自己研发的内部引擎进行开发,要么就在各自硬件平台上配合相应的硬件条件,使用IDE配合图形API(DirectX或者OpenGL)以及一些其他的的诸如多媒体,物理,网络,动画的类库进行开发。并且需要面对当时羸弱的硬件水平和甚至尚未统一的硬件渲染管线。当时的程序员都有超强的节衣缩食能力,花式性能优化办法。所以我一直以来的观点都是只有深入引擎开发的程序员才配得上程序员,脚本语言程序员和软件用户基本没太大区别。而且可以预见的,后续内容生产行业工具逐步升级之后,内容构建的方法会愈加简单,之前是OGC,之后是PGC,最后是UGC,路径是十分清晰的,UE4的蓝图也给我们提供了畅想的空间。
如果把上述IDE 图形API 物理 网络 动画 多媒体等类库都比喻成改锥,冲锋钻,锤子的话。游戏引擎则是为我们提供了一个功能强大且逐步趋于完善的强大工具包。游戏引擎的出现【主要避免了重复造轮子的工作,但是保留了可以修改轮子的能力】
【什么是Unity】
Unity是优秀好用对跨平台支持友好的游戏引擎,且在11年正式进入中国市场。纵观整个发展史Unity的早期优势主要都在跨平台。后期大概在18年的时候UE补齐了跨平台的短板,并且用夸张的内建渲染和TA友好的材质编辑器扳回一城,让unity的buildin管线自愧不如并痛定思痛,一口气LWRP HDRP URP SRP一通操作勉强打了个平手。(聊到的后面都会提到,看不懂也没关系)
进入unity官网后下载UnityHub,Unity中国现在把自家服务都包在Hub里了,属实方便多了。

安装好unityhub之后,右上角【3】处登录账号,之后在设置【2】中选择许可证管理,激活新的【个人版】许可证。【5】处有些unity官方的入门教程可以看一下,【4】处plasticSCM是untiy中国在推的代码托管库,内嵌在Unity里面可以获得更佳的多人协作体验。如果你没用过诸如github等代码托管库,那不妨一试。
在账号设置完毕之后,点击【1】处进行引擎安装(选2020LTS)。unity在2018版本开始,在打包安卓的时候就已经不需要开发者手动部署安卓环境(JDK SDK NDK)了,直接在下载时勾选即可,具体软件包会随引擎一同下载。如果有在用的且顺手的IDE可以不勾选下载最新VS,否则入门的话VS还是没错的。目标平台包视情况选择,推荐选安卓和windows(IL2CPP)。此外IOS打包需要在macos上进行,因为后续还需要使用xcode进行ipa的编译。虽然在Windows上也可以进行IOS打包,但是该包转到xcode去处理的时候总会有各种问题。ios还是务必macos下构建。
恭喜你Unity已经安装好了,那么我们点击图1-1上【6】的位置旁边的【新建】按钮开始工作吧(是的我序号标错地方了,懒得改了)。
可以看到左边提供四个内建的模板和多个可以下载的模板,其中2D/3D是基于buildin管线的标准工程,其中2D/3D的唯一区别是摄像机模式是否为正交。后期可以互相转换,所以选哪个都无所谓。后面两个管线HDRP和URP是上文提到过的一些为了应对UE4的黑科技(也没有很黑),这个后面有时间会讲。选择管线之后不方便更改,此处我们使用【3D】来初始化工程。
进来之后界面是这个样子的,大概分几个关键部分:project【7】,hierarchy【6】,inspector【8】,scene【3】,Game【4】,导航栏【2】,菜单栏【1】
其中各自的作用分别为:
{project}
当前游戏工程文件夹里的所有内容。提供创建/搜索【游戏资源】的能力。
{hierarchy}
用来存放已经存在在该场景结构下的gameobject,及其树状结构。提供创建/搜索【gameobject】的能力。
{inspector}
用来展示/管理所有的【游戏资源】和【gameobject】,在 project 或 hierarchy 视图中选中内容的详细设置会展示在该面板,主要负责序列化和反序列化,且可以通过脚本自主拓展功能。
{scene}
当前在编辑的游戏的自由视角,在此处对于游戏内各元素位置进行编辑。
{Game}
游戏玩家侧看到的最终样子
{导航栏}
导航栏左侧提供的是对于scene界面物体移动相关的快捷设置,诸如世界空间/本地坐标切换,调整位置/选择/缩放切换等。
导航栏中间三个按钮分别提供【开始/暂停/下一帧】运行游戏的能力。
导航栏右侧提供账号,布局等设置。
---------------------------------好家伙打字好费劲,真的很佩服可以出书的朋友们了---------------------------
【Unity服务】
近两年unity也在逐步完善国内的一些引擎外围的服务,开发侧从真机性能优化工具,到多人服务器和托管仓库,运营侧从广告变现到数据分析一应俱全。属实是可以提供一站式服务的体验了。简单介绍几个。
UPR可以提供一站式的性能检测服务,从真机性能检测工具到定制化的测试计划,都可以轻松cover。

顺便推荐UWA,可以对比使用,都好用的。

Multiplayer是unity为中小开发者提供的多人网络解决方案。由
{
高级API(HLAPI)使网络原型的搭建变得非常简单。
低级API(LLAPI)允许您优化游戏的网络代码。
匹配服务器帮助玩家在游戏中和其他玩家一起玩耍。
中继服务器负责玩家之间的连接更加稳定、可靠,否则连接将会受到点对点(网络地址转换,防火墙等)的阻碍。
}
组成。其中最新版本中MLAPI代替了原有HLAP的位置,但是依旧缺失高级网络API。
【HelloWorld】
很好,恭喜你读完了上面的废话,不知道你现在对于Unity用户界面和相关外围服务是不是已经了解了。总之还是恭喜你进入了我最喜欢的环节,一些程序员的浪漫:和unity世界say HI。
在project视口中的Assets中右键新建C# Scripts,并双击编辑。在Start()函数中输入
Debug.Log("HelloWorld");
保存后将该脚本拖入到 hierarchy 中的任意gameobject上,点击运行按钮。你就可以在console里看到”HelloWord“。恭喜你!踏出了学习Unity的第一步。

2022.1.6 凌晨 2:42 于 上海漕河泾
文章评论